12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490 |
- /*[clinic input]
- preserve
- [clinic start generated code]*/
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # include "pycore_gc.h" // PyGC_Head
- # include "pycore_runtime.h" // _Py_ID()
- #endif
- PyDoc_STRVAR(_asyncio_Future___init____doc__,
- "Future(*, loop=None)\n"
- "--\n"
- "\n"
- "This class is *almost* compatible with concurrent.futures.Future.\n"
- "\n"
- " Differences:\n"
- "\n"
- " - result() and exception() do not take a timeout argument and\n"
- " raise an exception when the future isn\'t done yet.\n"
- "\n"
- " - Callbacks registered with add_done_callback() are always called\n"
- " via the event loop\'s call_soon_threadsafe().\n"
- "\n"
- " - This class is not compatible with the wait() and as_completed()\n"
- " methods in the concurrent.futures package.");
- static int
- _asyncio_Future___init___impl(FutureObj *self, PyObject *loop);
- static int
- _asyncio_Future___init__(PyObject *self, PyObject *args, PyObject *kwargs)
- {
- int return_value = -1;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(loop), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"loop", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "Future",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject * const *fastargs;
- Py_ssize_t nargs = PyTuple_GET_SIZE(args);
- Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0;
- PyObject *loop = Py_None;
- fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 0, 0, argsbuf);
- if (!fastargs) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_kwonly;
- }
- loop = fastargs[0];
- skip_optional_kwonly:
- return_value = _asyncio_Future___init___impl((FutureObj *)self, loop);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_result__doc__,
- "result($self, /)\n"
- "--\n"
- "\n"
- "Return the result this future represents.\n"
- "\n"
- "If the future has been cancelled, raises CancelledError. If the\n"
- "future\'s result isn\'t yet available, raises InvalidStateError. If\n"
- "the future is done and has an exception set, this exception is raised.");
- #define _ASYNCIO_FUTURE_RESULT_METHODDEF \
- {"result", (PyCFunction)_asyncio_Future_result, METH_NOARGS, _asyncio_Future_result__doc__},
- static PyObject *
- _asyncio_Future_result_impl(FutureObj *self);
- static PyObject *
- _asyncio_Future_result(FutureObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Future_result_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Future_exception__doc__,
- "exception($self, /)\n"
- "--\n"
- "\n"
- "Return the exception that was set on this future.\n"
- "\n"
- "The exception (or None if no exception was set) is returned only if\n"
- "the future is done. If the future has been cancelled, raises\n"
- "CancelledError. If the future isn\'t done yet, raises\n"
- "InvalidStateError.");
- #define _ASYNCIO_FUTURE_EXCEPTION_METHODDEF \
- {"exception", _PyCFunction_CAST(_asyncio_Future_exception), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_exception__doc__},
- static PyObject *
- _asyncio_Future_exception_impl(FutureObj *self, PyTypeObject *cls);
- static PyObject *
- _asyncio_Future_exception(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) {
- PyErr_SetString(PyExc_TypeError, "exception() takes no arguments");
- return NULL;
- }
- return _asyncio_Future_exception_impl(self, cls);
- }
- PyDoc_STRVAR(_asyncio_Future_set_result__doc__,
- "set_result($self, result, /)\n"
- "--\n"
- "\n"
- "Mark the future done and set its result.\n"
- "\n"
- "If the future is already done when this method is called, raises\n"
- "InvalidStateError.");
- #define _ASYNCIO_FUTURE_SET_RESULT_METHODDEF \
- {"set_result", _PyCFunction_CAST(_asyncio_Future_set_result), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_set_result__doc__},
- static PyObject *
- _asyncio_Future_set_result_impl(FutureObj *self, PyTypeObject *cls,
- PyObject *result);
- static PyObject *
- _asyncio_Future_set_result(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
- #else
- # define KWTUPLE NULL
- #endif
- static const char * const _keywords[] = {"", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "set_result",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *result;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- result = args[0];
- return_value = _asyncio_Future_set_result_impl(self, cls, result);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_set_exception__doc__,
- "set_exception($self, exception, /)\n"
- "--\n"
- "\n"
- "Mark the future done and set an exception.\n"
- "\n"
- "If the future is already done when this method is called, raises\n"
- "InvalidStateError.");
- #define _ASYNCIO_FUTURE_SET_EXCEPTION_METHODDEF \
- {"set_exception", _PyCFunction_CAST(_asyncio_Future_set_exception), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_set_exception__doc__},
- static PyObject *
- _asyncio_Future_set_exception_impl(FutureObj *self, PyTypeObject *cls,
- PyObject *exception);
- static PyObject *
- _asyncio_Future_set_exception(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
- #else
- # define KWTUPLE NULL
- #endif
- static const char * const _keywords[] = {"", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "set_exception",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *exception;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- exception = args[0];
- return_value = _asyncio_Future_set_exception_impl(self, cls, exception);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_add_done_callback__doc__,
- "add_done_callback($self, fn, /, *, context=<unrepresentable>)\n"
- "--\n"
- "\n"
- "Add a callback to be run when the future becomes done.\n"
- "\n"
- "The callback is called with a single argument - the future object. If\n"
- "the future is already done when this is called, the callback is\n"
- "scheduled with call_soon.");
- #define _ASYNCIO_FUTURE_ADD_DONE_CALLBACK_METHODDEF \
- {"add_done_callback", _PyCFunction_CAST(_asyncio_Future_add_done_callback), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_add_done_callback__doc__},
- static PyObject *
- _asyncio_Future_add_done_callback_impl(FutureObj *self, PyTypeObject *cls,
- PyObject *fn, PyObject *context);
- static PyObject *
- _asyncio_Future_add_done_callback(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(context), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"", "context", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "add_done_callback",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
- PyObject *fn;
- PyObject *context = NULL;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- fn = args[0];
- if (!noptargs) {
- goto skip_optional_kwonly;
- }
- context = args[1];
- skip_optional_kwonly:
- return_value = _asyncio_Future_add_done_callback_impl(self, cls, fn, context);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_remove_done_callback__doc__,
- "remove_done_callback($self, fn, /)\n"
- "--\n"
- "\n"
- "Remove all instances of a callback from the \"call when done\" list.\n"
- "\n"
- "Returns the number of callbacks removed.");
- #define _ASYNCIO_FUTURE_REMOVE_DONE_CALLBACK_METHODDEF \
- {"remove_done_callback", _PyCFunction_CAST(_asyncio_Future_remove_done_callback), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_remove_done_callback__doc__},
- static PyObject *
- _asyncio_Future_remove_done_callback_impl(FutureObj *self, PyTypeObject *cls,
- PyObject *fn);
- static PyObject *
- _asyncio_Future_remove_done_callback(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty)
- #else
- # define KWTUPLE NULL
- #endif
- static const char * const _keywords[] = {"", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "remove_done_callback",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *fn;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- fn = args[0];
- return_value = _asyncio_Future_remove_done_callback_impl(self, cls, fn);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_cancel__doc__,
- "cancel($self, /, msg=None)\n"
- "--\n"
- "\n"
- "Cancel the future and schedule callbacks.\n"
- "\n"
- "If the future is already done or cancelled, return False. Otherwise,\n"
- "change the future\'s state to cancelled, schedule the callbacks and\n"
- "return True.");
- #define _ASYNCIO_FUTURE_CANCEL_METHODDEF \
- {"cancel", _PyCFunction_CAST(_asyncio_Future_cancel), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_cancel__doc__},
- static PyObject *
- _asyncio_Future_cancel_impl(FutureObj *self, PyTypeObject *cls,
- PyObject *msg);
- static PyObject *
- _asyncio_Future_cancel(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(msg), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"msg", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "cancel",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- PyObject *msg = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- msg = args[0];
- skip_optional_pos:
- return_value = _asyncio_Future_cancel_impl(self, cls, msg);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Future_cancelled__doc__,
- "cancelled($self, /)\n"
- "--\n"
- "\n"
- "Return True if the future was cancelled.");
- #define _ASYNCIO_FUTURE_CANCELLED_METHODDEF \
- {"cancelled", (PyCFunction)_asyncio_Future_cancelled, METH_NOARGS, _asyncio_Future_cancelled__doc__},
- static PyObject *
- _asyncio_Future_cancelled_impl(FutureObj *self);
- static PyObject *
- _asyncio_Future_cancelled(FutureObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Future_cancelled_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Future_done__doc__,
- "done($self, /)\n"
- "--\n"
- "\n"
- "Return True if the future is done.\n"
- "\n"
- "Done means either that a result / exception are available, or that the\n"
- "future was cancelled.");
- #define _ASYNCIO_FUTURE_DONE_METHODDEF \
- {"done", (PyCFunction)_asyncio_Future_done, METH_NOARGS, _asyncio_Future_done__doc__},
- static PyObject *
- _asyncio_Future_done_impl(FutureObj *self);
- static PyObject *
- _asyncio_Future_done(FutureObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Future_done_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Future_get_loop__doc__,
- "get_loop($self, /)\n"
- "--\n"
- "\n"
- "Return the event loop the Future is bound to.");
- #define _ASYNCIO_FUTURE_GET_LOOP_METHODDEF \
- {"get_loop", _PyCFunction_CAST(_asyncio_Future_get_loop), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Future_get_loop__doc__},
- static PyObject *
- _asyncio_Future_get_loop_impl(FutureObj *self, PyTypeObject *cls);
- static PyObject *
- _asyncio_Future_get_loop(FutureObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) {
- PyErr_SetString(PyExc_TypeError, "get_loop() takes no arguments");
- return NULL;
- }
- return _asyncio_Future_get_loop_impl(self, cls);
- }
- PyDoc_STRVAR(_asyncio_Future__make_cancelled_error__doc__,
- "_make_cancelled_error($self, /)\n"
- "--\n"
- "\n"
- "Create the CancelledError to raise if the Future is cancelled.\n"
- "\n"
- "This should only be called once when handling a cancellation since\n"
- "it erases the context exception value.");
- #define _ASYNCIO_FUTURE__MAKE_CANCELLED_ERROR_METHODDEF \
- {"_make_cancelled_error", (PyCFunction)_asyncio_Future__make_cancelled_error, METH_NOARGS, _asyncio_Future__make_cancelled_error__doc__},
- static PyObject *
- _asyncio_Future__make_cancelled_error_impl(FutureObj *self);
- static PyObject *
- _asyncio_Future__make_cancelled_error(FutureObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Future__make_cancelled_error_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task___init____doc__,
- "Task(coro, *, loop=None, name=None, context=None, eager_start=False)\n"
- "--\n"
- "\n"
- "A coroutine wrapped in a Future.");
- static int
- _asyncio_Task___init___impl(TaskObj *self, PyObject *coro, PyObject *loop,
- PyObject *name, PyObject *context,
- int eager_start);
- static int
- _asyncio_Task___init__(PyObject *self, PyObject *args, PyObject *kwargs)
- {
- int return_value = -1;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 5
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(coro), &_Py_ID(loop), &_Py_ID(name), &_Py_ID(context), &_Py_ID(eager_start), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"coro", "loop", "name", "context", "eager_start", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "Task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[5];
- PyObject * const *fastargs;
- Py_ssize_t nargs = PyTuple_GET_SIZE(args);
- Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 1;
- PyObject *coro;
- PyObject *loop = Py_None;
- PyObject *name = Py_None;
- PyObject *context = Py_None;
- int eager_start = 0;
- fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 1, 1, 0, argsbuf);
- if (!fastargs) {
- goto exit;
- }
- coro = fastargs[0];
- if (!noptargs) {
- goto skip_optional_kwonly;
- }
- if (fastargs[1]) {
- loop = fastargs[1];
- if (!--noptargs) {
- goto skip_optional_kwonly;
- }
- }
- if (fastargs[2]) {
- name = fastargs[2];
- if (!--noptargs) {
- goto skip_optional_kwonly;
- }
- }
- if (fastargs[3]) {
- context = fastargs[3];
- if (!--noptargs) {
- goto skip_optional_kwonly;
- }
- }
- eager_start = PyObject_IsTrue(fastargs[4]);
- if (eager_start < 0) {
- goto exit;
- }
- skip_optional_kwonly:
- return_value = _asyncio_Task___init___impl((TaskObj *)self, coro, loop, name, context, eager_start);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Task__make_cancelled_error__doc__,
- "_make_cancelled_error($self, /)\n"
- "--\n"
- "\n"
- "Create the CancelledError to raise if the Task is cancelled.\n"
- "\n"
- "This should only be called once when handling a cancellation since\n"
- "it erases the context exception value.");
- #define _ASYNCIO_TASK__MAKE_CANCELLED_ERROR_METHODDEF \
- {"_make_cancelled_error", (PyCFunction)_asyncio_Task__make_cancelled_error, METH_NOARGS, _asyncio_Task__make_cancelled_error__doc__},
- static PyObject *
- _asyncio_Task__make_cancelled_error_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task__make_cancelled_error(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task__make_cancelled_error_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_cancel__doc__,
- "cancel($self, /, msg=None)\n"
- "--\n"
- "\n"
- "Request that this task cancel itself.\n"
- "\n"
- "This arranges for a CancelledError to be thrown into the\n"
- "wrapped coroutine on the next cycle through the event loop.\n"
- "The coroutine then has a chance to clean up or even deny\n"
- "the request using try/except/finally.\n"
- "\n"
- "Unlike Future.cancel, this does not guarantee that the\n"
- "task will be cancelled: the exception might be caught and\n"
- "acted upon, delaying cancellation of the task or preventing\n"
- "cancellation completely. The task may also return a value or\n"
- "raise a different exception.\n"
- "\n"
- "Immediately after this method is called, Task.cancelled() will\n"
- "not return True (unless the task was already cancelled). A\n"
- "task will be marked as cancelled when the wrapped coroutine\n"
- "terminates with a CancelledError exception (even if cancel()\n"
- "was not called).\n"
- "\n"
- "This also increases the task\'s count of cancellation requests.");
- #define _ASYNCIO_TASK_CANCEL_METHODDEF \
- {"cancel", _PyCFunction_CAST(_asyncio_Task_cancel), METH_FASTCALL|METH_KEYWORDS, _asyncio_Task_cancel__doc__},
- static PyObject *
- _asyncio_Task_cancel_impl(TaskObj *self, PyObject *msg);
- static PyObject *
- _asyncio_Task_cancel(TaskObj *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(msg), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"msg", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "cancel",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- PyObject *msg = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- msg = args[0];
- skip_optional_pos:
- return_value = _asyncio_Task_cancel_impl(self, msg);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Task_cancelling__doc__,
- "cancelling($self, /)\n"
- "--\n"
- "\n"
- "Return the count of the task\'s cancellation requests.\n"
- "\n"
- "This count is incremented when .cancel() is called\n"
- "and may be decremented using .uncancel().");
- #define _ASYNCIO_TASK_CANCELLING_METHODDEF \
- {"cancelling", (PyCFunction)_asyncio_Task_cancelling, METH_NOARGS, _asyncio_Task_cancelling__doc__},
- static PyObject *
- _asyncio_Task_cancelling_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task_cancelling(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task_cancelling_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_uncancel__doc__,
- "uncancel($self, /)\n"
- "--\n"
- "\n"
- "Decrement the task\'s count of cancellation requests.\n"
- "\n"
- "This should be used by tasks that catch CancelledError\n"
- "and wish to continue indefinitely until they are cancelled again.\n"
- "\n"
- "Returns the remaining number of cancellation requests.");
- #define _ASYNCIO_TASK_UNCANCEL_METHODDEF \
- {"uncancel", (PyCFunction)_asyncio_Task_uncancel, METH_NOARGS, _asyncio_Task_uncancel__doc__},
- static PyObject *
- _asyncio_Task_uncancel_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task_uncancel(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task_uncancel_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_get_stack__doc__,
- "get_stack($self, /, *, limit=None)\n"
- "--\n"
- "\n"
- "Return the list of stack frames for this task\'s coroutine.\n"
- "\n"
- "If the coroutine is not done, this returns the stack where it is\n"
- "suspended. If the coroutine has completed successfully or was\n"
- "cancelled, this returns an empty list. If the coroutine was\n"
- "terminated by an exception, this returns the list of traceback\n"
- "frames.\n"
- "\n"
- "The frames are always ordered from oldest to newest.\n"
- "\n"
- "The optional limit gives the maximum number of frames to\n"
- "return; by default all available frames are returned. Its\n"
- "meaning differs depending on whether a stack or a traceback is\n"
- "returned: the newest frames of a stack are returned, but the\n"
- "oldest frames of a traceback are returned. (This matches the\n"
- "behavior of the traceback module.)\n"
- "\n"
- "For reasons beyond our control, only one stack frame is\n"
- "returned for a suspended coroutine.");
- #define _ASYNCIO_TASK_GET_STACK_METHODDEF \
- {"get_stack", _PyCFunction_CAST(_asyncio_Task_get_stack), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Task_get_stack__doc__},
- static PyObject *
- _asyncio_Task_get_stack_impl(TaskObj *self, PyTypeObject *cls,
- PyObject *limit);
- static PyObject *
- _asyncio_Task_get_stack(TaskObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(limit), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"limit", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "get_stack",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- PyObject *limit = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_kwonly;
- }
- limit = args[0];
- skip_optional_kwonly:
- return_value = _asyncio_Task_get_stack_impl(self, cls, limit);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Task_print_stack__doc__,
- "print_stack($self, /, *, limit=None, file=None)\n"
- "--\n"
- "\n"
- "Print the stack or traceback for this task\'s coroutine.\n"
- "\n"
- "This produces output similar to that of the traceback module,\n"
- "for the frames retrieved by get_stack(). The limit argument\n"
- "is passed to get_stack(). The file argument is an I/O stream\n"
- "to which the output is written; by default output is written\n"
- "to sys.stderr.");
- #define _ASYNCIO_TASK_PRINT_STACK_METHODDEF \
- {"print_stack", _PyCFunction_CAST(_asyncio_Task_print_stack), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _asyncio_Task_print_stack__doc__},
- static PyObject *
- _asyncio_Task_print_stack_impl(TaskObj *self, PyTypeObject *cls,
- PyObject *limit, PyObject *file);
- static PyObject *
- _asyncio_Task_print_stack(TaskObj *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(limit), &_Py_ID(file), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"limit", "file", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "print_stack",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- PyObject *limit = Py_None;
- PyObject *file = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_kwonly;
- }
- if (args[0]) {
- limit = args[0];
- if (!--noptargs) {
- goto skip_optional_kwonly;
- }
- }
- file = args[1];
- skip_optional_kwonly:
- return_value = _asyncio_Task_print_stack_impl(self, cls, limit, file);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_Task_set_result__doc__,
- "set_result($self, result, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_SET_RESULT_METHODDEF \
- {"set_result", (PyCFunction)_asyncio_Task_set_result, METH_O, _asyncio_Task_set_result__doc__},
- PyDoc_STRVAR(_asyncio_Task_set_exception__doc__,
- "set_exception($self, exception, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_SET_EXCEPTION_METHODDEF \
- {"set_exception", (PyCFunction)_asyncio_Task_set_exception, METH_O, _asyncio_Task_set_exception__doc__},
- PyDoc_STRVAR(_asyncio_Task_get_coro__doc__,
- "get_coro($self, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_GET_CORO_METHODDEF \
- {"get_coro", (PyCFunction)_asyncio_Task_get_coro, METH_NOARGS, _asyncio_Task_get_coro__doc__},
- static PyObject *
- _asyncio_Task_get_coro_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task_get_coro(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task_get_coro_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_get_context__doc__,
- "get_context($self, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_GET_CONTEXT_METHODDEF \
- {"get_context", (PyCFunction)_asyncio_Task_get_context, METH_NOARGS, _asyncio_Task_get_context__doc__},
- static PyObject *
- _asyncio_Task_get_context_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task_get_context(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task_get_context_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_get_name__doc__,
- "get_name($self, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_GET_NAME_METHODDEF \
- {"get_name", (PyCFunction)_asyncio_Task_get_name, METH_NOARGS, _asyncio_Task_get_name__doc__},
- static PyObject *
- _asyncio_Task_get_name_impl(TaskObj *self);
- static PyObject *
- _asyncio_Task_get_name(TaskObj *self, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_Task_get_name_impl(self);
- }
- PyDoc_STRVAR(_asyncio_Task_set_name__doc__,
- "set_name($self, value, /)\n"
- "--\n"
- "\n");
- #define _ASYNCIO_TASK_SET_NAME_METHODDEF \
- {"set_name", (PyCFunction)_asyncio_Task_set_name, METH_O, _asyncio_Task_set_name__doc__},
- PyDoc_STRVAR(_asyncio__get_running_loop__doc__,
- "_get_running_loop($module, /)\n"
- "--\n"
- "\n"
- "Return the running event loop or None.\n"
- "\n"
- "This is a low-level function intended to be used by event loops.\n"
- "This function is thread-specific.");
- #define _ASYNCIO__GET_RUNNING_LOOP_METHODDEF \
- {"_get_running_loop", (PyCFunction)_asyncio__get_running_loop, METH_NOARGS, _asyncio__get_running_loop__doc__},
- static PyObject *
- _asyncio__get_running_loop_impl(PyObject *module);
- static PyObject *
- _asyncio__get_running_loop(PyObject *module, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio__get_running_loop_impl(module);
- }
- PyDoc_STRVAR(_asyncio__set_running_loop__doc__,
- "_set_running_loop($module, loop, /)\n"
- "--\n"
- "\n"
- "Set the running event loop.\n"
- "\n"
- "This is a low-level function intended to be used by event loops.\n"
- "This function is thread-specific.");
- #define _ASYNCIO__SET_RUNNING_LOOP_METHODDEF \
- {"_set_running_loop", (PyCFunction)_asyncio__set_running_loop, METH_O, _asyncio__set_running_loop__doc__},
- PyDoc_STRVAR(_asyncio_get_event_loop__doc__,
- "get_event_loop($module, /)\n"
- "--\n"
- "\n"
- "Return an asyncio event loop.\n"
- "\n"
- "When called from a coroutine or a callback (e.g. scheduled with\n"
- "call_soon or similar API), this function will always return the\n"
- "running event loop.\n"
- "\n"
- "If there is no running event loop set, the function will return\n"
- "the result of `get_event_loop_policy().get_event_loop()` call.");
- #define _ASYNCIO_GET_EVENT_LOOP_METHODDEF \
- {"get_event_loop", (PyCFunction)_asyncio_get_event_loop, METH_NOARGS, _asyncio_get_event_loop__doc__},
- static PyObject *
- _asyncio_get_event_loop_impl(PyObject *module);
- static PyObject *
- _asyncio_get_event_loop(PyObject *module, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_get_event_loop_impl(module);
- }
- PyDoc_STRVAR(_asyncio_get_running_loop__doc__,
- "get_running_loop($module, /)\n"
- "--\n"
- "\n"
- "Return the running event loop. Raise a RuntimeError if there is none.\n"
- "\n"
- "This function is thread-specific.");
- #define _ASYNCIO_GET_RUNNING_LOOP_METHODDEF \
- {"get_running_loop", (PyCFunction)_asyncio_get_running_loop, METH_NOARGS, _asyncio_get_running_loop__doc__},
- static PyObject *
- _asyncio_get_running_loop_impl(PyObject *module);
- static PyObject *
- _asyncio_get_running_loop(PyObject *module, PyObject *Py_UNUSED(ignored))
- {
- return _asyncio_get_running_loop_impl(module);
- }
- PyDoc_STRVAR(_asyncio__register_task__doc__,
- "_register_task($module, /, task)\n"
- "--\n"
- "\n"
- "Register a new task in asyncio as executed by loop.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__REGISTER_TASK_METHODDEF \
- {"_register_task", _PyCFunction_CAST(_asyncio__register_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__register_task__doc__},
- static PyObject *
- _asyncio__register_task_impl(PyObject *module, PyObject *task);
- static PyObject *
- _asyncio__register_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_register_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- task = args[0];
- return_value = _asyncio__register_task_impl(module, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__register_eager_task__doc__,
- "_register_eager_task($module, /, task)\n"
- "--\n"
- "\n"
- "Register a new task in asyncio as executed by loop.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__REGISTER_EAGER_TASK_METHODDEF \
- {"_register_eager_task", _PyCFunction_CAST(_asyncio__register_eager_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__register_eager_task__doc__},
- static PyObject *
- _asyncio__register_eager_task_impl(PyObject *module, PyObject *task);
- static PyObject *
- _asyncio__register_eager_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_register_eager_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- task = args[0];
- return_value = _asyncio__register_eager_task_impl(module, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__unregister_task__doc__,
- "_unregister_task($module, /, task)\n"
- "--\n"
- "\n"
- "Unregister a task.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__UNREGISTER_TASK_METHODDEF \
- {"_unregister_task", _PyCFunction_CAST(_asyncio__unregister_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__unregister_task__doc__},
- static PyObject *
- _asyncio__unregister_task_impl(PyObject *module, PyObject *task);
- static PyObject *
- _asyncio__unregister_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_unregister_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- task = args[0];
- return_value = _asyncio__unregister_task_impl(module, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__unregister_eager_task__doc__,
- "_unregister_eager_task($module, /, task)\n"
- "--\n"
- "\n"
- "Unregister a task.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__UNREGISTER_EAGER_TASK_METHODDEF \
- {"_unregister_eager_task", _PyCFunction_CAST(_asyncio__unregister_eager_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__unregister_eager_task__doc__},
- static PyObject *
- _asyncio__unregister_eager_task_impl(PyObject *module, PyObject *task);
- static PyObject *
- _asyncio__unregister_eager_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_unregister_eager_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- task = args[0];
- return_value = _asyncio__unregister_eager_task_impl(module, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__enter_task__doc__,
- "_enter_task($module, /, loop, task)\n"
- "--\n"
- "\n"
- "Enter into task execution or resume suspended task.\n"
- "\n"
- "Task belongs to loop.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__ENTER_TASK_METHODDEF \
- {"_enter_task", _PyCFunction_CAST(_asyncio__enter_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__enter_task__doc__},
- static PyObject *
- _asyncio__enter_task_impl(PyObject *module, PyObject *loop, PyObject *task);
- static PyObject *
- _asyncio__enter_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(loop), &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"loop", "task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_enter_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- PyObject *loop;
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- loop = args[0];
- task = args[1];
- return_value = _asyncio__enter_task_impl(module, loop, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__leave_task__doc__,
- "_leave_task($module, /, loop, task)\n"
- "--\n"
- "\n"
- "Leave task execution or suspend a task.\n"
- "\n"
- "Task belongs to loop.\n"
- "\n"
- "Returns None.");
- #define _ASYNCIO__LEAVE_TASK_METHODDEF \
- {"_leave_task", _PyCFunction_CAST(_asyncio__leave_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__leave_task__doc__},
- static PyObject *
- _asyncio__leave_task_impl(PyObject *module, PyObject *loop, PyObject *task);
- static PyObject *
- _asyncio__leave_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(loop), &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"loop", "task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_leave_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- PyObject *loop;
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- loop = args[0];
- task = args[1];
- return_value = _asyncio__leave_task_impl(module, loop, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio__swap_current_task__doc__,
- "_swap_current_task($module, /, loop, task)\n"
- "--\n"
- "\n"
- "Temporarily swap in the supplied task and return the original one (or None).\n"
- "\n"
- "This is intended for use during eager coroutine execution.");
- #define _ASYNCIO__SWAP_CURRENT_TASK_METHODDEF \
- {"_swap_current_task", _PyCFunction_CAST(_asyncio__swap_current_task), METH_FASTCALL|METH_KEYWORDS, _asyncio__swap_current_task__doc__},
- static PyObject *
- _asyncio__swap_current_task_impl(PyObject *module, PyObject *loop,
- PyObject *task);
- static PyObject *
- _asyncio__swap_current_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 2
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(loop), &_Py_ID(task), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"loop", "task", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "_swap_current_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[2];
- PyObject *loop;
- PyObject *task;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- loop = args[0];
- task = args[1];
- return_value = _asyncio__swap_current_task_impl(module, loop, task);
- exit:
- return return_value;
- }
- PyDoc_STRVAR(_asyncio_current_task__doc__,
- "current_task($module, /, loop=None)\n"
- "--\n"
- "\n"
- "Return a currently executed task.");
- #define _ASYNCIO_CURRENT_TASK_METHODDEF \
- {"current_task", _PyCFunction_CAST(_asyncio_current_task), METH_FASTCALL|METH_KEYWORDS, _asyncio_current_task__doc__},
- static PyObject *
- _asyncio_current_task_impl(PyObject *module, PyObject *loop);
- static PyObject *
- _asyncio_current_task(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
- {
- PyObject *return_value = NULL;
- #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
- #define NUM_KEYWORDS 1
- static struct {
- PyGC_Head _this_is_not_used;
- PyObject_VAR_HEAD
- PyObject *ob_item[NUM_KEYWORDS];
- } _kwtuple = {
- .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS)
- .ob_item = { &_Py_ID(loop), },
- };
- #undef NUM_KEYWORDS
- #define KWTUPLE (&_kwtuple.ob_base.ob_base)
- #else // !Py_BUILD_CORE
- # define KWTUPLE NULL
- #endif // !Py_BUILD_CORE
- static const char * const _keywords[] = {"loop", NULL};
- static _PyArg_Parser _parser = {
- .keywords = _keywords,
- .fname = "current_task",
- .kwtuple = KWTUPLE,
- };
- #undef KWTUPLE
- PyObject *argsbuf[1];
- Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
- PyObject *loop = Py_None;
- args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
- if (!args) {
- goto exit;
- }
- if (!noptargs) {
- goto skip_optional_pos;
- }
- loop = args[0];
- skip_optional_pos:
- return_value = _asyncio_current_task_impl(module, loop);
- exit:
- return return_value;
- }
- /*[clinic end generated code: output=127ba6153250d769 input=a9049054013a1b77]*/
|