why doesn't the _aexit_ function have a check if self._kernel is None?
brando90 opened this issue · 0 comments
brando90 commented
when the coq serapi instance is one if its fields can be None:
def __init__(self, kernel_or_cfg: Union[pycoq.kernel.LocalKernel, pycoq.common.LocalKernelConfig], logfname=None):
"""
wraps coq-serapi interface on the running kernel object
"""
self._logfname = logfname
if isinstance(kernel_or_cfg, pycoq.kernel.LocalKernel):
self._kernel = kernel_or_cfg
self._cfg = None
elif isinstance(kernel_or_cfg, pycoq.common.LocalKernelConfig):
self._kernel = None
self._cfg = kernel_or_cfg
else:
raise TypeError("CoqSerapi class must be initialized either with an existing kernel "
"object of type pycoq.kernel.LocalKernel or config object of type "
" pycoq.common.LocalKernelConfig "
f"but the supplied argument has type {type(kernel_or_cfg)}")
but a exist there is not check that we use the one is not None
async def __aexit__(self, exception_type, exception_value, traceback):
await self._kernel.__aexit__(exception_type, exception_value, traceback)
async for line in self._kernel.readlines():
self._serapi_response_history.append(line)
...
why?
also what resources is it trying to let go? @pestun