Skip to content

Commit 6ea7118

Browse files
authored
Update typings for traitlets 5.10.1 (#974)
* Update typings for traitlets 5.10.1 * fixup * fixup * typing * typing * add workaround for docs * lint
1 parent 60c1095 commit 6ea7118

16 files changed

+104
-69
lines changed

docs/conf.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
1111
#
1212
# All configuration values have a default; values that are commented out
1313
# serve to show the default.
14+
import logging as pylogging
1415
import os
1516
import os.path as osp
1617
import shutil
1718

19+
from sphinx.util import logging # type:ignore[import]
20+
1821
# If extensions (or modules to document with autodoc) are in another directory,
1922
# add these directories to sys.path here. If the directory is relative to the
2023
# documentation root, use os.path.abspath to make it absolute, like shown here.
@@ -37,6 +40,16 @@
3740
"sphinx_autodoc_typehints",
3841
]
3942

43+
44+
# Workaround for https://github.com/agronholm/sphinx-autodoc-typehints/issues/123
45+
class FilterForIssue123(pylogging.Filter):
46+
def filter(self, record: pylogging.LogRecord) -> bool:
47+
return not record.getMessage().startswith("Cannot handle as a local function")
48+
49+
50+
logging.getLogger("sphinx_autodoc_typehints").logger.addFilter(FilterForIssue123())
51+
# End of a workaround
52+
4053
try:
4154
import enchant # type:ignore[import] # noqa
4255

jupyter_client/client.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,11 @@ def _context_default(self) -> zmq.Context:
115115

116116
def __del__(self):
117117
"""Handle garbage collection. Destroy context if applicable."""
118-
if self._created_context and self.context and not self.context.closed:
118+
if (
119+
self._created_context
120+
and self.context is not None # type:ignore[redundant-expr]
121+
and not self.context.closed
122+
):
119123
if self.channels_running:
120124
if self.log:
121125
self.log.warning("Could not destroy zmq context for %s", self)
@@ -349,7 +353,9 @@ def shell_channel(self) -> t.Any:
349353
url = self._make_url("shell")
350354
self.log.debug("connecting shell channel to %s", url)
351355
socket = self.connect_shell(identity=self.session.bsession)
352-
self._shell_channel = self.shell_channel_class(socket, self.session, self.ioloop)
356+
self._shell_channel = self.shell_channel_class(
357+
socket, self.session, self.ioloop
358+
) # type:ignore[operator]
353359
return self._shell_channel
354360

355361
@property
@@ -359,7 +365,9 @@ def iopub_channel(self) -> t.Any:
359365
url = self._make_url("iopub")
360366
self.log.debug("connecting iopub channel to %s", url)
361367
socket = self.connect_iopub()
362-
self._iopub_channel = self.iopub_channel_class(socket, self.session, self.ioloop)
368+
self._iopub_channel = self.iopub_channel_class(
369+
socket, self.session, self.ioloop
370+
) # type:ignore[operator]
363371
return self._iopub_channel
364372

365373
@property
@@ -369,7 +377,9 @@ def stdin_channel(self) -> t.Any:
369377
url = self._make_url("stdin")
370378
self.log.debug("connecting stdin channel to %s", url)
371379
socket = self.connect_stdin(identity=self.session.bsession)
372-
self._stdin_channel = self.stdin_channel_class(socket, self.session, self.ioloop)
380+
self._stdin_channel = self.stdin_channel_class(
381+
socket, self.session, self.ioloop
382+
) # type:ignore[operator]
373383
return self._stdin_channel
374384

375385
@property
@@ -378,7 +388,9 @@ def hb_channel(self) -> t.Any:
378388
if self._hb_channel is None:
379389
url = self._make_url("hb")
380390
self.log.debug("connecting heartbeat channel to %s", url)
381-
self._hb_channel = self.hb_channel_class(self.context, self.session, url)
391+
self._hb_channel = self.hb_channel_class(
392+
self.context, self.session, url
393+
) # type:ignore[operator]
382394
return self._hb_channel
383395

384396
@property
@@ -388,7 +400,9 @@ def control_channel(self) -> t.Any:
388400
url = self._make_url("control")
389401
self.log.debug("connecting control channel to %s", url)
390402
socket = self.connect_control(identity=self.session.bsession)
391-
self._control_channel = self.control_channel_class(socket, self.session, self.ioloop)
403+
self._control_channel = self.control_channel_class(
404+
socket, self.session, self.ioloop
405+
) # type:ignore[operator]
392406
return self._control_channel
393407

394408
async def _async_is_alive(self) -> bool:

jupyter_client/connect.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ def _data_dir_default(self):
341341
to the Kernel, so be careful!""",
342342
)
343343

344-
def _ip_default(self):
344+
def _ip_default(self) -> str:
345345
if self.transport == "ipc":
346346
if self.connection_file:
347347
return os.path.splitext(self.connection_file)[0] + "-ipc"
@@ -426,7 +426,7 @@ def get_connection_info(self, session: bool = False) -> KernelConnectionInfo:
426426
def blocking_client(self):
427427
"""Make a blocking client connected to my kernel"""
428428
info = self.get_connection_info()
429-
bc = self.blocking_class(parent=self)
429+
bc = self.blocking_class(parent=self) # type:ignore[operator]
430430
bc.load_connection_info(info)
431431
return bc
432432

@@ -540,7 +540,7 @@ def load_connection_info(self, info: KernelConnectionInfo) -> None:
540540
See the connection_file spec for details.
541541
"""
542542
self.transport = info.get("transport", self.transport)
543-
self.ip = info.get("ip", self._ip_default())
543+
self.ip = info.get("ip", self._ip_default()) # type:ignore[assignment]
544544

545545
self._record_random_port_names()
546546
for name in port_names:

jupyter_client/consoleapp.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
from . import KernelManager, connect, find_connection_file, tunnel_to_kernel
2222
from .blocking import BlockingKernelClient
23+
from .connect import KernelConnectionInfo
2324
from .kernelspec import NoSuchKernel
2425
from .localinterfaces import localhost
2526
from .restarter import KernelRestarter
@@ -234,7 +235,7 @@ def init_ssh(self) -> None:
234235
ip = localhost()
235236

236237
# build connection dict for tunnels:
237-
info = {
238+
info: KernelConnectionInfo = {
238239
"ip": ip,
239240
"shell_port": self.shell_port,
240241
"iopub_port": self.iopub_port,
@@ -293,7 +294,7 @@ def init_kernel_manager(self) -> None:
293294

294295
# Create a KernelManager and start a kernel.
295296
try:
296-
self.kernel_manager = self.kernel_manager_class(
297+
self.kernel_manager = self.kernel_manager_class( # type:ignore[operator]
297298
ip=self.ip,
298299
session=self.session,
299300
transport=self.transport,

jupyter_client/ioloop/manager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def start_restarter(self):
5656
"""Start the restarter."""
5757
if self.autorestart and self.has_kernel:
5858
if self._restarter is None:
59-
self._restarter = self.restarter_class(
59+
self._restarter = self.restarter_class( # type:ignore[operator]
6060
kernel_manager=self, loop=self.loop, parent=self, log=self.log
6161
)
6262
self._restarter.start()
@@ -99,7 +99,7 @@ def start_restarter(self):
9999
"""Start the restarter."""
100100
if self.autorestart and self.has_kernel:
101101
if self._restarter is None:
102-
self._restarter = self.restarter_class(
102+
self._restarter = self.restarter_class( # type:ignore[operator]
103103
kernel_manager=self, loop=self.loop, parent=self, log=self.log
104104
)
105105
self._restarter.start()

jupyter_client/kernelspec.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,13 @@ def _get_kernel_spec_by_name(self, kernel_name, resource_dir):
238238
pass
239239
else:
240240
if resource_dir == RESOURCES:
241-
kspec = self.kernel_spec_class(resource_dir=resource_dir, **get_kernel_dict())
241+
kspec = self.kernel_spec_class(
242+
resource_dir=resource_dir, **get_kernel_dict()
243+
) # type:ignore[operator]
242244
if not kspec:
243-
kspec = self.kernel_spec_class.from_resource_dir(resource_dir)
245+
kspec = self.kernel_spec_class.from_resource_dir( # type:ignore[attr-defined]
246+
resource_dir
247+
)
244248

245249
if not KPF.instance(parent=self.parent).is_provisioner_available(kspec):
246250
raise NoSuchKernel(kernel_name)

jupyter_client/kernelspecapp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def _kernel_name_default(self):
115115
"name": "InstallKernelSpec.kernel_name",
116116
"prefix": "InstallKernelSpec.prefix",
117117
}
118-
aliases.update(base_aliases)
118+
aliases.update(base_aliases) # type:ignore[arg-type]
119119

120120
flags = {
121121
"user": (
@@ -185,7 +185,7 @@ def _kernel_spec_manager_default(self):
185185
flags = {
186186
"f": ({"RemoveKernelSpec": {"force": True}}, force.help),
187187
}
188-
flags.update(JupyterApp.flags)
188+
flags.update(JupyterApp.flags) # type:ignore[has-type]
189189

190190
def parse_command_line(self, argv):
191191
"""Parse the command line args."""

jupyter_client/manager.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ def __init__(self, *args, **kwargs):
117117
# The PyZMQ Context to use for communication with the kernel.
118118
context: Instance = Instance(zmq.Context)
119119

120-
@default("context") # type:ignore[misc]
120+
@default("context")
121121
def _context_default(self) -> zmq.Context:
122122
self._created_context = True
123123
return zmq.Context()
@@ -128,11 +128,11 @@ def _context_default(self) -> zmq.Context:
128128
)
129129
client_factory: Type = Type(klass=KernelClient)
130130

131-
@default("client_factory") # type:ignore[misc]
131+
@default("client_factory")
132132
def _client_factory_default(self) -> Type:
133133
return import_item(self.client_class)
134134

135-
@observe("client_class") # type:ignore[misc]
135+
@observe("client_class")
136136
def _client_class_changed(self, change: t.Dict[str, DottedObjectName]) -> None:
137137
self.client_factory = import_item(str(change["new"]))
138138

@@ -145,11 +145,11 @@ def _client_class_changed(self, change: t.Dict[str, DottedObjectName]) -> None:
145145

146146
kernel_spec_manager: Instance = Instance(kernelspec.KernelSpecManager)
147147

148-
@default("kernel_spec_manager") # type:ignore[misc]
148+
@default("kernel_spec_manager")
149149
def _kernel_spec_manager_default(self) -> kernelspec.KernelSpecManager:
150150
return kernelspec.KernelSpecManager(data_dir=self.data_dir)
151151

152-
@observe("kernel_spec_manager") # type:ignore[misc]
152+
@observe("kernel_spec_manager")
153153
@observe_compat # type:ignore[misc]
154154
def _kernel_spec_manager_changed(self, change: t.Dict[str, Instance]) -> None:
155155
self._kernel_spec = None
@@ -170,7 +170,7 @@ def _kernel_spec_manager_changed(self, change: t.Dict[str, Instance]) -> None:
170170

171171
kernel_name: t.Union[str, Unicode] = Unicode(kernelspec.NATIVE_KERNEL_NAME)
172172

173-
@observe("kernel_name") # type:ignore[misc]
173+
@observe("kernel_name")
174174
def _kernel_name_changed(self, change: t.Dict[str, str]) -> None:
175175
self._kernel_spec = None
176176
if change["new"] == "python":
@@ -190,7 +190,7 @@ def kernel_spec(self) -> t.Optional[kernelspec.KernelSpec]:
190190
help="True if the MultiKernelManager should cache ports for this KernelManager instance",
191191
)
192192

193-
@default("cache_ports") # type:ignore[misc]
193+
@default("cache_ports")
194194
def _default_cache_ports(self) -> bool:
195195
return self.transport == "tcp"
196196

@@ -688,7 +688,7 @@ class AsyncKernelManager(KernelManager):
688688
# The PyZMQ Context to use for communication with the kernel.
689689
context: Instance = Instance(zmq.asyncio.Context)
690690

691-
@default("context") # type:ignore[misc]
691+
@default("context")
692692
def _context_default(self) -> zmq.asyncio.Context:
693693
self._created_context = True
694694
return zmq.asyncio.Context()

jupyter_client/multikernelmanager.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def _starting_kernels(self):
102102
"""A shim for backwards compatibility."""
103103
return self._pending_kernels
104104

105-
@default("context") # type:ignore[misc]
105+
@default("context")
106106
def _context_default(self) -> zmq.Context:
107107
self._created_context = True
108108
return zmq.Context()
@@ -602,7 +602,7 @@ class AsyncMultiKernelManager(MultiKernelManager):
602602

603603
context = Instance("zmq.asyncio.Context")
604604

605-
@default("context") # type:ignore[misc]
605+
@default("context")
606606
def _context_default(self) -> zmq.asyncio.Context:
607607
self._created_context = True
608608
return zmq.asyncio.Context()

jupyter_client/runapp.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
frontend_flags = set(frontend_flags_dict.keys())
3636

3737

38-
class RunApp(JupyterApp, JupyterConsoleApp):
38+
class RunApp(JupyterApp, JupyterConsoleApp): # type:ignore[misc]
3939
"""An Jupyter Console app to run files."""
4040

4141
version = __version__

0 commit comments

Comments
 (0)