spyder-ide / spyder

Official repository for Spyder - The Scientific Python Development Environment
https://www.spyder-ide.org
MIT License
8.31k stars 1.61k forks source link

Buggy Menubar Behavior on macOS #14917

Closed mrclary closed 3 years ago

mrclary commented 3 years ago

What steps will reproduce the problem?

Upon first launching Spyder (bootstrap), the menubar is disabled. Switching to another application and back to Spyder seems to enable the menubar.

Additionally, some menu items are located incorrectly and have incorrect keyboard shortcuts, such as "Preferences..." and "About Spyder...". After the first activation of these dialogue windows (or any other Spyder window), however, they return to their correct locations with correct keyboard shortcuts.

menubar


# Mandatory:
applaunchservices >=0.1.7   :  0.2.1 (OK)
atomicwrites >=1.2.0        :  1.4.0 (OK)
chardet >=2.0.0             :  4.0.0 (OK)
cloudpickle >=0.5.0         :  1.6.0 (OK)
cookiecutter >=1.6.0        :  1.7.2 (OK)
diff_match_patch >=20181111 :  20200713 (OK)
intervaltree >=3.0.2        :  3.1.0 (OK)
IPython >=7.6.0             :  7.21.0 (OK)
jedi =0.17.2                :  0.17.2 (OK)
jsonschema >=3.2.0          :  3.2.0 (OK)
keyring >=17.0.0            :  22.3.0 (OK)
nbconvert >=4.0             :  6.0.7 (OK)
numpydoc >=0.6.0            :  1.1.0 (OK)
parso =0.7.0                :  0.7.0 (OK)
pexpect >=4.4.0             :  4.8.0 (OK)
pickleshare >=0.4           :  0.7.5 (OK)
psutil >=5.3                :  5.8.0 (OK)
pygments >=2.0              :  2.8.1 (OK)
pylint >=1.0                :  2.7.2 (OK)
pyls >=0.36.2;<1.0.0        :  v5.0.0a5+145.g1dd460bf5 (OK)
pyls_black >=0.4.6          :  0.4.6 (OK)
pyls_spyder >=0.3.2         :  0.3.2 (OK)
qdarkstyle >=2.8            :  2.8.1 (OK)
qtawesome >=0.5.7           :  1.0.1 (OK)
qtconsole >=5.0.1           :  5.0.2 (OK)
qtpy >=1.5.0                :  1.9.0 (OK)
rtree >=0.8.3               :  0.9.4 (OK)
setuptools >=39.0.0         :  52.0.0.post20210125 (OK)
sphinx >=0.6.6              :  3.5.2 (OK)
spyder_kernels >=2.0.0dev0  :  2.0.0.dev0 (OK)
textdistance >=4.2.0        :  4.2.1 (OK)
three_merge >=0.1.1         :  0.1.1 (OK)
watchdog >=0.10.3;<2.0.0    :  1.0.2 (OK)
zmq >=17                    :  20.0.0 (OK)

# Optional:
cython >=0.21               :  0.29.22 (OK)
matplotlib >=2.0.0          :  3.3.4 (OK)
numpy >=1.7                 :  1.19.2 (OK)
pandas >=1.1.1              :  1.2.3 (OK)
scipy >=0.17.0              :  1.6.1 (OK)
sympy >=0.7.3               :  1.7.1 (OK)
ccordoba12 commented 3 years ago

Hey @mrclary, thanks for reporting. You need to run bootstrap.py with pythonw instead of python to avoid that problem.

Please try that and let us know if it works for you.

mrclary commented 3 years ago

Okay, I'll test that. But these also manifest in the macOS application...

mrclary commented 3 years ago

I cannot get pythonw in my conda environment. There may be a problem with this in future as well, since as of Python 3.9, there is no distinction between python and pythonw (https://docs.python.org/3/using/mac.html#running-scripts-with-a-gui).

mrclary commented 3 years ago

Okay, it requires conda install python.app (maybe we need to add this requirement?). So, the initially disabled menubar is resolved with pythonw for both 3.7.6 and 3.9.1. However, the issue with the location of the menu items remains.

The good news is that only the latter issue manifested in the macOS application, so it would seem that pythonw for the application build is a non-issue. Perhaps the menu item location issue is on our end?

mrclary commented 3 years ago

Okay, it requires conda install python.app (maybe we need to add this requirement?).

For developer instructions...

ccordoba12 commented 3 years ago

Okay, it requires conda install python.app (maybe we need to add this requirement?)

Sure, please add a mention to it in our Contributing guide.

However, the issue with the location of the menu items remains.

This was caused by the migration to the new API and I don't know how to fix it. Maybe there's a way to tell Qt to add that menu entry to the expected place in macOS.

so it would seem that pythonw for the application build is a non-issue. Perhaps the menu item location issue is on our end?

That's because Homebrew Python is built as Mac framework, so it doesn't have that problem (Anaconda's Python is not).

mrclary commented 3 years ago

Okay, it requires conda install python.app (maybe we need to add this requirement?)

Sure, please add a mention to it in our Contributing guide.

Will do.

However, the issue with the location of the menu items remains.

This was caused by the migration to the new API and I don't know how to fix it. Maybe there's a way to tell Qt to add that menu entry to the expected place in macOS.

The menu items do find their correct home after activating a dialogue window for the first time...does this suggest that something isn't being set/called/instantiated at application launch?

ccordoba12 commented 3 years ago

Nop, it doesn't ring a bell, sorry.

mrclary commented 3 years ago

Okay, this issue does not seem to manifest on the macOS app artifact from #14950. It still manifests for my local app builds from the same commit.

Additionally, the issue that I discovered regarding completions not displaying in the editor, even though the LSP server was working properly, (see #14923) also does not manifest for the artifact but does for my local build. I thought that it had disappeared (see comment), but it reemerged.

All I can think right now is that both are related to different Python versions (or perhaps Qt): Homebrew 3.9.2 on GitHub and Homebrew 3.9.1 local. I will have to investigate further.

mrclary commented 3 years ago

Okay, this issue does not seem to manifest on the macOS app artifact from #14950. It still manifests for my local app builds from the same commit.

This is misleading. I realized that the artifact for #14950 was built on the 4.x branch. This works for both GitHub (Python 3.9.2) and my local (Python 3.9.1) builds.

All I can think right now is that both are related to different Python versions (or perhaps Qt): Homebrew 3.9.2 on GitHub and Homebrew 3.9.1 local. I will have to investigate further.

This is definitely not the case. The artifact from #14955 (built on the master branch) also exhibits the menu bar issue. So this is definitely something on our end. Furthermore, it manifests under bootstrap with Python 3.7.10, as well as under local installation (launching from conda environment).

mrclary commented 3 years ago

Don't know if it's related, but on bootstrap I see the following in the terminal: QWidget::setMinimumSize: (figcanvas/FigureCanvas) Negative sizes (-24,-24) are not possible

ccordoba12 commented 3 years ago

This is definitely not the case. The artifact from #14955 (built on the master branch) also exhibits the menu bar issue

What issue exactly?

Don't know if it's related, but on bootstrap I see the following in the terminal:

No, that's a bug in Plots and it's unrelated.

mrclary commented 3 years ago

This is definitely not the case. The artifact from #14955 (built on the master branch) also exhibits the menu bar issue

What issue exactly?

The issue where the menu bar is inactive was resolved by using pythonw in bootstrap, and did not manifest in any macOS builds, local or on GitHub.

The issue remains where the menu bar items "Preferences..." and "About Spyder" are located in "Tools" and "Help", respectively, upon launching Spyder (local or GitHub builds, or local bootstrap). After another Spyder window opens (e.g. popup window, or deliberately opening a dialogue window, or ...), then these menu items appear in their proper place in "Spyder" (or "python" if bootstrapping).

mrclary commented 3 years ago

menubar

mrclary commented 3 years ago

@steff456 @ccordoba12, this issue does not appear to be resolved by #15049, although the behavior has changed somewhat.

menubar-2

steff456 commented 3 years ago

@mrclary I'm not sure what else could be interfering with those actions. Qt guidelines don't say more than the roles added in #15049

mrclary commented 3 years ago

@steff456 I don't know what to make of it either. Were you able to reproduce? We could try different Qt versions; maybe it's a bug with them?

steff456 commented 3 years ago

Yes, I could reproduce it. Sometimes it works faster than others.. But I can reproduce the exact same behavior of your gif

ccordoba12 commented 3 years ago

@mrclary, this could be an issue with Qt 5.9. Could you try with Qt 5.12 from Conda-forge?

mrclary commented 3 years ago

I installed Qt 5.12.9 and it still manifests. I'm not sure what the equivalent is in pip, since this manifests in the macOS app as well, but that build environment doesn't have Qt listed. Maybe it's included in one of the wheels?

conda ``` # packages in environment at /Users/rclary/opt/miniconda3/envs/spy-dev: # # Name Version Build Channel alabaster 0.7.12 pyhd3eb1b0_0 appdirs 1.4.4 py_0 applaunchservices 0.2.1 py_0 appnope 0.1.2 py39hecd8cb5_1001 argh 0.26.2 py39hecd8cb5_0 arrow 1.0.3 py39hecd8cb5_0 astroid 2.5 py39hecd8cb5_1 async_generator 1.10 pyhd3eb1b0_0 atomicwrites 1.4.0 py_0 attrs 20.3.0 pyhd3eb1b0_0 autopep8 1.5.6 pyhd3eb1b0_0 babel 2.9.0 pyhd3eb1b0_0 backcall 0.2.0 pyhd3eb1b0_0 bcrypt 3.2.0 py39h9ed2024_0 binaryornot 0.4.4 py_1 conda-forge black 19.10b0 py_0 blas 1.0 mkl bleach 3.3.0 pyhd3eb1b0_0 brotlipy 0.7.0 py39h9ed2024_1003 ca-certificates 2021.1.19 hecd8cb5_1 certifi 2020.12.5 py39hecd8cb5_0 cffi 1.14.5 py39h2125817_0 chardet 4.0.0 py39hecd8cb5_1003 click 7.1.2 pyhd3eb1b0_0 cloudpickle 1.6.0 py_0 colorama 0.4.4 pyhd3eb1b0_0 cookiecutter 1.7.2 pyh9f0ad1d_0 conda-forge coverage 5.5 py39h9ed2024_2 cryptography 3.4.7 py39h2fd3fbb_0 cycler 0.10.0 py39hecd8cb5_0 cython 0.29.22 py39h23ab428_0 dbus 1.13.18 h18a8e69_0 decorator 4.4.2 pyhd3eb1b0_0 defusedxml 0.7.1 pyhd3eb1b0_0 diff-match-patch 20200713 py_0 docutils 0.16 py39hecd8cb5_1 entrypoints 0.3 py39hecd8cb5_0 expat 2.3.0 h23ab428_2 flake8 3.9.0 pyhd3eb1b0_0 flaky 3.7.0 py_0 freetype 2.10.4 ha233b18_0 future 0.18.2 py39hecd8cb5_1 gettext 0.19.8.1 hb0f4f8b_2 glib 2.68.0 hdf23fa2_0 gmp 6.2.1 h23ab428_2 gmpy2 2.0.8 py39h4b98818_3 icu 68.1 h23ab428_0 idna 2.10 pyhd3eb1b0_0 imagesize 1.2.0 pyhd3eb1b0_0 importlib-metadata 3.7.3 py39hecd8cb5_1 importlib_metadata 3.7.3 hd3eb1b0_1 intel-openmp 2019.4 233 intervaltree 3.1.0 py_0 ipykernel 5.3.4 py39h01d92e1_0 ipython 7.21.0 py39h01d92e1_0 ipython_genutils 0.2.0 pyhd3eb1b0_1 isort 5.8.0 pyhd3eb1b0_0 jedi 0.17.2 py39hecd8cb5_1 jinja2 2.11.3 pyhd3eb1b0_0 jinja2-time 0.2.0 py_2 conda-forge jpeg 9d hbcb3906_0 conda-forge jsonschema 3.2.0 py_2 jupyter_client 6.1.7 py_0 jupyter_core 4.7.1 py39hecd8cb5_0 jupyterlab_pygments 0.1.2 py_0 keyring 22.3.0 py39hecd8cb5_0 kiwisolver 1.3.1 py39h23ab428_0 krb5 1.17.1 hddcf347_0 lazy-object-proxy 1.6.0 py39h9ed2024_0 lcms2 2.11 h92f6f08_0 libclang 11.1.0 default_he082bbe_0 conda-forge libcxx 11.1.0 habf9029_0 conda-forge libedit 3.1.20210216 h9ed2024_1 libffi 3.3 hb1e8313_2 libgfortran 3.0.1 h93005f0_2 libiconv 1.16 h1de35cc_0 libllvm11 11.1.0 hd011deb_0 conda-forge libpng 1.6.37 ha441bb4_0 libpq 13.1 h052a64a_2 conda-forge libsodium 1.0.18 h1de35cc_0 libspatialindex 1.9.3 h23ab428_0 libtiff 4.1.0 hcb84e12_1 libwebp-base 1.2.0 h9ed2024_0 lz4-c 1.9.3 h23ab428_0 markupsafe 1.1.1 py39h9ed2024_0 matplotlib 3.3.4 py39hecd8cb5_0 matplotlib-base 3.3.4 py39h8b3ea08_0 mccabe 0.6.1 py39hecd8cb5_1 mistune 0.8.4 py39h9ed2024_1000 mkl 2019.4 233 mkl-service 2.3.0 py39h9ed2024_0 mkl_fft 1.3.0 py39ha059aab_0 mkl_random 1.0.2 py39h16bde0e_0 more-itertools 8.7.0 pyhd3eb1b0_0 mpc 1.1.0 h6ef4df4_1 mpfr 4.0.2 h9066e36_1 mpmath 1.2.1 py39hecd8cb5_0 mypy_extensions 0.4.1 py39hecd8cb5_0 mysql-common 8.0.23 h694c41f_1 conda-forge mysql-libs 8.0.23 hbeb7981_1 conda-forge nbclient 0.5.3 pyhd3eb1b0_0 nbconvert 6.0.7 py39hecd8cb5_0 nbformat 5.1.2 pyhd3eb1b0_1 ncurses 6.2 h0a44026_1 nest-asyncio 1.5.1 pyhd3eb1b0_0 nspr 4.30 hcd9eead_0 conda-forge nss 3.47 hc0980d9_0 conda-forge numpy 1.19.2 py39he57783f_0 numpy-base 1.19.2 py39hde55871_0 numpydoc 1.1.0 pyhd3eb1b0_1 olefile 0.46 py_0 openssl 1.1.1k h9ed2024_0 packaging 20.9 pyhd3eb1b0_0 pandas 1.2.3 py39hb2f4e1b_0 pandoc 2.12 hecd8cb5_0 pandocfilters 1.4.3 py39hecd8cb5_1 paramiko 2.7.2 py_0 parso 0.7.0 py_0 pathspec 0.7.0 py_0 pcre 8.44 hb1e8313_0 pexpect 4.8.0 pyhd3eb1b0_3 pickleshare 0.7.5 pyhd3eb1b0_1003 pillow 8.1.2 py39h5270095_0 pip 21.0.1 py39hecd8cb5_0 pluggy 0.13.1 py39hecd8cb5_0 poyo 0.5.0 py_0 conda-forge prompt-toolkit 3.0.17 pyh06a4308_0 psutil 5.8.0 py39h9ed2024_1 ptyprocess 0.7.0 pyhd3eb1b0_2 py 1.10.0 pyhd3eb1b0_0 pycodestyle 2.6.0 pyhd3eb1b0_0 pycparser 2.20 py_2 pydocstyle 6.0.0 pyhd3eb1b0_0 pyflakes 2.2.0 pyhd3eb1b0_0 pygments 2.8.1 pyhd3eb1b0_0 pylint 2.7.2 py39hecd8cb5_1 pyls-black 0.4.6 hd3eb1b0_0 pyls-spyder 0.3.2 pyhd3eb1b0_0 pynacl 1.4.0 py39h9ed2024_1 pyopenssl 20.0.1 pyhd3eb1b0_1 pyparsing 2.4.7 pyhd3eb1b0_0 pyqt 5.12.3 py39h6e9494a_7 conda-forge pyqt-impl 5.12.3 py39hef7122c_7 conda-forge pyqt5-sip 4.19.18 py39hd8f94c5_7 conda-forge pyqtchart 5.12 py39hef7122c_7 conda-forge pyqtwebengine 5.12.1 py39hef7122c_7 conda-forge pyrsistent 0.17.3 py39h9ed2024_0 pysocks 1.7.1 py39hecd8cb5_0 pytest 5.4.3 py39hecd8cb5_0 pytest-cov 2.11.1 pyhd3eb1b0_0 pytest-lazy-fixture 0.6.3 py_0 spyder-ide pytest-mock 3.5.1 pyhd3eb1b0_1 pytest-ordering 0.6 pyhd3eb1b0_0 pytest-qt 3.3.0 py_0 spyder-ide python 3.9.1 h88f2d9e_2 python-dateutil 2.8.1 pyhd3eb1b0_0 python-jsonrpc-server 0.4.0 py_0 python-language-server 0.36.2 pyhd3eb1b0_0 python-slugify 4.0.1 py_0 python.app 3 py39h9ed2024_0 python_abi 3.9 1_cp39 conda-forge pytz 2021.1 pyhd3eb1b0_0 pyxdg 0.27 pyhd3eb1b0_0 pyyaml 5.4.1 py39h9ed2024_1 pyzmq 20.0.0 py39h23ab428_1 qdarkstyle 2.8.1 py_0 qt 5.12.9 h126340a_4 conda-forge qtawesome 1.0.2 pyhd3eb1b0_0 qtconsole 5.0.3 pyhd3eb1b0_0 qtpy 1.9.0 py_0 readline 8.1 h9ed2024_0 regex 2021.3.17 py39h9ed2024_0 requests 2.25.1 pyhd3eb1b0_0 rope 0.18.0 py_0 rtree 0.9.4 py39hecd8cb5_1 scipy 1.6.2 py39h2515648_0 setuptools 52.0.0 py39hecd8cb5_0 sip 4.19.13 py39h23ab428_0 six 1.15.0 py39hecd8cb5_0 snowballstemmer 2.1.0 pyhd3eb1b0_0 sortedcontainers 2.3.0 pyhd3eb1b0_0 sphinx 3.5.3 pyhd3eb1b0_0 sphinxcontrib-applehelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-devhelp 1.0.2 pyhd3eb1b0_0 sphinxcontrib-htmlhelp 1.0.3 pyhd3eb1b0_0 sphinxcontrib-jsmath 1.0.1 pyhd3eb1b0_0 sphinxcontrib-qthelp 1.0.3 pyhd3eb1b0_0 sphinxcontrib-serializinghtml 1.1.4 pyhd3eb1b0_0 spyder-kernels 1.10.2 py39hecd8cb5_0 sqlite 3.35.2 hce871da_0 sympy 1.7.1 py39hecd8cb5_0 testpath 0.4.4 pyhd3eb1b0_0 text-unidecode 1.3 py_0 textdistance 4.2.1 pyhd3eb1b0_0 three-merge 0.1.1 pyhd3eb1b0_0 tk 8.6.10 hb0a8c7a_0 toml 0.10.2 pyhd3eb1b0_0 tornado 6.1 py39h9ed2024_0 traitlets 5.0.5 pyhd3eb1b0_0 typed-ast 1.4.2 py39h9ed2024_1 typing_extensions 3.7.4.3 pyha847dfd_0 tzdata 2020f h52ac0ba_0 ujson 4.0.2 py39h23ab428_0 unidecode 1.2.0 pyhd3eb1b0_0 urllib3 1.26.4 pyhd3eb1b0_0 watchdog 1.0.2 py39h9ed2024_1 wcwidth 0.2.5 py_0 webencodings 0.5.1 py39hecd8cb5_1 wheel 0.36.2 pyhd3eb1b0_0 whichcraft 0.6.1 py_0 conda-forge wrapt 1.12.1 py39h9ed2024_1 wurlitzer 2.0.1 py39hecd8cb5_0 xz 5.2.5 h1de35cc_0 yaml 0.2.5 haf1e3a3_0 yapf 0.31.0 pyhd3eb1b0_0 zeromq 4.3.4 h23ab428_0 zipp 3.4.1 pyhd3eb1b0_0 zlib 1.2.11 h1de35cc_3 zstd 1.4.9 h582d3a0_0 conda-forge ```
build ``` Package Version Location ------------------------------------------------- ---------- ------------------------------------------------------------------ alabaster 0.7.12 altgraph 0.17 appdirs 1.4.4 applaunchservices 0.2.1 appnope 0.1.2 arrow 1.0.3 astroid 2.5.2 async-generator 1.10 atomicwrites 1.4.0 attrs 20.3.0 autopep8 1.5.5 Babel 2.9.0 backcall 0.2.0 bcrypt 3.2.0 binaryornot 0.4.4 black 20.8b1 bleach 3.3.0 certifi 2020.12.5 cffi 1.14.5 chardet 4.0.0 click 7.1.2 cloudpickle 1.6.0 cookiecutter 1.7.2 coverage 5.5 cryptography 3.4.7 cycler 0.10.0 Cython 0.29.22 decorator 4.4.2 defusedxml 0.7.1 diff-match-patch 20200713 dmgbuild 1.4.2 docutils 0.16 ds-store 1.3.0 entrypoints 0.3 flake8 3.8.4 flaky 3.7.0 helpdev 0.7.1 idna 2.10 imagesize 1.2.0 importlib-metadata 3.9.1 intervaltree 3.1.0 ipykernel 5.5.0 ipython 7.22.0 ipython-genutils 0.2.0 isort 5.8.0 jedi 0.17.2 Jinja2 2.11.3 jinja2-time 0.2.0 jsonschema 3.2.0 jupyter-client 6.1.12 jupyter-core 4.7.1 jupyterlab-pygments 0.1.2 keyring 23.0.1 kiwisolver 1.3.1 lazy-object-proxy 1.6.0 mac-alias 2.2.0 macholib 1.14 MarkupSafe 1.1.1 matplotlib 3.4.0 mccabe 0.6.1 mistune 0.8.4 modulegraph 0.18 more-itertools 8.7.0 mpmath 1.2.1 mypy-extensions 0.4.3 nbclient 0.5.3 nbconvert 6.0.7 nbformat 5.1.2 nest-asyncio 1.5.1 numpy 1.20.2 numpydoc 1.1.0 packaging 20.9 pandas 1.2.3 pandocfilters 1.4.3 paramiko 2.7.2 parso 0.7.0 pathspec 0.8.1 pexpect 4.8.0 pickleshare 0.7.5 Pillow 8.1.2 pip 21.0.1 pluggy 0.13.1 poyo 0.5.0 prompt-toolkit 3.0.18 psutil 5.8.0 ptyprocess 0.7.0 py 1.10.0 py2app 0.22 pycodestyle 2.6.0 pycparser 2.20 pydocstyle 6.0.0 pyflakes 2.2.0 Pygments 2.8.1 pylint 2.7.3 pyls-black 0.4.6 pyls-spyder 0.3.2 PyNaCl 1.4.0 pyobjc 6.2.2 pyobjc-core 6.2.2 pyobjc-framework-Accounts 6.2.2 pyobjc-framework-AddressBook 6.2.2 pyobjc-framework-AdSupport 6.2.2 pyobjc-framework-AppleScriptKit 6.2.2 pyobjc-framework-AppleScriptObjC 6.2.2 pyobjc-framework-ApplicationServices 6.2.2 pyobjc-framework-AuthenticationServices 6.2.2 pyobjc-framework-AutomaticAssessmentConfiguration 6.2.2 pyobjc-framework-Automator 6.2.2 pyobjc-framework-AVFoundation 6.2.2 pyobjc-framework-AVKit 6.2.2 pyobjc-framework-BusinessChat 6.2.2 pyobjc-framework-CalendarStore 6.2.2 pyobjc-framework-CFNetwork 6.2.2 pyobjc-framework-CloudKit 6.2.2 pyobjc-framework-Cocoa 6.2.2 pyobjc-framework-Collaboration 6.2.2 pyobjc-framework-ColorSync 6.2.2 pyobjc-framework-Contacts 6.2.2 pyobjc-framework-ContactsUI 6.2.2 pyobjc-framework-CoreAudio 6.2.2 pyobjc-framework-CoreAudioKit 6.2.2 pyobjc-framework-CoreBluetooth 6.2.2 pyobjc-framework-CoreData 6.2.2 pyobjc-framework-CoreHaptics 6.2.2 pyobjc-framework-CoreLocation 6.2.2 pyobjc-framework-CoreMedia 6.2.2 pyobjc-framework-CoreMediaIO 6.2.2 pyobjc-framework-CoreML 6.2.2 pyobjc-framework-CoreMotion 6.2.2 pyobjc-framework-CoreServices 6.2.2 pyobjc-framework-CoreSpotlight 6.2.2 pyobjc-framework-CoreText 6.2.2 pyobjc-framework-CoreWLAN 6.2.2 pyobjc-framework-CryptoTokenKit 6.2.2 pyobjc-framework-DeviceCheck 6.2.2 pyobjc-framework-DictionaryServices 6.2.2 pyobjc-framework-DiscRecording 6.2.2 pyobjc-framework-DiscRecordingUI 6.2.2 pyobjc-framework-DiskArbitration 6.2.2 pyobjc-framework-DVDPlayback 6.2.2 pyobjc-framework-EventKit 6.2.2 pyobjc-framework-ExceptionHandling 6.2.2 pyobjc-framework-ExecutionPolicy 6.2.2 pyobjc-framework-ExternalAccessory 6.2.2 pyobjc-framework-FileProvider 6.2.2 pyobjc-framework-FileProviderUI 6.2.2 pyobjc-framework-FinderSync 6.2.2 pyobjc-framework-FSEvents 6.2.2 pyobjc-framework-GameCenter 6.2.2 pyobjc-framework-GameController 6.2.2 pyobjc-framework-GameKit 6.2.2 pyobjc-framework-GameplayKit 6.2.2 pyobjc-framework-ImageCaptureCore 6.2.2 pyobjc-framework-IMServicePlugIn 6.2.2 pyobjc-framework-InputMethodKit 6.2.2 pyobjc-framework-InstallerPlugins 6.2.2 pyobjc-framework-InstantMessage 6.2.2 pyobjc-framework-Intents 6.2.2 pyobjc-framework-IOSurface 6.2.2 pyobjc-framework-iTunesLibrary 6.2.2 pyobjc-framework-LatentSemanticMapping 6.2.2 pyobjc-framework-LaunchServices 6.2.2 pyobjc-framework-libdispatch 6.2.2 pyobjc-framework-LinkPresentation 6.2.2 pyobjc-framework-LocalAuthentication 6.2.2 pyobjc-framework-MapKit 6.2.2 pyobjc-framework-MediaAccessibility 6.2.2 pyobjc-framework-MediaLibrary 6.2.2 pyobjc-framework-MediaPlayer 6.2.2 pyobjc-framework-MediaToolbox 6.2.2 pyobjc-framework-Metal 6.2.2 pyobjc-framework-MetalKit 6.2.2 pyobjc-framework-ModelIO 6.2.2 pyobjc-framework-MultipeerConnectivity 6.2.2 pyobjc-framework-NaturalLanguage 6.2.2 pyobjc-framework-NetFS 6.2.2 pyobjc-framework-Network 6.2.2 pyobjc-framework-NetworkExtension 6.2.2 pyobjc-framework-NotificationCenter 6.2.2 pyobjc-framework-OpenDirectory 6.2.2 pyobjc-framework-OSAKit 6.2.2 pyobjc-framework-OSLog 6.2.2 pyobjc-framework-PencilKit 6.2.2 pyobjc-framework-Photos 6.2.2 pyobjc-framework-PhotosUI 6.2.2 pyobjc-framework-PreferencePanes 6.2.2 pyobjc-framework-PushKit 6.2.2 pyobjc-framework-Quartz 6.2.2 pyobjc-framework-QuickLookThumbnailing 6.2.2 pyobjc-framework-SafariServices 6.2.2 pyobjc-framework-SceneKit 6.2.2 pyobjc-framework-ScreenSaver 6.2.2 pyobjc-framework-ScriptingBridge 6.2.2 pyobjc-framework-SearchKit 6.2.2 pyobjc-framework-Security 6.2.2 pyobjc-framework-SecurityFoundation 6.2.2 pyobjc-framework-SecurityInterface 6.2.2 pyobjc-framework-ServiceManagement 6.2.2 pyobjc-framework-Social 6.2.2 pyobjc-framework-SoundAnalysis 6.2.2 pyobjc-framework-Speech 6.2.2 pyobjc-framework-SpriteKit 6.2.2 pyobjc-framework-StoreKit 6.2.2 pyobjc-framework-SyncServices 6.2.2 pyobjc-framework-SystemConfiguration 6.2.2 pyobjc-framework-SystemExtensions 6.2.2 pyobjc-framework-UserNotifications 6.2.2 pyobjc-framework-VideoSubscriberAccount 6.2.2 pyobjc-framework-VideoToolbox 6.2.2 pyobjc-framework-Vision 6.2.2 pyobjc-framework-WebKit 6.2.2 pyparsing 2.4.7 PyQt5 5.12.3 PyQt5-sip 12.8.1 PyQtWebEngine 5.12.1 pyrsistent 0.17.3 pytest 5.4.3 pytest-cov 2.11.1 pytest-lazy-fixture 0.6.3 pytest-mock 3.5.1 pytest-ordering 0.6 pytest-qt 3.3.0 python-dateutil 2.8.1 python-jsonrpc-server 0.4.0 python-slugify 4.0.1 pytz 2021.1 pyxdg 0.27 PyYAML 5.4.1 pyzmq 22.0.3 QDarkStyle 3.0.dev0 /Users/rclary/Documents/Python/spyder/external-deps/qdarkstyle QtAwesome 1.0.2 qtconsole 5.0.3 QtPy 1.9.0 regex 2021.3.17 requests 2.25.1 rope 0.18.0 Rtree 0.9.7 scipy 1.6.2 setuptools 54.2.0 six 1.15.0 snowballstemmer 2.1.0 sortedcontainers 2.3.0 Sphinx 3.5.3 sphinxcontrib-applehelp 1.0.2 sphinxcontrib-devhelp 1.0.2 sphinxcontrib-htmlhelp 1.0.3 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.3 sphinxcontrib-serializinghtml 1.1.4 spyder 5.0.0.dev0 /Users/rclary/Documents/Python/spyder spyder-kernels 2.0.0.dev0 /Users/rclary/Documents/Python/spyder/external-deps/spyder-kernels sympy 1.7.1 testpath 0.4.4 text-unidecode 1.3 textdistance 4.2.1 three-merge 0.1.1 toml 0.10.2 tornado 6.1 traitlets 5.0.5 typed-ast 1.4.2 typing-extensions 3.7.4.3 ujson 4.0.2 urllib3 1.26.4 watchdog 1.0.2 wcwidth 0.2.5 webencodings 0.5.1 wrapt 1.12.1 wurlitzer 2.0.1 yapf 0.31.0 zipp 3.4.1 ```