Skip to content

Commit

Permalink
Merge pull request #190 from ericpre/fix_py38_windows
Browse files Browse the repository at this point in the history
Fix for python 3.8 on windows
  • Loading branch information
ericpre authored May 27, 2020
2 parents 927a99f + 25e09ab commit a1910a0
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions hyperspyui/widgets/consolewidget.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
@author: Vidar Tonaas Fauske
"""
import sys

try:
from qtconsole.rich_jupyter_widget import RichJupyterWidget
Expand All @@ -31,11 +32,42 @@
from IPython.lib import guisupport


def _init_asyncio_patch():
"""set default asyncio policy to be compatible with tornado
Tornado 6 (at least) is not compatible with the default
asyncio implementation on Windows
Pick the older SelectorEventLoopPolicy on Windows
if the known-incompatible default policy is in use.
do this as early as possible to make it a low priority and overrideable
ref: https://github.com/tornadoweb/tornado/issues/2608
FIXME: if/when tornado supports the defaults in asyncio,
remove and bump tornado requirement for py38
"""
if sys.platform.startswith("win") and sys.version_info >= (3, 8):
import asyncio
try:
from asyncio import (
WindowsProactorEventLoopPolicy,
WindowsSelectorEventLoopPolicy,
)
except ImportError:
pass
# not affected
else:
if type(asyncio.get_event_loop_policy()) is WindowsProactorEventLoopPolicy:
# WindowsProactorEventLoopPolicy is not compatible with tornado 6
# fallback to the pre-3.8 default of Selector
asyncio.set_event_loop_policy(WindowsSelectorEventLoopPolicy())


class ConsoleWidget(RichJupyterWidget):

def __init__(self, *args, **kwargs):
super(ConsoleWidget, self).__init__(*args, **kwargs)

_init_asyncio_patch()
# Create an in-process kernel
app = guisupport.get_app_qt4()
kernel_manager = QtInProcessKernelManager()
Expand Down

0 comments on commit a1910a0

Please sign in to comment.