oleksis / youtube-dl-gui

A cross platform front-end GUI of the popular youtube-dl written in wxPython.
https://oleksis.github.io/youtube-dl-gui/
The Unlicense
1.67k stars 108 forks source link

Build from source fails (Void Linux xbps template file) #165

Open MechDR opened 8 months ago

MechDR commented 8 months ago

Please follow the guide below

WARNING

All invalid issues will be rejected!!


Before going further


What is the purpose of your issue?

Please remove any sections between (---) if they are not related to your issue


What operating system do you use ?

Void Linux

List of actions to perform to reproduce the problem:

  1. Copy/paste the xbps-src template I use.
  2. Try to build from source. You can do xbps-src from void-packages even if you're not on Void Linux, the thing is a shell script with chroot to emulate a working Void install. You can use whatever shell you like (bash is default in the xbps-src script).

What is the expected behaviour ?

It should build from source if all dependencies are present, which I believe they are (correct me if wrong).

What happens instead ?

It doesn't build...

So, I managed to get a working template with all dependencies satisfied (correct me if I'm wrong).

# Template file for 'yt-dlg'
pkgname=yt-dlg
version=1.8.5
revision=1
#build_wrksrc=
build_style=gnu-makefile
create_wrksrc=yes
#configure_args=""
#make_build_args=""
#make_install_args=""
#conf_files=""
#make_dirs="/var/log/dir 0755 root root"
hostmakedepends="python3 pkg-config which"
makedepends="libxml2-devel libxslt-devel gtk+3-devel libSM-devel libfreeglut-devel
 libsecret-devel gspell-devel SDL2-devel libnotify-devel webkit2gtk-devel
 libcurl-devel gst-plugins-base1-devel python3-devel" # base-devel
depends="ffmpeg gettext"
short_desc="yt-dlg is a cross platform front-end GUI for youtube-dl and yt-dlp"
maintainer="MechDR <0x4e4f@gmail.com>"
license="Unlicense"
homepage="https://oleksis.github.io/youtube-dl-gui/"
distfiles="https://github.com/oleksis/youtube-dl-gui/archive/refs/tags/v${version}.tar.gz"
checksum="8b1f9815857228a002680e2f64fc421055098c6dcfed6f6be17274b0cf45ca4a"

pre_build() {
        cd "youtube-dl-gui-${version}"
        make clean-requirements
        make venv
        source venv/bin/activate
        python3 -m pip install attrdict3 # Needs to be installed in a separate transation.
        echo "PyYAML==5.3.1" >> requirements/requirements-dev.in # Latest version has a confirmed bug, breaks the build process.
        sed -i 's@-o requirements/requirements.txt --no-header --no-annotate@--no-header --no-annotate --no-strip-extras --allow-unsafe --output-file requirements/requirements.txt@g' Makefile
        sed -i 's@-o requirements/requirements-binaries.txt --no-header --no-annotate@--no-header --no-annotate --no-strip-extras --allow-unsafe --output-file requirements/requirements-binaries.txt@g' Makefile
        sed -i 's@-o requirements/requirements-dev.txt --no-header --no-annotate@--no-header --no-annotate --no-strip-extras --allow-unsafe --output-file requirements/requirements-dev.txt@g' Makefile
#        sed -i 's@sync requirements/requirements.txt requirements/requirements-binaries.txt@sync --force requirements/requirements.txt requirements/requirements-binaries.txt@g' Makefile
#        sed -i 's@sync requirements/requirements.txt requirements/requirements-dev.txt@sync --force requirements/requirements.txt requirements/requirements-dev.txt@g' Makefile
}

do_build() {
        cd "youtube-dl-gui-${version}"
        make
}

There are also some minor bugs in the current makefiile/build process, but that's beside the point. The point is, it doesn't build...

Here is the error log (truncated).

      make[2]: Leaving directory '/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/wxbld/gtk3/utils/wxrc'
      make[1]: Leaving directory '/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/wxbld/gtk3'
      WARNING: msgfmt and/or make commands not found, message catalogs not
               rebuilt. Please install gettext and associated tools.
      Finished command: build_wx (23m56.822s)
      Running command: build_py
      Checking for /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/bin/waf-2.0.24...
      "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3" /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/bin/waf-2.0.24 --wx_config=/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/wxbld/gtk3/wx-config --gtk3 --python="/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3" --out=build/waf/3.12/gtk3 configure build
      Setting top to                           : /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35
      Setting out to                           : /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/waf/3.12/gtk3
      Checking for 'gcc' (C compiler)          : cc
      Checking for 'g++' (C++ compiler)        : g++
      Checking for program 'python'            : /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3
      Checking for python version >= 3.7.0     : 3.12.1
      python-config                            : /usr/bin/python3.12-config
      Asking python-config for pyext '--cflags --libs --ldflags' flags : yes
      Testing pyext configuration                                      : yes
      Finding libs for WX                                              : yes
      Finding libs for WXADV                                           : yes
      Finding libs for WXSTC                                           : yes
      Finding libs for WXHTML                                          : yes
      Finding libs for WXGL                                            : yes
      Finding libs for WXWEBVIEW                                       : yes
      Finding libs for WXXML                                           : yes
      Finding libs for WXXRC                                           : yes
      Finding libs for WXRICHTEXT                                      : yes
      Finding libs for WXMEDIA                                         : yes
      Finding libs for WXRIBBON                                        : yes
      Finding libs for WXPROPGRID                                      : yes
      Finding libs for WXAUI                                           : yes
      'configure' finished successfully (3.231s)
      Waf: Entering directory `/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/waf/3.12/gtk3'
      **** Compiler: cc --version
           cc (GCC) 12.2.0
           Copyright (C) 2022 Free Software Foundation, Inc.
           This is free software; see the source for copying conditions.  There is NO
           warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
      /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/sphinxtools/constants.py:226: SyntaxWarning: invalid escape sequence '\w'
        CONSTANT_RE = re.compile('^([\w\s,]+)=', re.M)
      [  1/937] Compiling sip/siplib/sip_array.c
      [  2/937] Compiling sip/siplib/descriptors.c
      [  3/937] Compiling sip/siplib/apiversions.c
      [  4/937] Compiling sip/siplib/qtlib.c
      [  5/937] Compiling sip/siplib/voidptr.c
      [  6/937] Compiling sip/siplib/objmap.c
      [  7/937] Compiling sip/siplib/threads.c
      [  8/937] Compiling sip/siplib/siplib.c
      [  9/937] Compiling sip/siplib/bool.cpp
      [ 10/937] Compiling sip/siplib/int_convertors.c
      [ 11/937] Compiling sip/cpp/sip_corewxListView.cpp
      [ 12/937] Compiling sip/cpp/sip_corewxEventLoopActivator.cpp
      [ 13/937] Compiling sip/cpp/sip_corewxCollapsibleHeaderCtrl.cpp
      [ 14/937] Compiling sip/cpp/sip_corewxAutoBufferedPaintDC.cpp
      [ 15/937] Compiling sip/cpp/sip_corewxAccessible.cpp
      [ 16/937] Linking build/waf/3.12/gtk3/siplib.cpython-312-x86_64-linux-gnu.so
      [ 17/937] Compiling sip/cpp/sip_corewxWrapSizer.cpp
      [ 18/937] Compiling sip/cpp/sip_corewxWindowList.cpp
      [ 19/937] Compiling sip/cpp/sip_corewxWindowIDRef.cpp
      [ 20/937] Compiling sip/cpp/sip_corewxWithImages.cpp
      [ 21/937] Compiling sip/cpp/sip_corewxCloseEvent.cpp
      [ 22/937] Compiling sip/cpp/sip_corewxWindowDisabler.cpp
      [ 23/937] Compiling sip/cpp/sip_corewxLayoutConstraints.cpp
      [ 24/937] Compiling sip/cpp/sip_corewxEvent.cpp
      [ 25/937] Compiling sip/cpp/sip_corewxWindowDC.cpp
      [ 26/937] Compiling sip/cpp/sip_corewxWindowCreateEvent.cpp
      [ 27/937] Compiling sip/cpp/sip_corewxLanguageInfo.cpp
      [ 28/937] Compiling sip/cpp/sip_corewxWindowChildrenRepositioningGuard.cpp
      [ 29/937] Compiling sip/cpp/sip_corewxHelpProvider.cpp
      [ 30/937] Compiling sip/cpp/sip_corewxLinuxDistributionInfo.cpp
      [ 31/937] Compiling sip/cpp/sip_corewxKeyboardState.cpp
      [ 32/937] Compiling sip/cpp/sip_corewxWindowBase.cpp
      [ 33/937] Compiling sip/cpp/sip_corewxClipboardTextEvent.cpp
      [ 34/937] Compiling sip/cpp/sip_corewxArtProvider.cpp
      [ 35/937] Compiling sip/cpp/sip_corewxWindow.cpp
      [ 36/937] Compiling sip/cpp/sip_corewxEraseEvent.cpp
      [ 37/937] Compiling sip/cpp/sip_corewxKeyEvent.cpp
      [ 38/937] Compiling sip/cpp/sip_corewxVideoMode.cpp
      [ 39/937] Compiling sip/cpp/sip_corewxVersionInfo.cpp
      [ 40/937] Compiling sip/cpp/sip_corewxVisualAttributes.cpp
      [ 41/937] Compiling sip/cpp/sip_corewxDropTarget.cpp
      [ 42/937] Compiling sip/cpp/sip_corewxVector0100wxBitmapBundle.cpp
      [ 43/937] Compiling sip/cpp/sip_corewxVector0100wxBitmap.cpp
      [ 44/937] Compiling sip/cpp/sip_corewxJPEGHandler.cpp
      [ 45/937] Compiling sip/cpp/sip_corewxVariantList.cpp
      [ 46/937] Compiling sip/cpp/sip_corewxVariant.cpp
      [ 47/937] Compiling sip/cpp/sip_corewxItemContainerImmutable.cpp
      [ 48/937] Compiling sip/cpp/sip_corewxDropSource.cpp
      [ 49/937] Compiling sip/cpp/sip_corewxJoystickEvent.cpp
      [ 50/937] Compiling sip/cpp/sip_corewxVarVScrollHelper.cpp
      [ 51/937] Compiling sip/cpp/sip_corewxVarScrollHelperBase.cpp
      [ 52/937] Compiling sip/cpp/sip_corewxItemContainer.cpp
      [ 53/937] Compiling sip/cpp/sip_corewxClipboard.cpp
      [ 54/937] Compiling sip/cpp/sip_corewxVarHScrollHelper.cpp
      [ 55/937] Compiling sip/cpp/sip_corewxItemAttr.cpp
      [ 56/937] Compiling sip/cpp/sip_corewxDropFilesEvent.cpp
      [ 57/937] Compiling sip/cpp/sip_corewxVarHVScrollHelper.cpp
      [ 58/937] Compiling sip/cpp/sip_corewxVScrolledWindow.cpp
      [ 59/937] Compiling sip/cpp/sip_corewxInternetFSHandler.cpp
      [ 60/937] Compiling sip/cpp/sip_corewxVListBox.cpp
      [ 61/937] Compiling sip/cpp/sip_corewxUpdateUIEvent.cpp
      [ 62/937] Compiling sip/cpp/sip_corewxIntPtr.cpp
      [ 63/937] Compiling sip/cpp/sip_corewxValidator.cpp
      [ 64/937] Compiling sip/cpp/sip_corewxDragImage.cpp
      [ 65/937] Compiling sip/cpp/sip_corewxArrayVideoModes.cpp
      [ 66/937] Compiling sip/cpp/sip_corewxAcceleratorTable.cpp
      [ 67/937] Compiling sip/cpp/sip_corewxUniChar.cpp
      [ 68/937] Compiling sip/cpp/sip_corewxURLDataObject.cpp
      [ 69/937] Compiling sip/cpp/sip_corewxIntCArrayHolder.cpp
      [ 70/937] Compiling sip/cpp/sip_corewxULongLong.cpp
      [ 71/937] Compiling sip/cpp/sip_corewxUIntPtr.cpp
      [ 72/937] Compiling sip/cpp/sip_corewxInputStream.cpp
      [ 73/937] Compiling sip/cpp/sip_corewxDisplayChangedEvent.cpp
      [ 74/937] Compiling sip/cpp/sip_corewxUIActionSimulator.cpp
      [ 75/937] Compiling sip/cpp/sip_corewxTwoFingerTapEvent.cpp
      [ 76/937] Compiling sip/cpp/sip_corewxInitDialogEvent.cpp
      [ 77/937] Compiling sip/cpp/sip_corewxTreebook.cpp
      [ 78/937] Compiling sip/cpp/sip_corewxTreeItemId.cpp
      [ 79/937] Compiling sip/cpp/sip_corewxInfoBar.cpp
      [ 80/937] Compiling sip/cpp/sip_corewxDisplay.cpp
      [ 81/937] Compiling sip/cpp/sip_corewxClientData.cpp
      [ 82/937] Compiling sip/cpp/sip_corewxTreeItemData.cpp
      [ 83/937] Compiling sip/cpp/sip_corewxTreeEvent.cpp
      [ 84/937] Compiling sip/cpp/sip_corewxIndividualLayoutConstraint.cpp
      [ 85/937] Compiling sip/cpp/sip_corewxTreeCtrl.cpp
      [ 86/937] Compiling sip/cpp/sip_corewxClientDataContainer.cpp
      [ 87/937] Compiling sip/cpp/sip_corewxImageRGBValue.cpp
      [ 88/937] Compiling sip/cpp/sip_corewxDirPickerCtrl.cpp
      [ 89/937] Compiling sip/cpp/sip_corewxTranslations.cpp
      [ 90/937] Compiling sip/cpp/sip_corewxTranslationsLoader.cpp
      [ 91/937] Compiling sip/cpp/sip_corewxImageList.cpp
      [ 92/937] Compiling sip/cpp/sip_corewxTopLevelWindowGeometrySerializer.cpp
      [ 93/937] Compiling sip/cpp/sip_corewxTopLevelWindow.cpp
      [ 94/937] Compiling sip/cpp/sip_corewxImageHistogram.cpp
      [ 95/937] Compiling sip/cpp/sip_corewxTrackable.cpp
      [ 96/937] Compiling sip/cpp/sip_corewxClientDC.cpp
      [ 97/937] Compiling sip/cpp/sip_corewxDirFilterListCtrl.cpp
      [ 98/937] Compiling sip/cpp/sip_corewxToolbook.cpp
      [ 99/937] Compiling sip/cpp/sip_corewxToolTip.cpp
      [100/937] Compiling sip/cpp/sip_corewxImageHandler.cpp
      [101/937] Compiling sip/cpp/sip_corewxToolBarToolBase.cpp
      [102/937] Compiling sip/cpp/sip_corewxToolBar.cpp
      [103/937] Compiling sip/cpp/sip_corewxArrayString.cpp
      [104/937] Compiling sip/cpp/sip_corewxDirDialog.cpp
      [105/937] Compiling sip/cpp/sip_corewxToggleButton.cpp
      ../../../../sip/cpp/sip_corewxArrayString.cpp: In function 'int convertTo_wxArrayString(PyObject*, void**, int*, PyObject*)':
      ../../../../sip/cpp/sip_corewxArrayString.cpp:91:26: error: 'PyUnicode_GET_SIZE' was not declared in this scope; did you mean 'PyDict_GET_SIZE'?
         91 |             size_t len = PyUnicode_GET_SIZE(item);
            |                          ^~~~~~~~~~~~~~~~~~
            |                          PyDict_GET_SIZE

      Waf: Leaving directory `/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/waf/3.12/gtk3'
      Build failed
       -> task in '_core' failed with exit status 1 (run with -v to display more information)
      Command '"/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3" /tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/bin/waf-2.0.24 --wx_config=/tmp/pip-install-h28940_m/wxpython_292c9996ed404a0491fe3fcf47e27c35/build/wxbld/gtk3/wx-config --gtk3 --python="/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3" --out=build/waf/3.12/gtk3 configure build ' failed with exit code 1.
      Finished command: build_py (5m31.782s)
      Finished command: build (29m28.605s)
      Command '"/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3" -u build.py build' failed with exit code 1.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for wxpython
  Running setup.py clean for wxpython
Successfully built pyyaml
Failed to build wxpython
ERROR: Could not build wheels for wxpython, which is required to install pyproject.toml-based projects
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/piptools/__main__.py", line 19, in <module>
    cli()
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/piptools/scripts/sync.py", line 205, in cli
    sync.sync(
  File "/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/piptools/sync.py", line 263, in sync
    run(  # nosec
  File "/usr/lib/python3.12/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3', '-m', 'pip', 'install', '-r', '/tmp/tmpwe7fpw7u']' returned non-zero exit status 1.
make: *** [Makefile:49: dev] Error 1

This seems like a build code issue to me... once again, correct me if I'm wrong.

oleksis commented 8 months ago

Thanks for testing and sharing the logs. Python 3.12 (today) is the latest version and early release. wxPython (wxWidgets) recently fixed some issue with cython and sip

Try compile only wxPython from the source in GitHub in your GNU/Linux OS

Other alternative is find the binary wheel of wxPython for your default Python in your system

If you look in the README.md Notes can see how compile wxPython in other distros

MechDR commented 8 months ago

@oleksis I have these packages at my disposal from the repo. Can any of these help?

wxFormBuilder        (Package)  wxPython-devel-32bit          (Package)  wxWidgets-devel             (Package)
wxFormBuilder-32bit  (Package)  wxWidgets                     (Package)  wxWidgets-devel-32bit       (Package)
wxMaxima             (Package)  wxWidgets-32bit               (Package)  wxWidgets-gtk3              (Package)
wxPython             (Package)  wxWidgets-common              (Package)  wxWidgets-gtk3-32bit        (Package)
wxPython4            (Package)  wxWidgets-common-32bit        (Package)  wxWidgets-gtk3-devel        (Package)
wxPython-32bit       (Package)  wxWidgets-common-devel        (Package)  wxWidgets-gtk3-devel-32bit  (Package)
wxPython-devel       (Package)  wxWidgets-common-devel-32bit  (Package)  
oleksis commented 8 months ago

Can help…

wxPython             (Package)  wxWidgets-common              (Package)  wxWidgets-gtk3-32bit        (Package)
wxPython4            (Package)  wxWidgets-common-32bit        (Package)  wxWidgets-gtk3-devel        (Package)

Try in your distro. If have some issues please try compile wxpython from the source for you distro.

MechDR commented 8 months ago

OK, will try all of what you mentioned, will report back.

MechDR commented 8 months ago

@oleksis OK, I managed to get wheel for wxPython 4.2.1 built from source after I did a few more modifications to the template file (patches to source files). I went this route since I thought it's probably the most painless one, regarding template changes and all that. Plus, I believe it should work.

And it seemed like an almost win :laughing:, but it failed, right at the end it seems :smile: .

  Created wheel for wxpython: filename=wxPython-4.2.1-cp312-cp312-linux_x86_64.whl size=150203949 sha256=2d3552e60feb0db339f894b4f6dcd41bb2fadcb9eea2a1e9542c3dc96ec3c4c6
  Stored in directory: /tmp/.cache/pip/wheels/4a/74/97/07cd85f108df83da0682e5560884e6a74ead00ea31538b6959
Successfully built pyyaml wxpython
Installing collected packages: distlib, typing-extensions, tokenize-rt, pyyaml, pypubsub, pyproject-api, pyflakes, pycodestyle, pluggy, platformdirs, pipdeptree, pillow, pathspec, nodeenv, mypy-extensions, mccabe, lxml, isort, iniconfig, identify, filelock, coverage, colorama, chardet, cfgv, cachetools, attrs, wxpython, virtualenv, pyupgrade, pytest, pip-tools, mypy, flake8, black, tox, pytest-cov, pre-commit
  Attempting uninstall: pip-tools
    Found existing installation: pip-tools 7.3.0
    Uninstalling pip-tools-7.3.0:
      Successfully uninstalled pip-tools-7.3.0
Successfully installed attrs-23.1.0 black-23.1.0 cachetools-5.3.2 cfgv-3.4.0 chardet-5.2.0 colorama-0.4.6 coverage-7.3.4 distlib-0.3.8 filelock-3.13.1 flake8-6.0.0 identify-2.5.33 iniconfig-2.0.0 isort-5.12.0 lxml-4.9.4 mccabe-0.7.0 mypy-1.0.0 mypy-extensions-1.0.0 nodeenv-1.8.0 pathspec-0.12.1 pillow-10.1.0 pip-tools-6.12.2 pipdeptree-2.3.3 platformdirs-4.1.0 pluggy-1.3.0 pre-commit-3.0.4 pycodestyle-2.10.0 pyflakes-3.0.1 pyproject-api-1.6.1 pypubsub-4.0.3 pytest-7.2.1 pytest-cov-4.0.0 pyupgrade-3.3.1 pyyaml-5.3.1 tokenize-rt-5.2.0 tox-4.4.4 typing-extensions-4.9.0 virtualenv-20.25.0 wxpython-4.2.1
python3 -m black .
All done! ✨ 🍰 ✨
39 files left unchanged.
python3 -m flake8
./youtube_dl_gui/downloaders.py:463:60: E231 missing whitespace after ':'
./youtube_dl_gui/downloadmanager.py:225:55: E231 missing whitespace after ','
./youtube_dl_gui/utils.py:292:27: E231 missing whitespace after ':'
make: *** [Makefile:53: lint] Error 1
=> ERROR: yt-dlg-1.8.5_1: do_build: 'make' exited with 2
=> ERROR:   in do_build() at srcpkgs/yt-dlg/template:43

Any suggestions?

oleksis commented 8 months ago

@MechDR Thanks for the feedback. From the logs look like when run tool for linting flake8 is not happy.

Is in the plans for the next release test the code base with the new tools 🧰

MechDR commented 8 months ago

@oleksis I managed to fix those syntax errors as well, so now, wheel for wxPython 4.2.1 builds successfully. But, I have other problems now...

Successfully built pyyaml wxpython
Installing collected packages: distlib, typing-extensions, tokenize-rt, pyyaml, pypubsub, pyproject-api, pyflakes, pycodestyle, pluggy, platformdirs, pipdeptree, pillow, pathspec, nodeenv, mypy-extensions, mccabe, lxml, isort, iniconfig, identify, filelock, coverage, colorama, chardet, cfgv, cachetools, attrs, wxpython, virtualenv, pyupgrade, pytest, pip-tools, mypy, flake8, black, tox, pytest-cov, pre-commit
  Attempting uninstall: pip-tools
    Found existing installation: pip-tools 7.3.0
    Uninstalling pip-tools-7.3.0:
      Successfully uninstalled pip-tools-7.3.0
Successfully installed attrs-23.1.0 black-23.1.0 cachetools-5.3.2 cfgv-3.4.0 chardet-5.2.0 colorama-0.4.6 coverage-7.3.4 distlib-0.3.8 filelock-3.13.1 flake8-6.0.0 identify-2.5.33 iniconfig-2.0.0 isort-5.12.0 lxml-4.9.4 mccabe-0.7.0 mypy-1.0.0 mypy-extensions-1.0.0 nodeenv-1.8.0 pathspec-0.12.1 pillow-10.1.0 pip-tools-6.12.2 pipdeptree-2.3.3 platformdirs-4.1.0 pluggy-1.3.0 pre-commit-3.0.4 pycodestyle-2.10.0 pyflakes-3.0.1 pyproject-api-1.6.1 pypubsub-4.0.3 pytest-7.2.1 pytest-cov-4.0.0 pyupgrade-3.3.1 pyyaml-5.3.1 tokenize-rt-5.2.0 tox-4.4.4 typing-extensions-4.9.0 virtualenv-20.25.0 wxpython-4.2.1
python3 -m black .
All done! ✨ 🍰 ✨
39 files left unchanged.
python3 -m flake8
python3 -m pytest --cov-report term-missing --cov=youtube_dl_gui tests/ -vv
============================= test session starts ==============================
platform linux -- Python 3.12.1, pytest-7.2.1, pluggy-1.3.0 -- /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3
cachedir: .pytest_cache
rootdir: /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5
plugins: cov-4.0.0
collecting ... collected 131 items

tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options FAILED    [  0%]
tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options_extra_args FAILED [  1%]
tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans FAILED    [  2%]
tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_exist FAILED [  3%]
tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_numbers FAILED [  3%]
tests/test_2_ButtonsChoiceDialog.py::TestButtonsChoiceDialog::test_init_dark FAILED [  4%]
tests/test_3_MessageDialog.py::TestMessageDialog::test_init_dark FAILED  [  5%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_append FAILED     [  6%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_append_items FAILED [  6%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_clear FAILED      [  7%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_delete FAILED     [  8%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_get_value FAILED  [  9%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_init FAILED       [  9%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_false FAILED [ 10%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_true FAILED [ 11%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_false FAILED [ 12%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_true FAILED [ 12%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_header FAILED [ 13%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_item FAILED [ 14%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_header FAILED [ 15%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_invalid_string FAILED [ 16%]
tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_item FAILED [ 16%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_header FAILED [ 17%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_with_prefix FAILED [ 18%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_without_prefix FAILED [ 19%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_with_prefix FAILED [ 19%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_without_prefix FAILED [ 20%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append FAILED [ 21%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append_items FAILED [ 22%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_clear FAILED [ 22%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_delete FAILED [ 23%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_found FAILED [ 24%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_not_found FAILED [ 25%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_found FAILED [ 25%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_not_found FAILED [ 26%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_header FAILED [ 27%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item FAILED [ 28%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_negative_index FAILED [ 29%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_not_found FAILED [ 29%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection FAILED [ 30%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection_empty FAILED [ 31%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_insert_items FAILED [ 32%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_header FAILED [ 32%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_invalid_index FAILED [ 33%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_valid_index FAILED [ 34%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_header FAILED [ 35%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_item FAILED [ 35%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_header FAILED [ 36%]
tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_item FAILED [ 37%]
tests/test_ditem.py::TestItemInit::test_init PASSED                      [ 38%]
tests/test_ditem.py::TestGetFiles::test_get_files PASSED                 [ 38%]
tests/test_ditem.py::TestGetFiles::test_get_files_no_data PASSED         [ 39%]
tests/test_ditem.py::TestItemComparison::test_equal_false PASSED         [ 40%]
tests/test_ditem.py::TestItemComparison::test_equal_true PASSED          [ 41%]
tests/test_ditem.py::TestSetItemStage::test_set_stage_invalid PASSED     [ 41%]
tests/test_ditem.py::TestSetItemStage::test_set_stage_valid PASSED       [ 42%]
tests/test_ditem.py::TestUpdateStats::test_update_stats PASSED           [ 43%]
tests/test_ditem.py::TestUpdateStats::test_update_stats_empty_strings PASSED [ 44%]
tests/test_ditem.py::TestUpdateStats::test_update_stats_invalid_input PASSED [ 45%]
tests/test_ditem.py::TestUpdateStats::test_update_stats_not_string PASSED [ 45%]
tests/test_ditem.py::TestDownloadItemPrivate::test_calc_post_proc_size FAILED [ 46%]
tests/test_ditem.py::TestDownloadItemPrivate::test_set_stage PASSED      [ 47%]
tests/test_ditem.py::TestReset::test_reset_active_stage PASSED           [ 48%]
tests/test_ditem.py::TestReset::test_reset_completed_stage PASSED        [ 48%]
tests/test_ditem.py::TestReset::test_reset_error_stage PASSED            [ 49%]
tests/test_ditem.py::TestReset::test_reset_paused_stage PASSED           [ 50%]
tests/test_dlist.py::TestInit::test_init PASSED                          [ 51%]
tests/test_dlist.py::TestInit::test_init_empty PASSED                    [ 51%]
tests/test_dlist.py::TestInit::test_init_invalid_args PASSED             [ 52%]
tests/test_dlist.py::TestInsert::test_insert PASSED                      [ 53%]
tests/test_dlist.py::TestRemove::test_remove PASSED                      [ 54%]
tests/test_dlist.py::TestRemove::test_remove_active PASSED               [ 54%]
tests/test_dlist.py::TestRemove::test_remove_not_exist PASSED            [ 55%]
tests/test_dlist.py::TestFetchNext::test_fetch_next PASSED               [ 56%]
tests/test_dlist.py::TestFetchNext::test_fetch_next_empty_list PASSED    [ 57%]
tests/test_dlist.py::TestMoveUp::test_move_up PASSED                     [ 58%]
tests/test_dlist.py::TestMoveUp::test_move_up_already_on_top PASSED      [ 58%]
tests/test_dlist.py::TestMoveUp::test_move_up_not_exist PASSED           [ 59%]
tests/test_dlist.py::TestMoveDown::test_move_down PASSED                 [ 60%]
tests/test_dlist.py::TestMoveDown::test_move_down_already_on_bottom PASSED [ 61%]
tests/test_dlist.py::TestMoveDown::test_move_down_not_exist PASSED       [ 61%]
tests/test_dlist.py::TestGetItem::test_get_item PASSED                   [ 62%]
tests/test_dlist.py::TestGetItem::test_get_item_not_exist PASSED         [ 63%]
tests/test_dlist.py::TestGetLength::test_get_length PASSED               [ 64%]
tests/test_dlist.py::TestGetLength::test_get_length_empty_list PASSED    [ 64%]
tests/test_dlist.py::TestHasItem::test_has_item_false PASSED             [ 65%]
tests/test_dlist.py::TestHasItem::test_has_item_true PASSED              [ 66%]
tests/test_dlist.py::TestGetItems::test_get_items PASSED                 [ 67%]
tests/test_dlist.py::TestGetItems::test_get_items_empty_list PASSED      [ 67%]
tests/test_dlist.py::TestClear::test_clear PASSED                        [ 68%]
tests/test_dlist.py::TestChangeStage::test_change_stage PASSED           [ 69%]
tests/test_dlist.py::TestChangeStage::test_change_stage_id_not_exist PASSED [ 70%]
tests/test_dlist.py::TestIndex::test_index PASSED                        [ 70%]
tests/test_dlist.py::TestIndex::test_index_not_exist PASSED              [ 71%]
tests/test_dlist.py::TestSynchronizeDecorator::test_synchronize PASSED   [ 72%]
tests/test_downloaders.py::TestDownloaders::test_extract_data_playlist PASSED [ 73%]
tests/test_downloaders.py::TestDownloaders::test_extract_data_video PASSED [ 74%]
tests/test_downloadmanager.py::TestDownloadManager::test_downloadmanager PASSED [ 74%]
tests/test_downloadmanager.py::TestDownloadManager::test_init_check_sig PASSED [ 75%]
tests/test_logmanager.py::TestLogManager::test_init PASSED               [ 76%]
tests/test_logmanager.py::TestLogManager::test_log PASSED                [ 77%]
tests/test_optionsmanager.py::TestOptionsManager::test_init PASSED       [ 77%]
tests/test_optionsmanager.py::TestOptionsManager::test_save_to_file PASSED [ 78%]
tests/test_parsers.py::TestParse::test_parse_cmd_args_with_quotes PASSED [ 79%]
tests/test_parsers.py::TestParse::test_parse_to_audio_requirement_bug PASSED [ 80%]
tests/test_updatemanager.py::TestUpdateThread::test_downloadmanager PASSED [ 80%]
tests/test_updatemanager.py::TestUpdateThread::test_init_check_sig PASSED [ 81%]
tests/test_utils.py::TestUtils::test_decode_tuple PASSED                 [ 82%]
tests/test_utils.py::TestUtils::test_encode_tuple PASSED                 [ 83%]
tests/test_utils.py::TestUtils::test_get_config_path PASSED              [ 83%]
tests/test_utils.py::TestUtils::test_get_encoding SKIPPED (cp65001 encoding is only available on Windows) [ 84%]
tests/test_utils.py::TestUtils::test_get_encoding_error PASSED           [ 85%]
tests/test_utils.py::TestUtils::test_get_key PASSED                      [ 86%]
tests/test_utils.py::TestUtils::test_get_time PASSED                     [ 87%]
tests/test_utils.py::TestToBytes::test_to_bytes_bytes PASSED             [ 87%]
tests/test_utils.py::TestToBytes::test_to_bytes_gigabytes PASSED         [ 88%]
tests/test_utils.py::TestToBytes::test_to_bytes_kilobytes PASSED         [ 89%]
tests/test_utils.py::TestToBytes::test_to_bytes_megabytes PASSED         [ 90%]
tests/test_utils.py::TestToBytes::test_to_bytes_terabytes PASSED         [ 90%]
tests/test_utils.py::TestFormatBytes::test_format_bytes_bytes FAILED     [ 91%]
tests/test_utils.py::TestFormatBytes::test_format_bytes_gigabytes FAILED [ 92%]
tests/test_utils.py::TestFormatBytes::test_format_bytes_kilobytes FAILED [ 93%]
tests/test_utils.py::TestFormatBytes::test_format_bytes_megabytes FAILED [ 93%]
tests/test_utils.py::TestFormatBytes::test_format_bytes_terabytes FAILED [ 94%]
tests/test_utils.py::TestBuildCommand::test_build_command_with_spaces_linux PASSED [ 95%]
tests/test_utils.py::TestBuildCommand::test_build_command_with_spaces_windows PASSED [ 96%]
tests/test_utils.py::TestBuildCommand::test_build_command_without_spaces_linux PASSED [ 96%]
tests/test_utils.py::TestBuildCommand::test_build_command_without_spaces_windows PASSED [ 97%]
tests/test_utils.py::TestGetDefaultLang::test_get_default_lang PASSED    [ 98%]
tests/test_utils.py::TestGetDefaultLang::test_get_default_lang_empty PASSED [ 99%]
tests/test_utils.py::TestGetDefaultLang::test_get_default_lang_none PASSED [100%]

Do you think any of this is related to wxPython 4.2.1, as opposed to using 4.2.0? Here is the rest of the build log (too long for just a code tag).

```` platform linux -- Python 3.12.1, pytest-7.2.1, pluggy-1.3.0 -- /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/bin/python3 cachedir: .pytest_cache rootdir: /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5 plugins: cov-4.0.0 collecting ... collected 131 items tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options FAILED [ 0%] tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options_extra_args FAILED [ 1%] tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans FAILED [ 2%] tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_exist FAILED [ 3%] tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_numbers FAILED [ 3%] tests/test_2_ButtonsChoiceDialog.py::TestButtonsChoiceDialog::test_init_dark FAILED [ 4%] tests/test_3_MessageDialog.py::TestMessageDialog::test_init_dark FAILED [ 5%] tests/test_CustomComboBox.py::TestCustomComboBox::test_append FAILED [ 6%] tests/test_CustomComboBox.py::TestCustomComboBox::test_append_items FAILED [ 6%] tests/test_CustomComboBox.py::TestCustomComboBox::test_clear FAILED [ 7%] tests/test_CustomComboBox.py::TestCustomComboBox::test_delete FAILED [ 8%] tests/test_CustomComboBox.py::TestCustomComboBox::test_get_value FAILED [ 9%] tests/test_CustomComboBox.py::TestCustomComboBox::test_init FAILED [ 9%] tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_false FAILED [ 10%] tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_true FAILED [ 11%] tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_false FAILED [ 12%] tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_true FAILED [ 12%] tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_header FAILED [ 13%] tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_item FAILED [ 14%] tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_header FAILED [ 15%] tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_invalid_string FAILED [ 16%] tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_item FAILED [ 16%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_header FAILED [ 17%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_with_prefix FAILED [ 18%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_without_prefix FAILED [ 19%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_with_prefix FAILED [ 19%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_without_prefix FAILED [ 20%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append FAILED [ 21%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append_items FAILED [ 22%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_clear FAILED [ 22%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_delete FAILED [ 23%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_found FAILED [ 24%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_not_found FAILED [ 25%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_found FAILED [ 25%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_not_found FAILED [ 26%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_header FAILED [ 27%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item FAILED [ 28%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_negative_index FAILED [ 29%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_not_found FAILED [ 29%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection FAILED [ 30%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection_empty FAILED [ 31%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_insert_items FAILED [ 32%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_header FAILED [ 32%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_invalid_index FAILED [ 33%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_valid_index FAILED [ 34%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_header FAILED [ 35%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_item FAILED [ 35%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_header FAILED [ 36%] tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_item FAILED [ 37%] tests/test_ditem.py::TestItemInit::test_init PASSED [ 38%] tests/test_ditem.py::TestGetFiles::test_get_files PASSED [ 38%] tests/test_ditem.py::TestGetFiles::test_get_files_no_data PASSED [ 39%] tests/test_ditem.py::TestItemComparison::test_equal_false PASSED [ 40%] tests/test_ditem.py::TestItemComparison::test_equal_true PASSED [ 41%] tests/test_ditem.py::TestSetItemStage::test_set_stage_invalid PASSED [ 41%] tests/test_ditem.py::TestSetItemStage::test_set_stage_valid PASSED [ 42%] tests/test_ditem.py::TestUpdateStats::test_update_stats PASSED [ 43%] tests/test_ditem.py::TestUpdateStats::test_update_stats_empty_strings PASSED [ 44%] tests/test_ditem.py::TestUpdateStats::test_update_stats_invalid_input PASSED [ 45%] tests/test_ditem.py::TestUpdateStats::test_update_stats_not_string PASSED [ 45%] tests/test_ditem.py::TestDownloadItemPrivate::test_calc_post_proc_size FAILED [ 46%] tests/test_ditem.py::TestDownloadItemPrivate::test_set_stage PASSED [ 47%] tests/test_ditem.py::TestReset::test_reset_active_stage PASSED [ 48%] tests/test_ditem.py::TestReset::test_reset_completed_stage PASSED [ 48%] tests/test_ditem.py::TestReset::test_reset_error_stage PASSED [ 49%] tests/test_ditem.py::TestReset::test_reset_paused_stage PASSED [ 50%] tests/test_dlist.py::TestInit::test_init PASSED [ 51%] tests/test_dlist.py::TestInit::test_init_empty PASSED [ 51%] tests/test_dlist.py::TestInit::test_init_invalid_args PASSED [ 52%] tests/test_dlist.py::TestInsert::test_insert PASSED [ 53%] tests/test_dlist.py::TestRemove::test_remove PASSED [ 54%] tests/test_dlist.py::TestRemove::test_remove_active PASSED [ 54%] tests/test_dlist.py::TestRemove::test_remove_not_exist PASSED [ 55%] tests/test_dlist.py::TestFetchNext::test_fetch_next PASSED [ 56%] tests/test_dlist.py::TestFetchNext::test_fetch_next_empty_list PASSED [ 57%] tests/test_dlist.py::TestMoveUp::test_move_up PASSED [ 58%] tests/test_dlist.py::TestMoveUp::test_move_up_already_on_top PASSED [ 58%] tests/test_dlist.py::TestMoveUp::test_move_up_not_exist PASSED [ 59%] tests/test_dlist.py::TestMoveDown::test_move_down PASSED [ 60%] tests/test_dlist.py::TestMoveDown::test_move_down_already_on_bottom PASSED [ 61%] tests/test_dlist.py::TestMoveDown::test_move_down_not_exist PASSED [ 61%] tests/test_dlist.py::TestGetItem::test_get_item PASSED [ 62%] tests/test_dlist.py::TestGetItem::test_get_item_not_exist PASSED [ 63%] tests/test_dlist.py::TestGetLength::test_get_length PASSED [ 64%] tests/test_dlist.py::TestGetLength::test_get_length_empty_list PASSED [ 64%] tests/test_dlist.py::TestHasItem::test_has_item_false PASSED [ 65%] tests/test_dlist.py::TestHasItem::test_has_item_true PASSED [ 66%] tests/test_dlist.py::TestGetItems::test_get_items PASSED [ 67%] tests/test_dlist.py::TestGetItems::test_get_items_empty_list PASSED [ 67%] tests/test_dlist.py::TestClear::test_clear PASSED [ 68%] tests/test_dlist.py::TestChangeStage::test_change_stage PASSED [ 69%] tests/test_dlist.py::TestChangeStage::test_change_stage_id_not_exist PASSED [ 70%] tests/test_dlist.py::TestIndex::test_index PASSED [ 70%] tests/test_dlist.py::TestIndex::test_index_not_exist PASSED [ 71%] tests/test_dlist.py::TestSynchronizeDecorator::test_synchronize PASSED [ 72%] tests/test_downloaders.py::TestDownloaders::test_extract_data_playlist PASSED [ 73%] tests/test_downloaders.py::TestDownloaders::test_extract_data_video PASSED [ 74%] tests/test_downloadmanager.py::TestDownloadManager::test_downloadmanager PASSED [ 74%] tests/test_downloadmanager.py::TestDownloadManager::test_init_check_sig PASSED [ 75%] tests/test_logmanager.py::TestLogManager::test_init PASSED [ 76%] tests/test_logmanager.py::TestLogManager::test_log PASSED [ 77%] tests/test_optionsmanager.py::TestOptionsManager::test_init PASSED [ 77%] tests/test_optionsmanager.py::TestOptionsManager::test_save_to_file PASSED [ 78%] tests/test_parsers.py::TestParse::test_parse_cmd_args_with_quotes PASSED [ 79%] tests/test_parsers.py::TestParse::test_parse_to_audio_requirement_bug PASSED [ 80%] tests/test_updatemanager.py::TestUpdateThread::test_downloadmanager PASSED [ 80%] tests/test_updatemanager.py::TestUpdateThread::test_init_check_sig PASSED [ 81%] tests/test_utils.py::TestUtils::test_decode_tuple PASSED [ 82%] tests/test_utils.py::TestUtils::test_encode_tuple PASSED [ 83%] tests/test_utils.py::TestUtils::test_get_config_path PASSED [ 83%] tests/test_utils.py::TestUtils::test_get_encoding SKIPPED (cp65001 encoding is only available on Windows) [ 84%] tests/test_utils.py::TestUtils::test_get_encoding_error PASSED [ 85%] tests/test_utils.py::TestUtils::test_get_key PASSED [ 86%] tests/test_utils.py::TestUtils::test_get_time PASSED [ 87%] tests/test_utils.py::TestToBytes::test_to_bytes_bytes PASSED [ 87%] tests/test_utils.py::TestToBytes::test_to_bytes_gigabytes PASSED [ 88%] tests/test_utils.py::TestToBytes::test_to_bytes_kilobytes PASSED [ 89%] tests/test_utils.py::TestToBytes::test_to_bytes_megabytes PASSED [ 90%] tests/test_utils.py::TestToBytes::test_to_bytes_terabytes PASSED [ 90%] tests/test_utils.py::TestFormatBytes::test_format_bytes_bytes FAILED [ 91%] tests/test_utils.py::TestFormatBytes::test_format_bytes_gigabytes FAILED [ 92%] tests/test_utils.py::TestFormatBytes::test_format_bytes_kilobytes FAILED [ 93%] tests/test_utils.py::TestFormatBytes::test_format_bytes_megabytes FAILED [ 93%] tests/test_utils.py::TestFormatBytes::test_format_bytes_terabytes FAILED [ 94%] tests/test_utils.py::TestBuildCommand::test_build_command_with_spaces_linux PASSED [ 95%] tests/test_utils.py::TestBuildCommand::test_build_command_with_spaces_windows PASSED [ 96%] tests/test_utils.py::TestBuildCommand::test_build_command_without_spaces_linux PASSED [ 96%] tests/test_utils.py::TestBuildCommand::test_build_command_without_spaces_windows PASSED [ 97%] tests/test_utils.py::TestGetDefaultLang::test_get_default_lang PASSED [ 98%] tests/test_utils.py::TestGetDefaultLang::test_get_default_lang_empty PASSED [ 99%] tests/test_utils.py::TestGetDefaultLang::test_get_default_lang_none PASSED [100%] =================================== FAILURES =================================== ______________________ TestClipDialog.test_clean_options _______________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestClipDialog.test_clean_options_extra_args _________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________________ TestClipDialog.test_get_timespans _______________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________________ TestClipDialog.test_get_timespans_no_exist __________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestClipDialog.test_get_timespans_no_numbers _________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________________ TestButtonsChoiceDialog.test_init_dark ____________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _______________________ TestMessageDialog.test_init_dark _______________________ tests/wtc.py:15: in setUp self.app = wx.App() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ________________________ TestCustomComboBox.test_append ________________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _____________________ TestCustomComboBox.test_append_items _____________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ________________________ TestCustomComboBox.test_clear _________________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ________________________ TestCustomComboBox.test_delete ________________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________________ TestCustomComboBox.test_get_value _______________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________________ TestCustomComboBox.test_init _________________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestCustomComboBox.test_is_list_empty_false __________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________________ TestCustomComboBox.test_is_list_empty_true __________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestCustomComboBox.test_is_text_empty_false __________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________________ TestCustomComboBox.test_is_text_empty_true __________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestCustomComboBox.test_set_selection_header _________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________________ TestCustomComboBox.test_set_selection_item __________________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _____________ TestCustomComboBox.test_set_string_selection_header ______________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________ TestCustomComboBox.test_set_string_selection_invalid_string __________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________ TestCustomComboBox.test_set_string_selection_item _______________ self = def setUp(self) -> None: > self.app = wx.App() tests/test_CustomComboBox.py:19: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________________ TestListBoxWithHeaders.test_add_header ____________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _______________ TestListBoxWithHeaders.test_add_item_with_prefix _______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _____________ TestListBoxWithHeaders.test_add_item_without_prefix ______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________ TestListBoxWithHeaders.test_add_items_with_prefix _______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _____________ TestListBoxWithHeaders.test_add_items_without_prefix _____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________________ TestListBoxWithHeaders.test_append ______________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ___________________ TestListBoxWithHeaders.test_append_items ___________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________________ TestListBoxWithHeaders.test_clear _______________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________________ TestListBoxWithHeaders.test_delete ______________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _____________ TestListBoxWithHeaders.test_find_string_header_found _____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ___________ TestListBoxWithHeaders.test_find_string_header_not_found ___________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ______________ TestListBoxWithHeaders.test_find_string_item_found ______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________ TestListBoxWithHeaders.test_find_string_item_not_found ____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ________________ TestListBoxWithHeaders.test_get_string_header _________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestListBoxWithHeaders.test_get_string_item __________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________ TestListBoxWithHeaders.test_get_string_item_negative_index __________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________ TestListBoxWithHeaders.test_get_string_item_not_found _____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _______________ TestListBoxWithHeaders.test_get_string_selection _______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________ TestListBoxWithHeaders.test_get_string_selection_empty ____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ___________________ TestListBoxWithHeaders.test_insert_items ___________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _______________ TestListBoxWithHeaders.test_set_selection_header _______________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________ TestListBoxWithHeaders.test_set_selection_item_invalid_index _________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit __________ TestListBoxWithHeaders.test_set_selection_item_valid_index __________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ________________ TestListBoxWithHeaders.test_set_string_header _________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _________________ TestListBoxWithHeaders.test_set_string_item __________________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ___________ TestListBoxWithHeaders.test_set_string_selection_header ____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit ____________ TestListBoxWithHeaders.test_set_string_selection_item _____________ self = def setUp(self): > self.app = wx.App() tests/test_ListBoxWithHeaders.py:20: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = , redirect = False, filename = None useBestVisual = False, clearSigInt = True def __init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True): """ Construct a ``wx.App`` object. :param redirect: Should ``sys.stdout`` and ``sys.stderr`` be redirected? Defaults to False. If ``filename`` is None then output will be redirected to a window that pops up as needed. (You can control what kind of window is created for the output by resetting the class variable ``outputWindowClass`` to a class of your choosing.) :param filename: The name of a file to redirect output to, if redirect is True. :param useBestVisual: Should the app try to use the best available visual provided by the system (only relevant on systems that have more than one visual.) This parameter must be used instead of calling `SetUseBestVisual` later on because it must be set before the underlying GUI toolkit is initialized. :param clearSigInt: Should SIGINT be cleared? This allows the app to terminate upon a Ctrl-C in the console like other GUI apps will. :note: You should override OnInit to do application initialization to ensure that the system, toolkit and wxWidgets are fully initialized. """ PyApp.__init__(self) # make sure we can create a GUI if not self.IsDisplayAvailable(): if wx.Port == "__WXMAC__": msg = "This program needs access to the screen. Please run with a\n" \ "Framework build of python, and only when you are logged in\n" \ "on the main display of your Mac." elif wx.Port == "__WXGTK__": msg ="Unable to access the X Display, is $DISPLAY set properly?" else: msg = "Unable to create GUI" # TODO: more description is needed for wxMSW... > raise SystemExit(msg) E SystemExit: Unable to access the X Display, is $DISPLAY set properly? venv/lib/python3.12/site-packages/wx/core.py:2197: SystemExit _______________ TestDownloadItemPrivate.test_calc_post_proc_size _______________ self = def test_calc_post_proc_size(self): # REFACTOR Not an actual method # should transfer to TestUpdateStats ditem = DownloadItem("url", ["-f", "flv"]) ditem.update_stats( { "filename": "file.f123", "extension": ".webm", "filesize": "10.00MiB", "percent": "100%", "speed": "", "eta": "", "status": "Downloading", "path": "/home/user", } ) ditem.update_stats( { "filename": "file.f456", "extension": ".m4a", "filesize": "3.45MiB", "percent": "100%", "speed": "", "eta": "", "status": "Downloading", "path": "/home/user", } ) # Mimic youtube-dl post process behaviour ditem.update_stats( { "filename": "file", "extension": ".webm", "percent": "100%", "speed": "", "eta": "", "status": "Post Processing", } ) self.assertEqual(ditem.filesizes, [10485760.00, 3617587.20, 14103347.20]) > self.assertEqual( ditem.progress_stats, { "filename": "file", "extension": ".webm", "filesize": "13.45MiB", "percent": "100%", "speed": "-", "eta": "-", "status": "Post Processing", "playlist_size": "", "playlist_index": "", }, ) E AssertionError: {'fil[46 chars]e': ' 13.45MiB', 'percent': '100%', 'speed': '[82 chars]: ''} != {'fil[46 chars]e': '13.45MiB', 'percent': '100%', 'speed': '-[81 chars]: ''} E {'eta': '-', E 'extension': '.webm', E 'filename': 'file', E - 'filesize': ' 13.45MiB', E ? - E E + 'filesize': '13.45MiB', E 'percent': '100%', E 'playlist_index': '', E 'playlist_size': '', E 'speed': '-', E 'status': 'Post Processing'} tests/test_ditem.py:478: AssertionError ___________________ TestFormatBytes.test_format_bytes_bytes ____________________ self = def test_format_bytes_bytes(self): > self.assertEqual(utils.format_bytes(518.00), "518.00B") E AssertionError: ' 518.00B' != '518.00B' E - 518.00B E ? - E + 518.00B tests/test_utils.py:93: AssertionError _________________ TestFormatBytes.test_format_bytes_gigabytes __________________ self = def test_format_bytes_gigabytes(self): > self.assertEqual(utils.format_bytes(1073741824.00), "1.00GiB") E AssertionError: ' 1.00GiB' != '1.00GiB' E - 1.00GiB E ? - E + 1.00GiB tests/test_utils.py:102: AssertionError _________________ TestFormatBytes.test_format_bytes_kilobytes __________________ self = def test_format_bytes_kilobytes(self): > self.assertEqual(utils.format_bytes(1024.00), "1.00KiB") E AssertionError: ' 1.00KiB' != '1.00KiB' E - 1.00KiB E ? - E + 1.00KiB tests/test_utils.py:96: AssertionError _________________ TestFormatBytes.test_format_bytes_megabytes __________________ self = def test_format_bytes_megabytes(self): > self.assertEqual(utils.format_bytes(1048576.00), "1.00MiB") E AssertionError: ' 1.00MiB' != '1.00MiB' E - 1.00MiB E ? - E + 1.00MiB tests/test_utils.py:99: AssertionError _________________ TestFormatBytes.test_format_bytes_terabytes __________________ self = def test_format_bytes_terabytes(self): > self.assertEqual(utils.format_bytes(1099511627776.00), "1.00TiB") E AssertionError: ' 1.00TiB' != '1.00TiB' E - 1.00TiB E ? - E + 1.00TiB tests/test_utils.py:105: AssertionError =============================== warnings summary =============================== venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:675: 15 warnings /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:675: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead and isinstance(item.value, ast.Str) venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:677: 15 warnings /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/venv/lib/python3.12/site-packages/_pytest/assertion/rewrite.py:677: DeprecationWarning: Attribute s is deprecated and will be removed in Python 3.14; use value instead doc = item.value.s tests/test_1_ClipDialog.py: 5 warnings tests/test_2_ButtonsChoiceDialog.py: 1 warning tests/test_3_MessageDialog.py: 1 warning tests/test_CustomComboBox.py: 15 warnings tests/test_ListBoxWithHeaders.py: 27 warnings tests/test_ditem.py: 17 warnings tests/test_dlist.py: 29 warnings tests/test_downloaders.py: 2 warnings tests/test_downloadmanager.py: 2 warnings tests/test_logmanager.py: 2 warnings tests/test_optionsmanager.py: 2 warnings tests/test_parsers.py: 2 warnings tests/test_updatemanager.py: 2 warnings tests/test_utils.py: 23 warnings /usr/lib/python3.12/unittest/case.py:580: RuntimeWarning: TestResult has no addDuration method warnings.warn("TestResult has no addDuration method", tests/test_optionsmanager.py::TestOptionsManager::test_init /builddir/yt-dlg-1.8.5/youtube-dl-gui-1.8.5/youtube_dl_gui/utils.py:324: DeprecationWarning: 'locale.getdefaultlocale' is deprecated and slated for removal in Python 3.15. Use setlocale(), getencoding() and getlocale() instead. default_lang, _ = locale_getdefaultlocale() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html ---------- coverage: platform linux, python 3.12.1-final-0 ----------- Name Stmts Miss Cover Missing ----------------------------------------------------------------- youtube_dl_gui/darktheme.py 33 24 27% 14-23, 29-38, 44-57 youtube_dl_gui/downloaders.py 219 133 39% 45-49, 53-68, 72, 75-76, 130-138, 160-195, 199-219, 223, 228-229, 233-235, 239-258, 269-280, 284-285, 289-290, 294, 307-313, 322-347, 397, 437-438, 442-447, 451, 456-464, 479-483, 487-491 youtube_dl_gui/downloadmanager.py 314 78 75% 225, 351, 414, 420, 424, 432-454, 458, 482-485, 505, 511-515, 518, 530, 568-603, 607-623, 637-639, 643, 647-648, 652, 656, 660-664, 669, 673-674, 686-687, 701, 735-741, 746 youtube_dl_gui/logmanager.py 29 5 83% 58-60, 64-65, 74 youtube_dl_gui/optionsmanager.py 70 19 73% 322, 329, 337-338, 342-346, 436, 439, 455, 459, 464, 472-481 youtube_dl_gui/parsers.py 92 11 88% 239, 242-249, 268, 287, 292 youtube_dl_gui/updatemanager.py 65 8 88% 75-76, 97-98, 119-122, 149 youtube_dl_gui/utils.py 135 51 62% 23, 27, 50-53, 60-65, 75, 86-91, 108, 123, 143-180, 205, 224-226, 239-249, 260-268 youtube_dl_gui/widgets.py 417 332 20% 26, 68-82, 86-88, 92-94, 97, 100-102, 107-113, 116, 119-125, 128-129, 132-135, 138-144, 147-155, 160-163, 166-167, 170-175, 180-181, 189-192, 195-196, 206-210, 213-218, 222-224, 230, 234-243, 246, 254, 257, 260, 263, 266-270, 273-280, 283-284, 287, 290-292, 298-301, 304-308, 311-316, 319-320, 325-336, 339-342, 345-346, 349-352, 363-411, 414, 425-496, 499, 513-593, 600-613, 623-651, 654-663, 676-719, 722, 726-730, 733-734, 752-767, 771-772 ----------------------------------------------------------------- TOTAL 1374 661 52% =========================== short test summary info ============================ FAILED tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options - Syste... FAILED tests/test_1_ClipDialog.py::TestClipDialog::test_clean_options_extra_args FAILED tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans - Syste... FAILED tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_exist FAILED tests/test_1_ClipDialog.py::TestClipDialog::test_get_timespans_no_numbers FAILED tests/test_2_ButtonsChoiceDialog.py::TestButtonsChoiceDialog::test_init_dark FAILED tests/test_3_MessageDialog.py::TestMessageDialog::test_init_dark - Sys... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_append - System... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_append_items - ... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_clear - SystemE... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_delete - System... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_get_value - Sys... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_init - SystemEx... FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_false FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_is_list_empty_true FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_false FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_is_text_empty_true FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_header FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_set_selection_item FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_header FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_invalid_string FAILED tests/test_CustomComboBox.py::TestCustomComboBox::test_set_string_selection_item FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_header FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_with_prefix FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_item_without_prefix FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_with_prefix FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_add_items_without_prefix FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_append_items FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_clear FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_delete FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_found FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_header_not_found FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_found FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_find_string_item_not_found FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_header FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_negative_index FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_item_not_found FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_get_string_selection_empty FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_insert_items FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_header FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_invalid_index FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_selection_item_valid_index FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_header FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_item FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_header FAILED tests/test_ListBoxWithHeaders.py::TestListBoxWithHeaders::test_set_string_selection_item FAILED tests/test_ditem.py::TestDownloadItemPrivate::test_calc_post_proc_size FAILED tests/test_utils.py::TestFormatBytes::test_format_bytes_bytes - Assert... FAILED tests/test_utils.py::TestFormatBytes::test_format_bytes_gigabytes - As... FAILED tests/test_utils.py::TestFormatBytes::test_format_bytes_kilobytes - As... FAILED tests/test_utils.py::TestFormatBytes::test_format_bytes_megabytes - As... FAILED tests/test_utils.py::TestFormatBytes::test_format_bytes_terabytes - As... =========== 55 failed, 75 passed, 1 skipped, 161 warnings in 18.09s ============ make: *** [Makefile:72: test-cov] Segmentation fault ````
oleksis commented 8 months ago

Good work! Thanks πŸ™πŸΎ Next iteration is test all the development tools and yt-dlg with the last Python today (3.12.1) and updating

MechDR commented 8 months ago

@oleksis If you'd like, I can post the template, the source corrections are there.

oleksis commented 8 months ago

That will great and if you can open a PR related to this issue πŸ‘πŸΎ

MechDR commented 8 months ago

@oleksis OK.

Some are related to general syntax issues, others to syntax changes in python 3.12 and above... maybe it's best if I split them up in a few (most probably 2) PRs?

Also, I'll try and use terminal git (still learning), but is it OK if I just use the web UI if things get too hairy?