urwid 3.0.1__tar.gz → 3.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- urwid-3.0.5/.devcontainer/dev.dockerfile +15 -0
- {urwid-3.0.1 → urwid-3.0.5}/.devcontainer/devcontainer.json +6 -1
- {urwid-3.0.1 → urwid-3.0.5}/.github/workflows/documentation.yml +3 -3
- {urwid-3.0.1 → urwid-3.0.5}/.github/workflows/isolated_static_check.yml +11 -31
- {urwid-3.0.1 → urwid-3.0.5}/.github/workflows/labels.yml +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/.github/workflows/pythonpackage.yml +27 -42
- {urwid-3.0.1 → urwid-3.0.5}/.github/workflows/yamllint.yml +2 -2
- {urwid-3.0.1 → urwid-3.0.5}/.pre-commit-config.yaml +7 -21
- {urwid-3.0.1 → urwid-3.0.5}/PKG-INFO +8 -5
- {urwid-3.0.1 → urwid-3.0.5}/README.rst +4 -1
- {urwid-3.0.1 → urwid-3.0.5}/classifiers.txt +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/docs/changelog.rst +71 -0
- urwid-3.0.5/docs/examples/edit_text.txt +0 -0
- {urwid-3.0.1 → urwid-3.0.5/docs}/examples/palette_test.py +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/real_edit.py +3 -2
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wanat_multi.py +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/examples/asyncio_socket_server.py +7 -7
- {urwid-3.0.1 → urwid-3.0.5}/examples/edit.py +3 -2
- {urwid-3.0.1 → urwid-3.0.5}/examples/lcd_cf635.py +1 -1
- {urwid-3.0.1/docs → urwid-3.0.5}/examples/palette_test.py +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/examples/twisted_serve_ssh.py +3 -3
- urwid-3.0.5/pylint-requirements.txt +1 -0
- {urwid-3.0.1 → urwid-3.0.5}/pyproject.toml +11 -3
- urwid-3.0.5/requirements.txt +1 -0
- urwid-3.0.5/ruff-requirements.txt +1 -0
- urwid-3.0.5/tests/test_grapheme_clusters.py +210 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_scrollable.py +20 -1
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_text_layout.py +15 -3
- {urwid-3.0.1 → urwid-3.0.5}/tox.ini +7 -20
- {urwid-3.0.1 → urwid-3.0.5}/urwid/__init__.py +29 -16
- {urwid-3.0.1 → urwid-3.0.5}/urwid/canvas.py +6 -6
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/__init__.py +53 -48
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_posix_raw_display.py +4 -4
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_raw_display_base.py +13 -11
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/common.py +19 -19
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/curses.py +2 -4
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/escape.py +15 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/lcd.py +4 -4
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/web.py +4 -4
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/asyncio_loop.py +3 -1
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/main_loop.py +5 -5
- {urwid-3.0.1 → urwid-3.0.5}/urwid/font.py +6 -4
- {urwid-3.0.1 → urwid-3.0.5}/urwid/numedit.py +65 -65
- {urwid-3.0.1 → urwid-3.0.5}/urwid/signals.py +17 -26
- {urwid-3.0.1 → urwid-3.0.5}/urwid/split_repr.py +9 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/str_util.py +90 -42
- {urwid-3.0.1 → urwid-3.0.5}/urwid/text_layout.py +8 -6
- {urwid-3.0.1 → urwid-3.0.5}/urwid/util.py +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/urwid/version.py +16 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/vterm.py +2 -2
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/attr_map.py +10 -10
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/attr_wrap.py +3 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/big_text.py +0 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/box_adapter.py +2 -2
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/divider.py +6 -6
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/edit.py +42 -42
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/filler.py +8 -8
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/frame.py +3 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/line_box.py +19 -19
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/listbox.py +4 -1
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/monitored_list.py +69 -45
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/padding.py +20 -20
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/progress_bar.py +7 -7
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/scrollable.py +1 -1
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/solid_fill.py +3 -3
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/text.py +44 -30
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/widget.py +6 -6
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/widget_decoration.py +2 -2
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/wimp.py +61 -61
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/PKG-INFO +8 -5
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/SOURCES.txt +1 -2
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/requires.txt +1 -1
- urwid-3.0.1/.devcontainer/dev.dockerfile +0 -8
- urwid-3.0.1/black-requirements.txt +0 -1
- urwid-3.0.1/docs/examples/edit_text.txt +0 -11
- urwid-3.0.1/isort-requirements.txt +0 -1
- urwid-3.0.1/pylint-requirements.txt +0 -1
- urwid-3.0.1/requirements.txt +0 -1
- urwid-3.0.1/ruff-requirements.txt +0 -1
- {urwid-3.0.1 → urwid-3.0.5}/.coveralls.yml +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.dockerignore +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.editorconfig +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/CODE_OF_CONDUCT.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/ISSUE_TEMPLATE/docs.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/dependabot.yml +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/labeler.yml +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.github/release.yml +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.gitignore +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/.yamllint.yml +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/COPYING +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/MANIFEST.in +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/Makefile +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/conf.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/bigtext.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/bigtext.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/bigtext1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/bigtext2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/bigtext3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/browse.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/browse.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/browse1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/browse2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/edit.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/edit.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/edit1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/edit2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/graph.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/graph.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/graph1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/graph2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/index.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/palette_test.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/palette_test1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/palette_test2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/pop_up.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/pop_up.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/pop_up1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/pop_up2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/real_browse.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/subproc.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/subproc.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/subproc1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/subproc2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/subproc2.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/tour.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/tour.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/tour1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/examples/tour2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/index.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/bright_combinations.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/bright_combinations.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/bright_combinations1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/canvascache.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/displayattributes.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/displaymodules.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/encodings.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/display_modules.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/introduction.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/urwid_widgets.svgz +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/urwid_widgets_1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/urwid_widgets_1.xcf +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/urwid_widgets_2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/urwid_widgets_2.xcf +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/images/widget_layout.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/index.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/mainloop.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/overview.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/safe_combinations.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/safe_combinations.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/safe_combinations1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/textlayout.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/userinput.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wanat.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wcur1.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wcur2.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/widgets.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wmod.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/manual/wsel.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/attrspec.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/canvas.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/command_map.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/constants.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/deprecated.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/display_modules.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/exceptions.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/global_settings.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/index.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/list_walkers.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/main_loop.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/meta.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/signals.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/text_layout.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/reference/widget.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/compile_pngs.sh +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/screenshots.sh +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/static/.placeholder +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/templates/indexcontent.html +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/templates/indexsidebar.html +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tools/templates/localtoc.html +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/adventure4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/cmenu4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/highcolors.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/highcolors.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/highcolors1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/hmenu4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/index.rst +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/input5.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/menu25.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/minimal.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/minimal.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/minimal1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/multiple4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/qa.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/qa.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/qa1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/qa2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/qa3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/sig4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/smenu.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/smenu.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/smenu1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/smenu2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/smenu3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr.py.xdotool +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr1.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr2.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr3.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/tutorial/urwid_attr4.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/docs/urwid-logo.png +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/bigtext.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/browse.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/calc.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/dialog.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/fib.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/graph.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/input_test.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/pop_up.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/subproc.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/subproc2.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/terminal.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/tour.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/treesample.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/examples/twisted_serve_ssh.tac +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/setup.cfg +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/test_requirements.txt +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/__init__.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_canvas.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_columns.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_container.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_doctests.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_escapes.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_event_loops.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_filler.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_floatedit.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_font.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_frame.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_graphics.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_grid_flow.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_line_box.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_listbox.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_main_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_moved_imports.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_overlay.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_padding.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_pile.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_raw_display.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_signals.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_str_util.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_tree.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_util.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_vterm.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/test_widget.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/tests/util.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/command_map.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/container.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/decoration.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_web.css +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_web.js +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_win32.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/_win32_raw_display.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/html_fragment.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/display/raw.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/__init__.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/abstract_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/glib_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/select_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/tornado_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/trio_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/twisted_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/event_loop/zmq_loop.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/graphics.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/__init__.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/bar_graph.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/columns.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/constants.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/container.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/grid_flow.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/overlay.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/pile.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/popup.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/widget/treetools.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid/wimp.py +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/dependency_links.txt +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/not-zip-safe +0 -0
- {urwid-3.0.1 → urwid-3.0.5}/urwid.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
FROM ubuntu:24.04
|
|
2
|
+
RUN apt-get update -y \
|
|
3
|
+
&& apt-get upgrade -y \
|
|
4
|
+
&& apt-get install -y \
|
|
5
|
+
python3-dev \
|
|
6
|
+
python3-pip \
|
|
7
|
+
python3-virtualenv \
|
|
8
|
+
python3-gi \
|
|
9
|
+
python3-gi-cairo \
|
|
10
|
+
gobject-introspection \
|
|
11
|
+
libgirepository-2.0-dev \
|
|
12
|
+
libcairo2-dev \
|
|
13
|
+
&& apt-get clean
|
|
14
|
+
RUN mkdir -p ~/.virtualenvs \
|
|
15
|
+
&& virtualenv --download ~/.virtualenvs/urwid
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"ghcr.io/devcontainers/features/github-cli": {}
|
|
7
7
|
},
|
|
8
8
|
"customizations": {
|
|
9
|
+
"jetbrains": {
|
|
10
|
+
"settings": {
|
|
11
|
+
"com.intellij:app:Vcs-Log-App-Settings.show_changes_from_parents": true
|
|
12
|
+
}
|
|
13
|
+
},
|
|
9
14
|
// Configure properties specific to VS Code.
|
|
10
15
|
"vscode": {
|
|
11
16
|
// Set *default* container specific settings.json values on container create.
|
|
@@ -32,4 +37,4 @@
|
|
|
32
37
|
"init": true,
|
|
33
38
|
"postCreateCommand": "~/.virtualenvs/urwid/bin/pip3 install isort black ruff pylint refurb mypy",
|
|
34
39
|
"postStartCommand": "~/.virtualenvs/urwid/bin/pip3 install -r test_requirements.txt PyGObject && ~/.virtualenvs/urwid/bin/pip3 install -U -e ."
|
|
35
|
-
}
|
|
40
|
+
}
|
|
@@ -23,11 +23,11 @@ jobs:
|
|
|
23
23
|
Build:
|
|
24
24
|
runs-on: ubuntu-latest
|
|
25
25
|
steps:
|
|
26
|
-
- uses: actions/checkout@
|
|
26
|
+
- uses: actions/checkout@v6
|
|
27
27
|
with:
|
|
28
28
|
fetch-depth: 0 # need for setuptools_scm
|
|
29
29
|
- name: Set up Python
|
|
30
|
-
uses: actions/setup-python@
|
|
30
|
+
uses: actions/setup-python@v6
|
|
31
31
|
with:
|
|
32
32
|
python-version: '3.x'
|
|
33
33
|
cache: 'pip'
|
|
@@ -44,7 +44,7 @@ jobs:
|
|
|
44
44
|
run: pip install -e .
|
|
45
45
|
- name: Build documentation
|
|
46
46
|
run: sphinx-build docs build/documentation
|
|
47
|
-
- uses: actions/upload-artifact@
|
|
47
|
+
- uses: actions/upload-artifact@v6
|
|
48
48
|
with:
|
|
49
49
|
path: build/documentation
|
|
50
50
|
name: documentation
|
|
@@ -4,57 +4,37 @@ on:
|
|
|
4
4
|
pull_request:
|
|
5
5
|
paths:
|
|
6
6
|
- "ruff-requirements.txt"
|
|
7
|
-
- "black-requirements.txt"
|
|
8
|
-
- "isort-requirements.txt"
|
|
9
7
|
|
|
10
8
|
concurrency:
|
|
11
9
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
12
10
|
cancel-in-progress: true
|
|
13
11
|
|
|
14
12
|
jobs:
|
|
15
|
-
|
|
16
|
-
name: Validate
|
|
13
|
+
Ruff-format:
|
|
14
|
+
name: Validate formatting
|
|
17
15
|
runs-on: ubuntu-latest
|
|
18
16
|
steps:
|
|
19
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v6
|
|
20
18
|
- name: Set up Python
|
|
21
|
-
uses: actions/setup-python@
|
|
19
|
+
uses: actions/setup-python@v6
|
|
22
20
|
with:
|
|
23
21
|
python-version: '3.x'
|
|
24
22
|
cache: 'pip'
|
|
25
23
|
- name: Install dependencies
|
|
26
24
|
run: |
|
|
27
25
|
python -m pip install --upgrade pip
|
|
28
|
-
pip install --upgrade -r
|
|
29
|
-
- name: Check
|
|
30
|
-
run: |
|
|
31
|
-
isort --check --diff .
|
|
32
|
-
|
|
33
|
-
Black:
|
|
34
|
-
name: Validate black formatting
|
|
35
|
-
runs-on: ubuntu-latest
|
|
36
|
-
steps:
|
|
37
|
-
- uses: actions/checkout@v4
|
|
38
|
-
- name: Set up Python
|
|
39
|
-
uses: actions/setup-python@v5
|
|
40
|
-
with:
|
|
41
|
-
python-version: '3.x'
|
|
42
|
-
cache: 'pip'
|
|
43
|
-
- name: Install dependencies
|
|
44
|
-
run: |
|
|
45
|
-
python -m pip install --upgrade pip
|
|
46
|
-
pip install --upgrade -r black-requirements.txt
|
|
47
|
-
- name: Check code style with black
|
|
26
|
+
pip install --upgrade -r ruff-requirements.txt
|
|
27
|
+
- name: Check code style with ruff
|
|
48
28
|
run: |
|
|
49
|
-
|
|
29
|
+
ruff format --check .
|
|
50
30
|
|
|
51
31
|
Ruff:
|
|
52
32
|
name: Check with Ruff
|
|
53
33
|
runs-on: ubuntu-latest
|
|
54
34
|
steps:
|
|
55
|
-
- uses: actions/checkout@
|
|
35
|
+
- uses: actions/checkout@v6
|
|
56
36
|
- name: Set up Python
|
|
57
|
-
uses: actions/setup-python@
|
|
37
|
+
uses: actions/setup-python@v6
|
|
58
38
|
with:
|
|
59
39
|
python-version: '3.x'
|
|
60
40
|
cache: 'pip'
|
|
@@ -70,14 +50,14 @@ jobs:
|
|
|
70
50
|
name: Check with pylint
|
|
71
51
|
runs-on: ubuntu-latest
|
|
72
52
|
steps:
|
|
73
|
-
- uses: actions/checkout@
|
|
53
|
+
- uses: actions/checkout@v6
|
|
74
54
|
- name: Install Ubuntu dependencies
|
|
75
55
|
run: |
|
|
76
56
|
sudo apt-get -qq update
|
|
77
57
|
sudo apt-get install -y python3-dev python3-gi python3-gi-cairo
|
|
78
58
|
sudo apt-get install -y gobject-introspection libgirepository-2.0-dev libcairo2-dev
|
|
79
59
|
- name: Set up Python
|
|
80
|
-
uses: actions/setup-python@
|
|
60
|
+
uses: actions/setup-python@v6
|
|
81
61
|
with:
|
|
82
62
|
python-version: '3.x'
|
|
83
63
|
cache: 'pip'
|
|
@@ -26,49 +26,31 @@ concurrency:
|
|
|
26
26
|
cancel-in-progress: true
|
|
27
27
|
|
|
28
28
|
jobs:
|
|
29
|
-
|
|
30
|
-
name: Validate
|
|
29
|
+
Ruff-format:
|
|
30
|
+
name: Validate formatting
|
|
31
31
|
runs-on: ubuntu-latest
|
|
32
32
|
steps:
|
|
33
|
-
- uses: actions/checkout@
|
|
33
|
+
- uses: actions/checkout@v6
|
|
34
34
|
- name: Set up Python
|
|
35
|
-
uses: actions/setup-python@
|
|
35
|
+
uses: actions/setup-python@v6
|
|
36
36
|
with:
|
|
37
37
|
python-version: '3.x'
|
|
38
38
|
cache: 'pip'
|
|
39
39
|
- name: Install dependencies
|
|
40
40
|
run: |
|
|
41
41
|
python -m pip install --upgrade pip
|
|
42
|
-
pip install --upgrade -r
|
|
43
|
-
- name: Check
|
|
44
|
-
run: |
|
|
45
|
-
isort --check --diff .
|
|
46
|
-
|
|
47
|
-
Black:
|
|
48
|
-
name: Validate black formatting
|
|
49
|
-
runs-on: ubuntu-latest
|
|
50
|
-
steps:
|
|
51
|
-
- uses: actions/checkout@v4
|
|
52
|
-
- name: Set up Python
|
|
53
|
-
uses: actions/setup-python@v5
|
|
54
|
-
with:
|
|
55
|
-
python-version: '3.x'
|
|
56
|
-
cache: 'pip'
|
|
57
|
-
- name: Install dependencies
|
|
58
|
-
run: |
|
|
59
|
-
python -m pip install --upgrade pip
|
|
60
|
-
pip install --upgrade -r black-requirements.txt
|
|
61
|
-
- name: Check code style with black
|
|
42
|
+
pip install --upgrade -r ruff-requirements.txt
|
|
43
|
+
- name: Check code style with ruff
|
|
62
44
|
run: |
|
|
63
|
-
|
|
45
|
+
ruff format --check .
|
|
64
46
|
|
|
65
47
|
Ruff:
|
|
66
48
|
name: Check with Ruff
|
|
67
49
|
runs-on: ubuntu-latest
|
|
68
50
|
steps:
|
|
69
|
-
- uses: actions/checkout@
|
|
51
|
+
- uses: actions/checkout@v6
|
|
70
52
|
- name: Set up Python
|
|
71
|
-
uses: actions/setup-python@
|
|
53
|
+
uses: actions/setup-python@v6
|
|
72
54
|
with:
|
|
73
55
|
python-version: '3.x'
|
|
74
56
|
cache: 'pip'
|
|
@@ -84,14 +66,14 @@ jobs:
|
|
|
84
66
|
name: Check with pylint
|
|
85
67
|
runs-on: ubuntu-latest
|
|
86
68
|
steps:
|
|
87
|
-
- uses: actions/checkout@
|
|
69
|
+
- uses: actions/checkout@v6
|
|
88
70
|
- name: Install Ubuntu dependencies
|
|
89
71
|
run: |
|
|
90
72
|
sudo apt-get -qq update
|
|
91
73
|
sudo apt-get install -y python3-dev python3-gi python3-gi-cairo
|
|
92
74
|
sudo apt-get install -y gobject-introspection libgirepository-2.0-dev libcairo2-dev
|
|
93
75
|
- name: Set up Python
|
|
94
|
-
uses: actions/setup-python@
|
|
76
|
+
uses: actions/setup-python@v6
|
|
95
77
|
with:
|
|
96
78
|
python-version: '3.x'
|
|
97
79
|
cache: 'pip'
|
|
@@ -106,7 +88,7 @@ jobs:
|
|
|
106
88
|
run: pylint --output-format=github urwid
|
|
107
89
|
|
|
108
90
|
Test:
|
|
109
|
-
needs: [
|
|
91
|
+
needs: [ Ruff-format, Ruff, PyLint ]
|
|
110
92
|
runs-on: ${{ matrix.os }}
|
|
111
93
|
strategy:
|
|
112
94
|
max-parallel: 6
|
|
@@ -114,14 +96,17 @@ jobs:
|
|
|
114
96
|
os: [ "ubuntu-latest", "windows-latest" ]
|
|
115
97
|
# , "macos-latest"
|
|
116
98
|
# enable macOS only if OS specific branch will be added
|
|
117
|
-
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ]
|
|
99
|
+
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "3.14" ]
|
|
100
|
+
exclude:
|
|
101
|
+
- os: "windows-latest"
|
|
102
|
+
python-version: "3.14"
|
|
118
103
|
|
|
119
104
|
steps:
|
|
120
|
-
- uses: actions/checkout@
|
|
105
|
+
- uses: actions/checkout@v6
|
|
121
106
|
with:
|
|
122
107
|
fetch-depth: 0 # need for setuptools_scm
|
|
123
108
|
- name: Set up Python ${{ matrix.python-version }}
|
|
124
|
-
uses: actions/setup-python@
|
|
109
|
+
uses: actions/setup-python@v6
|
|
125
110
|
with:
|
|
126
111
|
python-version: ${{ matrix.python-version }}
|
|
127
112
|
allow-prereleases: true
|
|
@@ -170,14 +155,14 @@ jobs:
|
|
|
170
155
|
|
|
171
156
|
build:
|
|
172
157
|
name: Build distribution
|
|
173
|
-
needs: [ Test,
|
|
158
|
+
needs: [ Test, Ruff-format, Ruff, PyLint ]
|
|
174
159
|
runs-on: ubuntu-latest
|
|
175
160
|
steps:
|
|
176
|
-
- uses: actions/checkout@
|
|
161
|
+
- uses: actions/checkout@v6
|
|
177
162
|
with:
|
|
178
163
|
fetch-depth: 0 # need for setuptools_scm
|
|
179
164
|
|
|
180
|
-
- uses: actions/setup-python@
|
|
165
|
+
- uses: actions/setup-python@v6
|
|
181
166
|
with:
|
|
182
167
|
python-version: "3.x"
|
|
183
168
|
|
|
@@ -187,13 +172,13 @@ jobs:
|
|
|
187
172
|
- name: Build dist
|
|
188
173
|
run: python -m build
|
|
189
174
|
|
|
190
|
-
- uses: actions/upload-artifact@
|
|
175
|
+
- uses: actions/upload-artifact@v6
|
|
191
176
|
with:
|
|
192
177
|
path: dist/*.tar.gz
|
|
193
178
|
name: built-sdist
|
|
194
179
|
retention-days: 3
|
|
195
180
|
|
|
196
|
-
- uses: actions/upload-artifact@
|
|
181
|
+
- uses: actions/upload-artifact@v6
|
|
197
182
|
with:
|
|
198
183
|
path: dist/*.whl
|
|
199
184
|
name: built-bdist
|
|
@@ -204,9 +189,9 @@ jobs:
|
|
|
204
189
|
runs-on: ubuntu-latest
|
|
205
190
|
needs: [ build ]
|
|
206
191
|
steps:
|
|
207
|
-
- uses: actions/checkout@
|
|
192
|
+
- uses: actions/checkout@v6
|
|
208
193
|
- name: Set up Python
|
|
209
|
-
uses: actions/setup-python@
|
|
194
|
+
uses: actions/setup-python@v6
|
|
210
195
|
with:
|
|
211
196
|
python-version: '3.x'
|
|
212
197
|
cache: 'pip'
|
|
@@ -214,7 +199,7 @@ jobs:
|
|
|
214
199
|
run: |
|
|
215
200
|
python -m pip install --upgrade pip
|
|
216
201
|
pip install --upgrade twine
|
|
217
|
-
- uses: actions/download-artifact@
|
|
202
|
+
- uses: actions/download-artifact@v7
|
|
218
203
|
with:
|
|
219
204
|
# unpacks default artifact into dist/
|
|
220
205
|
# if `name: wheels` is omitted, the action will create extra parent dir
|
|
@@ -239,7 +224,7 @@ jobs:
|
|
|
239
224
|
permissions:
|
|
240
225
|
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
241
226
|
steps:
|
|
242
|
-
- uses: actions/download-artifact@
|
|
227
|
+
- uses: actions/download-artifact@v7
|
|
243
228
|
with:
|
|
244
229
|
pattern: built-*
|
|
245
230
|
merge-multiple: true
|
|
@@ -10,9 +10,9 @@ jobs:
|
|
|
10
10
|
check:
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
steps:
|
|
13
|
-
- uses: actions/checkout@
|
|
13
|
+
- uses: actions/checkout@v6
|
|
14
14
|
- name: Set up Python
|
|
15
|
-
uses: actions/setup-python@
|
|
15
|
+
uses: actions/setup-python@v6
|
|
16
16
|
with:
|
|
17
17
|
python-version: '3.x'
|
|
18
18
|
cache: 'pip'
|
|
@@ -1,35 +1,21 @@
|
|
|
1
1
|
repos:
|
|
2
2
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
-
rev:
|
|
3
|
+
rev: v6.0.0
|
|
4
4
|
hooks:
|
|
5
5
|
- id: check-yaml
|
|
6
6
|
- id: end-of-file-fixer
|
|
7
7
|
- id: trailing-whitespace
|
|
8
8
|
- id: mixed-line-ending
|
|
9
9
|
|
|
10
|
-
- repo: https://github.com/pycqa/isort
|
|
11
|
-
rev: 6.0.1
|
|
12
|
-
hooks:
|
|
13
|
-
- id: isort
|
|
14
|
-
name: isort (python)
|
|
15
|
-
- id: isort
|
|
16
|
-
name: isort (cython)
|
|
17
|
-
types: [cython]
|
|
18
|
-
- id: isort
|
|
19
|
-
name: isort (pyi)
|
|
20
|
-
types: [pyi]
|
|
21
|
-
|
|
22
|
-
- repo: https://github.com/psf/black
|
|
23
|
-
rev: 25.1.0
|
|
24
|
-
hooks:
|
|
25
|
-
- id: black
|
|
26
|
-
|
|
27
10
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
28
11
|
# Ruff version.
|
|
29
|
-
rev: v0.
|
|
12
|
+
rev: v0.14.5
|
|
30
13
|
hooks:
|
|
31
|
-
|
|
32
|
-
|
|
14
|
+
# Run the linter.
|
|
15
|
+
- id: ruff-check
|
|
16
|
+
args: [ --fix ]
|
|
17
|
+
# Run the formatter.
|
|
18
|
+
- id: ruff-format
|
|
33
19
|
|
|
34
20
|
- repo: https://github.com/adrienverge/yamllint.git
|
|
35
21
|
rev: v1.37.1
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: urwid
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.5
|
|
4
4
|
Summary: A full-featured console (xterm et al.) user interface library
|
|
5
5
|
Author-email: Ian Ward <ian@excess.org>
|
|
6
|
-
License: LGPL-2.1-only
|
|
6
|
+
License-Expression: LGPL-2.1-only
|
|
7
7
|
Project-URL: Homepage, https://urwid.org/
|
|
8
8
|
Project-URL: Documentation, https://urwid.org/manual/index.html
|
|
9
9
|
Project-URL: Repository, https://github.com/urwid/urwid
|
|
@@ -14,7 +14,6 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
14
14
|
Classifier: Environment :: Console
|
|
15
15
|
Classifier: Environment :: Console :: Curses
|
|
16
16
|
Classifier: Intended Audience :: Developers
|
|
17
|
-
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
|
|
18
17
|
Classifier: Operating System :: POSIX
|
|
19
18
|
Classifier: Operating System :: Unix
|
|
20
19
|
Classifier: Operating System :: MacOS :: MacOS X
|
|
@@ -27,13 +26,14 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
27
26
|
Classifier: Programming Language :: Python :: 3.11
|
|
28
27
|
Classifier: Programming Language :: Python :: 3.12
|
|
29
28
|
Classifier: Programming Language :: Python :: 3.13
|
|
29
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
30
30
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
31
31
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
32
32
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
33
33
|
Requires-Python: >=3.9.0
|
|
34
34
|
Description-Content-Type: text/x-rst
|
|
35
35
|
License-File: COPYING
|
|
36
|
-
Requires-Dist: wcwidth
|
|
36
|
+
Requires-Dist: wcwidth>=0.4
|
|
37
37
|
Provides-Extra: curses
|
|
38
38
|
Requires-Dist: windows-curses; sys_platform == "win32" and extra == "curses"
|
|
39
39
|
Provides-Extra: glib
|
|
@@ -74,7 +74,7 @@ It includes many features useful for text console application developers includi
|
|
|
74
74
|
- Display modules include raw, curses, and experimental LCD and web displays
|
|
75
75
|
- Support for UTF-8, simple 8-bit and CJK encodings
|
|
76
76
|
- 24-bit (true color), 256 color, and 88 color mode support
|
|
77
|
-
- Compatible with Python 3.
|
|
77
|
+
- Compatible with Python 3.9+ and PyPy
|
|
78
78
|
|
|
79
79
|
Home Page:
|
|
80
80
|
http://urwid.org/
|
|
@@ -104,6 +104,8 @@ Alternatively if you are on Debian or Ubuntu
|
|
|
104
104
|
Windows support notes
|
|
105
105
|
=====================
|
|
106
106
|
|
|
107
|
+
Windows support is limited to the Windows 10+ due to ANSI support requirement.
|
|
108
|
+
|
|
107
109
|
* Not supported:
|
|
108
110
|
|
|
109
111
|
1. Terminal widget and all related render API (TermCanvas, TermCharset, TermModes, TermScroller)
|
|
@@ -145,6 +147,7 @@ Supported Python versions
|
|
|
145
147
|
- 3.11
|
|
146
148
|
- 3.12
|
|
147
149
|
- 3.13
|
|
150
|
+
- 3.14
|
|
148
151
|
- pypy3
|
|
149
152
|
|
|
150
153
|
Authors
|
|
@@ -19,7 +19,7 @@ It includes many features useful for text console application developers includi
|
|
|
19
19
|
- Display modules include raw, curses, and experimental LCD and web displays
|
|
20
20
|
- Support for UTF-8, simple 8-bit and CJK encodings
|
|
21
21
|
- 24-bit (true color), 256 color, and 88 color mode support
|
|
22
|
-
- Compatible with Python 3.
|
|
22
|
+
- Compatible with Python 3.9+ and PyPy
|
|
23
23
|
|
|
24
24
|
Home Page:
|
|
25
25
|
http://urwid.org/
|
|
@@ -49,6 +49,8 @@ Alternatively if you are on Debian or Ubuntu
|
|
|
49
49
|
Windows support notes
|
|
50
50
|
=====================
|
|
51
51
|
|
|
52
|
+
Windows support is limited to the Windows 10+ due to ANSI support requirement.
|
|
53
|
+
|
|
52
54
|
* Not supported:
|
|
53
55
|
|
|
54
56
|
1. Terminal widget and all related render API (TermCanvas, TermCharset, TermModes, TermScroller)
|
|
@@ -90,6 +92,7 @@ Supported Python versions
|
|
|
90
92
|
- 3.11
|
|
91
93
|
- 3.12
|
|
92
94
|
- 3.13
|
|
95
|
+
- 3.14
|
|
93
96
|
- pypy3
|
|
94
97
|
|
|
95
98
|
Authors
|
|
@@ -2,7 +2,6 @@ Development Status :: 5 - Production/Stable
|
|
|
2
2
|
Environment :: Console
|
|
3
3
|
Environment :: Console :: Curses
|
|
4
4
|
Intended Audience :: Developers
|
|
5
|
-
License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
|
|
6
5
|
Operating System :: POSIX
|
|
7
6
|
Operating System :: Unix
|
|
8
7
|
Operating System :: MacOS :: MacOS X
|
|
@@ -15,6 +14,7 @@ Programming Language :: Python :: 3.10
|
|
|
15
14
|
Programming Language :: Python :: 3.11
|
|
16
15
|
Programming Language :: Python :: 3.12
|
|
17
16
|
Programming Language :: Python :: 3.13
|
|
17
|
+
Programming Language :: Python :: 3.14
|
|
18
18
|
Programming Language :: Python :: 3 :: Only
|
|
19
19
|
Programming Language :: Python :: Implementation :: CPython
|
|
20
20
|
Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -2,6 +2,77 @@
|
|
|
2
2
|
Changelog
|
|
3
3
|
---------
|
|
4
4
|
|
|
5
|
+
Urwid 3.0.5
|
|
6
|
+
===========
|
|
7
|
+
|
|
8
|
+
2026-02-02
|
|
9
|
+
|
|
10
|
+
Deprecations ⚡
|
|
11
|
+
++++++++++++++
|
|
12
|
+
* Un-deprecate `user_arg` for signals by @penguinolog in https://github.com/urwid/urwid/pull/1092
|
|
13
|
+
Bug fixes 🕷
|
|
14
|
+
++++++++++++
|
|
15
|
+
* Fix terminal scroll TypeError by @penguinolog in https://github.com/urwid/urwid/pull/1098
|
|
16
|
+
* Bugfix some kinds of emojis with grapheme boundry support by @jquast in https://github.com/urwid/urwid/pull/1100
|
|
17
|
+
* Fix: Text.pack line splitting not match Text.render by @penguinolog in https://github.com/urwid/urwid/pull/1099
|
|
18
|
+
|
|
19
|
+
New Contributors
|
|
20
|
+
++++++++++++++++
|
|
21
|
+
* @jquast made their first contribution in https://github.com/urwid/urwid/pull/1100
|
|
22
|
+
|
|
23
|
+
**Full Changelog**: https://github.com/urwid/urwid/compare/3.0.4...3.0.5
|
|
24
|
+
|
|
25
|
+
Urwid 3.0.4
|
|
26
|
+
===========
|
|
27
|
+
|
|
28
|
+
2025-12-01
|
|
29
|
+
|
|
30
|
+
Deprecations ⚡
|
|
31
|
+
++++++++++++++
|
|
32
|
+
* Fix CheckBox DeprecationWarning: Use user_args instead of user_arg by @sawdmn in https://github.com/urwid/urwid/pull/1079
|
|
33
|
+
Other Changes
|
|
34
|
+
+++++++++++++
|
|
35
|
+
* Refactoring: use official python way for lazy imports by @penguinolog in https://github.com/urwid/urwid/pull/1077
|
|
36
|
+
|
|
37
|
+
New Contributors
|
|
38
|
+
++++++++++++++++
|
|
39
|
+
* @sawdmn made their first contribution in https://github.com/urwid/urwid/pull/1079
|
|
40
|
+
|
|
41
|
+
**Full Changelog**: https://github.com/urwid/urwid/compare/3.0.3...3.0.4
|
|
42
|
+
|
|
43
|
+
Urwid 3.0.3
|
|
44
|
+
===========
|
|
45
|
+
|
|
46
|
+
2025-09-15
|
|
47
|
+
|
|
48
|
+
Bug fixes 🕷
|
|
49
|
+
++++++++++++
|
|
50
|
+
* Python 3.14: fix buffer overflow on terminal size request by @meeuw in https://github.com/urwid/urwid/pull/1027
|
|
51
|
+
* Add guard against empty list on focus complete. by @gryf in https://github.com/urwid/urwid/pull/1047
|
|
52
|
+
|
|
53
|
+
Documentation 🕮
|
|
54
|
+
++++++++++++++++
|
|
55
|
+
* Add extra code type annotations by @penguinolog in https://github.com/urwid/urwid/pull/1037
|
|
56
|
+
* Mark Windows support limitation: win10+ only by @penguinolog in https://github.com/urwid/urwid/pull/1038
|
|
57
|
+
|
|
58
|
+
Other Changes
|
|
59
|
+
+++++++++++++
|
|
60
|
+
* Maintenance: fix devcontainer to support actual requirements without pinning by @penguinolog in https://github.com/urwid/urwid/pull/1035
|
|
61
|
+
|
|
62
|
+
New Contributors
|
|
63
|
+
++++++++++++++++
|
|
64
|
+
* @meeuw made their first contribution in https://github.com/urwid/urwid/pull/1027
|
|
65
|
+
* @gryf made their first contribution in https://github.com/urwid/urwid/pull/1047
|
|
66
|
+
|
|
67
|
+
Urwid 3.0.2
|
|
68
|
+
===========
|
|
69
|
+
|
|
70
|
+
2025-05-07
|
|
71
|
+
|
|
72
|
+
Bug fixes 🕷
|
|
73
|
+
++++++++++++
|
|
74
|
+
* Bugfix: Corner case: Scrollbar render for only 1 row height by @penguinolog in https://github.com/urwid/urwid/pull/1021
|
|
75
|
+
|
|
5
76
|
Urwid 3.0.1
|
|
6
77
|
===========
|
|
7
78
|
|
|
Binary file
|
|
@@ -283,7 +283,7 @@ def parse_chart(chart: str, convert):
|
|
|
283
283
|
entry = entry[elen:].strip()
|
|
284
284
|
else: # try the whole thing
|
|
285
285
|
attrtext = convert(entry.strip())
|
|
286
|
-
assert attrtext, f"Invalid palette entry: {entry!r}" # noqa: S101 # "assert" is
|
|
286
|
+
assert attrtext, f"Invalid palette entry: {entry!r}" # noqa: S101 # "assert" is OK for examples
|
|
287
287
|
elen = len(entry)
|
|
288
288
|
entry = ""
|
|
289
289
|
attr, text = attrtext
|
|
@@ -48,7 +48,8 @@ class LineWalker(urwid.ListWalker):
|
|
|
48
48
|
self.focus = 0
|
|
49
49
|
|
|
50
50
|
def __del__(self) -> None:
|
|
51
|
-
self.file
|
|
51
|
+
if self.file is not None:
|
|
52
|
+
self.file.close()
|
|
52
53
|
|
|
53
54
|
def get_focus(self):
|
|
54
55
|
return self._get_at_pos(self.focus)
|
|
@@ -99,7 +100,7 @@ class LineWalker(urwid.ListWalker):
|
|
|
99
100
|
# file is closed, so there are no more lines
|
|
100
101
|
return None, None
|
|
101
102
|
|
|
102
|
-
assert pos == len(self.lines), "out of order request?" # noqa: S101 # "assert" is
|
|
103
|
+
assert pos == len(self.lines), "out of order request?" # noqa: S101 # "assert" is OK in examples
|
|
103
104
|
|
|
104
105
|
self.read_next_line()
|
|
105
106
|
|
|
@@ -9,7 +9,7 @@ class MultiPudding(urwid.Widget):
|
|
|
9
9
|
def rows(self, size: tuple[int], focus: bool = False) -> int:
|
|
10
10
|
return 1
|
|
11
11
|
|
|
12
|
-
def render(self, size: tuple[int], focus: bool = False) -> urwid.TextCanvas:
|
|
12
|
+
def render(self, size: tuple[int] | tuple[int, int], focus: bool = False) -> urwid.TextCanvas:
|
|
13
13
|
if len(size) == 1:
|
|
14
14
|
(maxcol,) = size
|
|
15
15
|
maxrow = 1
|
|
@@ -91,13 +91,13 @@ class AsyncScreen(Screen):
|
|
|
91
91
|
|
|
92
92
|
_pending_task = None
|
|
93
93
|
|
|
94
|
-
def write(self, data):
|
|
94
|
+
def write(self, data: str) -> None:
|
|
95
95
|
self.writer.write(data.encode(self.encoding))
|
|
96
96
|
|
|
97
|
-
def flush(self):
|
|
97
|
+
def flush(self) -> None:
|
|
98
98
|
pass
|
|
99
99
|
|
|
100
|
-
def hook_event_loop(self, event_loop, callback):
|
|
100
|
+
def hook_event_loop(self, event_loop: urwid.AsyncioEventLoop, callback) -> None:
|
|
101
101
|
# Wait on the reader's read coro, and when there's data to read, call
|
|
102
102
|
# the callback and then wait again
|
|
103
103
|
def pump_reader(fut=None):
|
|
@@ -126,14 +126,14 @@ class AsyncScreen(Screen):
|
|
|
126
126
|
|
|
127
127
|
pump_reader()
|
|
128
128
|
|
|
129
|
-
def unhook_event_loop(self, event_loop):
|
|
129
|
+
def unhook_event_loop(self, event_loop) -> None:
|
|
130
130
|
if self._pending_task:
|
|
131
131
|
self._pending_task.cancel()
|
|
132
132
|
del self._pending_task
|
|
133
133
|
|
|
134
134
|
|
|
135
135
|
class UrwidProtocol(asyncio.Protocol):
|
|
136
|
-
def connection_made(self, transport):
|
|
136
|
+
def connection_made(self, transport) -> None:
|
|
137
137
|
print("Got a client!")
|
|
138
138
|
self.transport = transport
|
|
139
139
|
|
|
@@ -155,10 +155,10 @@ class UrwidProtocol(asyncio.Protocol):
|
|
|
155
155
|
|
|
156
156
|
self.urwid_loop.start()
|
|
157
157
|
|
|
158
|
-
def data_received(self, data):
|
|
158
|
+
def data_received(self, data: bytes) -> None:
|
|
159
159
|
self.reader.feed_data(data)
|
|
160
160
|
|
|
161
|
-
def connection_lost(self, exc):
|
|
161
|
+
def connection_lost(self, exc: Exception | None) -> None:
|
|
162
162
|
print("Lost a client...")
|
|
163
163
|
self.reader.feed_eof()
|
|
164
164
|
self.urwid_loop.stop()
|
|
@@ -48,7 +48,8 @@ class LineWalker(urwid.ListWalker):
|
|
|
48
48
|
self.focus = 0
|
|
49
49
|
|
|
50
50
|
def __del__(self) -> None:
|
|
51
|
-
self.file
|
|
51
|
+
if self.file is not None:
|
|
52
|
+
self.file.close()
|
|
52
53
|
|
|
53
54
|
def get_focus(self):
|
|
54
55
|
return self._get_at_pos(self.focus)
|
|
@@ -99,7 +100,7 @@ class LineWalker(urwid.ListWalker):
|
|
|
99
100
|
# file is closed, so there are no more lines
|
|
100
101
|
return None, None
|
|
101
102
|
|
|
102
|
-
assert pos == len(self.lines), "out of order request?" # noqa: S101 # "assert" is
|
|
103
|
+
assert pos == len(self.lines), "out of order request?" # noqa: S101 # "assert" is OK in examples
|
|
103
104
|
|
|
104
105
|
self.read_next_line()
|
|
105
106
|
|
|
@@ -168,7 +168,7 @@ class LCDHorizontalSlider(urwid.WidgetWrap[urwid.Columns]):
|
|
|
168
168
|
# move the slider based on which arrow is focused
|
|
169
169
|
if key == "enter":
|
|
170
170
|
# use the correct size for adjusting the bar
|
|
171
|
-
self.bar.move_position((self._w.column_widths(size)[1],), self._w.
|
|
171
|
+
self.bar.move_position((self._w.column_widths(size)[1],), self._w.focus_position != 0)
|
|
172
172
|
self.callback(self.bar.value)
|
|
173
173
|
return None
|
|
174
174
|
|