Rename capnp.lib.capnp.Promise to capnp.lib.capnp._Promise.
This is to prevent aliasing with capnp.includes.capnp_cpp.Promise. This aliasing is problematic if capnp/lib/capnp.pxd uses the template definition from capnp.includes.capnp_cpp.Promise. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
This commit is contained in:
@@ -51,6 +51,7 @@ from .lib.capnp import (
|
|||||||
_StructModule,
|
_StructModule,
|
||||||
_write_message_to_fd,
|
_write_message_to_fd,
|
||||||
_write_packed_message_to_fd,
|
_write_packed_message_to_fd,
|
||||||
|
_Promise as Promise,
|
||||||
)
|
)
|
||||||
|
|
||||||
add_import_hook() # enable import hook by default
|
add_import_hook() # enable import hook by default
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ cdef public VoidPromise * call_server_method(PyObject * _server, char * _method_
|
|||||||
if ret is not None:
|
if ret is not None:
|
||||||
if type(ret) is _VoidPromise:
|
if type(ret) is _VoidPromise:
|
||||||
return new VoidPromise(moveVoidPromise(deref((<_VoidPromise>ret).thisptr)))
|
return new VoidPromise(moveVoidPromise(deref((<_VoidPromise>ret).thisptr)))
|
||||||
elif type(ret) is Promise:
|
elif type(ret) is _Promise:
|
||||||
return new VoidPromise(helpers.convert_to_voidpromise(deref((<Promise>ret).thisptr)))
|
return new VoidPromise(helpers.convert_to_voidpromise(deref((<_Promise>ret).thisptr)))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
warning_msg = 'Server function (%s) returned a value that was not a Promise: return = %s' % (method_name, str(ret))
|
warning_msg = 'Server function (%s) returned a value that was not a Promise: return = %s' % (method_name, str(ret))
|
||||||
@@ -83,10 +83,10 @@ cdef public VoidPromise * call_server_method(PyObject * _server, char * _method_
|
|||||||
_warnings.warn_explicit(warning_msg, UserWarning, _inspect.getsourcefile(func), _inspect.getsourcelines(func)[1])
|
_warnings.warn_explicit(warning_msg, UserWarning, _inspect.getsourcefile(func), _inspect.getsourcelines(func)[1])
|
||||||
|
|
||||||
if ret is not None:
|
if ret is not None:
|
||||||
if type(ret) is Promise:
|
if type(ret) is _Promise:
|
||||||
return new VoidPromise(helpers.convert_to_voidpromise(deref((<Promise>ret).thisptr)))
|
return new VoidPromise(helpers.convert_to_voidpromise(deref((<_Promise>ret).thisptr)))
|
||||||
elif type(ret) is Promise:
|
elif type(ret) is _Promise:
|
||||||
return new VoidPromise(helpers.convert_to_voidpromise(deref((<Promise>ret).thisptr)))
|
return new VoidPromise(helpers.convert_to_voidpromise(deref((<_Promise>ret).thisptr)))
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
warning_msg = 'Server function (%s) returned a value that was not a Promise: return = %s' % (method_name, str(ret))
|
warning_msg = 'Server function (%s) returned a value that was not a Promise: return = %s' % (method_name, str(ret))
|
||||||
@@ -103,8 +103,8 @@ cdef public VoidPromise * call_server_method(PyObject * _server, char * _method_
|
|||||||
if ret is not None:
|
if ret is not None:
|
||||||
if type(ret) is _VoidPromise:
|
if type(ret) is _VoidPromise:
|
||||||
return new VoidPromise(moveVoidPromise(deref((<_VoidPromise>ret).thisptr)))
|
return new VoidPromise(moveVoidPromise(deref((<_VoidPromise>ret).thisptr)))
|
||||||
elif type(ret) is Promise:
|
elif type(ret) is _Promise:
|
||||||
return new VoidPromise(helpers.convert_to_voidpromise(deref((<Promise>ret).thisptr)))
|
return new VoidPromise(helpers.convert_to_voidpromise(deref((<_Promise>ret).thisptr)))
|
||||||
if not isinstance(ret, tuple):
|
if not isinstance(ret, tuple):
|
||||||
ret = (ret,)
|
ret = (ret,)
|
||||||
names = _find_field_order(context.results.schema.node.struct)
|
names = _find_field_order(context.results.schema.node.struct)
|
||||||
@@ -121,8 +121,8 @@ cdef public convert_array_pyobject(PyArray & arr) with gil:
|
|||||||
return [<object>arr[i] for i in range(arr.size())]
|
return [<object>arr[i] for i in range(arr.size())]
|
||||||
|
|
||||||
cdef public PyPromise * extract_promise(object obj) with gil:
|
cdef public PyPromise * extract_promise(object obj) with gil:
|
||||||
if type(obj) is Promise:
|
if type(obj) is _Promise:
|
||||||
promise = <Promise>obj
|
promise = <_Promise>obj
|
||||||
|
|
||||||
ret = new PyPromise(promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>promise)))
|
ret = new PyPromise(promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>promise)))
|
||||||
Py_DECREF(obj)
|
Py_DECREF(obj)
|
||||||
@@ -271,7 +271,7 @@ ctypedef fused _DynamicSetterClasses:
|
|||||||
DynamicStruct_Builder
|
DynamicStruct_Builder
|
||||||
|
|
||||||
ctypedef fused PromiseTypes:
|
ctypedef fused PromiseTypes:
|
||||||
Promise
|
_Promise
|
||||||
_RemotePromise
|
_RemotePromise
|
||||||
_VoidPromise
|
_VoidPromise
|
||||||
PromiseFulfillerPair
|
PromiseFulfillerPair
|
||||||
@@ -1766,7 +1766,7 @@ cdef class _CallContext:
|
|||||||
promise.is_consumed = True
|
promise.is_consumed = True
|
||||||
return promise
|
return promise
|
||||||
|
|
||||||
cdef class Promise:
|
cdef class _Promise:
|
||||||
cdef PyPromise * thisptr
|
cdef PyPromise * thisptr
|
||||||
cdef public bint is_consumed
|
cdef public bint is_consumed
|
||||||
cdef public object _parent, _obj
|
cdef public object _parent, _obj
|
||||||
@@ -1818,14 +1818,14 @@ cdef class Promise:
|
|||||||
if args_length - defaults_length != 1:
|
if args_length - defaults_length != 1:
|
||||||
raise KjException('Function passed to `then` call must take exactly one argument')
|
raise KjException('Function passed to `then` call must take exactly one argument')
|
||||||
|
|
||||||
cdef Promise new_promise = Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
cdef _Promise new_promise = _Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
||||||
return Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
return _Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
||||||
|
|
||||||
def attach(self, *args):
|
def attach(self, *args):
|
||||||
if self.is_consumed:
|
if self.is_consumed:
|
||||||
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
||||||
|
|
||||||
ret = Promise()._init(self.thisptr.attach(capnp.makePyRefCounter(<PyObject *>args)), self)
|
ret = _Promise()._init(self.thisptr.attach(capnp.makePyRefCounter(<PyObject *>args)), self)
|
||||||
self.is_consumed = True
|
self.is_consumed = True
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
@@ -1881,13 +1881,13 @@ cdef class _VoidPromise:
|
|||||||
if args_length - defaults_length != 0:
|
if args_length - defaults_length != 0:
|
||||||
raise KjException('Function passed to `then` call must take no arguments')
|
raise KjException('Function passed to `then` call must take no arguments')
|
||||||
|
|
||||||
cdef Promise new_promise = Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
cdef _Promise new_promise = _Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
||||||
return Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
return _Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
||||||
|
|
||||||
cpdef as_pypromise(self) except +reraise_kj_exception:
|
cpdef as_pypromise(self) except +reraise_kj_exception:
|
||||||
if self.is_consumed:
|
if self.is_consumed:
|
||||||
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
||||||
return Promise()._init(helpers.convert_to_pypromise(deref(self.thisptr)), self)
|
return _Promise()._init(helpers.convert_to_pypromise(deref(self.thisptr)), self)
|
||||||
|
|
||||||
def attach(self, *args):
|
def attach(self, *args):
|
||||||
if self.is_consumed:
|
if self.is_consumed:
|
||||||
@@ -1950,7 +1950,7 @@ cdef class _RemotePromise:
|
|||||||
cpdef as_pypromise(self) except +reraise_kj_exception:
|
cpdef as_pypromise(self) except +reraise_kj_exception:
|
||||||
if self.is_consumed:
|
if self.is_consumed:
|
||||||
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
raise KjException('Promise was already used in a consuming operation. You can no longer use this Promise object')
|
||||||
return Promise()._init(helpers.convert_to_pypromise(deref(self.thisptr)), self)
|
return _Promise()._init(helpers.convert_to_pypromise(deref(self.thisptr)), self)
|
||||||
|
|
||||||
cpdef then(self, func, error_func=None) except +reraise_kj_exception:
|
cpdef then(self, func, error_func=None) except +reraise_kj_exception:
|
||||||
if self.is_consumed:
|
if self.is_consumed:
|
||||||
@@ -1967,8 +1967,8 @@ cdef class _RemotePromise:
|
|||||||
if args_length - defaults_length != 1:
|
if args_length - defaults_length != 1:
|
||||||
raise KjException('Function passed to `then` call must take exactly one argument')
|
raise KjException('Function passed to `then` call must take exactly one argument')
|
||||||
|
|
||||||
cdef Promise new_promise = Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
cdef _Promise new_promise = _Promise()._init(helpers.then(deref(self.thisptr), <PyObject *>func, <PyObject *>error_func), self)
|
||||||
return Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
return _Promise()._init(new_promise.thisptr.attach(capnp.makePyRefCounter(<PyObject *>func), capnp.makePyRefCounter(<PyObject *>error_func)), new_promise)
|
||||||
|
|
||||||
cpdef _get(self, field) except +reraise_kj_exception:
|
cpdef _get(self, field) except +reraise_kj_exception:
|
||||||
cdef int type = (<C_DynamicValue.Pipeline>self.thisptr.get(field)).getType()
|
cdef int type = (<C_DynamicValue.Pipeline>self.thisptr.get(field)).getType()
|
||||||
@@ -2023,17 +2023,17 @@ cpdef join_promises(promises) except +reraise_kj_exception:
|
|||||||
|
|
||||||
for promise in promises:
|
for promise in promises:
|
||||||
promise_type = type(promise)
|
promise_type = type(promise)
|
||||||
if promise_type is Promise:
|
if promise_type is _Promise:
|
||||||
pyPromise = <Promise>promise
|
pyPromise = <_Promise>promise
|
||||||
elif promise_type is _RemotePromise or promise_type is _VoidPromise:
|
elif promise_type is _RemotePromise or promise_type is _VoidPromise:
|
||||||
pyPromise = <Promise>promise.as_pypromise()
|
pyPromise = <_Promise>promise.as_pypromise()
|
||||||
new_promises_append(pyPromise)
|
new_promises_append(pyPromise)
|
||||||
else:
|
else:
|
||||||
raise KjException('One of the promises passed to `join_promises` had a non promise value of: ' + str(promise))
|
raise KjException('One of the promises passed to `join_promises` had a non promise value of: ' + str(promise))
|
||||||
heap.add(movePromise(deref(pyPromise.thisptr)))
|
heap.add(movePromise(deref(pyPromise.thisptr)))
|
||||||
pyPromise.is_consumed = True
|
pyPromise.is_consumed = True
|
||||||
|
|
||||||
return Promise()._init(helpers.then(capnp.joinPromises(heap.finish())))
|
return _Promise()._init(helpers.then(capnp.joinPromises(heap.finish())))
|
||||||
|
|
||||||
cdef class _Request(_DynamicStructBuilder):
|
cdef class _Request(_DynamicStructBuilder):
|
||||||
cdef Request * thisptr_child
|
cdef Request * thisptr_child
|
||||||
@@ -2390,7 +2390,7 @@ cdef class TwoPartyServer:
|
|||||||
self._bootstrap = bootstrap
|
self._bootstrap = bootstrap
|
||||||
Py_INCREF(self._bootstrap)
|
Py_INCREF(self._bootstrap)
|
||||||
schema = bootstrap.schema
|
schema = bootstrap.schema
|
||||||
self.port_promise = Promise()._init(helpers.connectServer(deref(self._task_set), helpers.server_to_client(schema.thisptr, <PyObject *>bootstrap), loop.thisptr, temp_string, opts))
|
self.port_promise = _Promise()._init(helpers.connectServer(deref(self._task_set), helpers.server_to_client(schema.thisptr, <PyObject *>bootstrap), loop.thisptr, temp_string, opts))
|
||||||
|
|
||||||
def _decref(self):
|
def _decref(self):
|
||||||
Py_DECREF(self._bootstrap)
|
Py_DECREF(self._bootstrap)
|
||||||
|
|||||||
Reference in New Issue
Block a user