urwid 3.0.3__tar.gz → 3.0.4__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.3 → urwid-3.0.4}/.github/workflows/documentation.yml +2 -2
- {urwid-3.0.3 → urwid-3.0.4}/.github/workflows/isolated_static_check.yml +8 -28
- {urwid-3.0.3 → urwid-3.0.4}/.github/workflows/pythonpackage.yml +21 -36
- {urwid-3.0.3 → urwid-3.0.4}/.github/workflows/yamllint.yml +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/.pre-commit-config.yaml +7 -21
- {urwid-3.0.3 → urwid-3.0.4}/PKG-INFO +5 -4
- {urwid-3.0.3 → urwid-3.0.4}/README.rst +2 -1
- {urwid-3.0.3 → urwid-3.0.4}/classifiers.txt +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/docs/changelog.rst +17 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/twisted_serve_ssh.py +2 -2
- urwid-3.0.4/pylint-requirements.txt +1 -0
- {urwid-3.0.3 → urwid-3.0.4}/pyproject.toml +11 -3
- urwid-3.0.4/ruff-requirements.txt +1 -0
- {urwid-3.0.3 → urwid-3.0.4}/tox.ini +7 -20
- {urwid-3.0.3 → urwid-3.0.4}/urwid/__init__.py +29 -16
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/__init__.py +53 -48
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_raw_display_base.py +2 -2
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/common.py +17 -17
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/curses.py +1 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/web.py +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/asyncio_loop.py +3 -1
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/main_loop.py +5 -5
- {urwid-3.0.3 → urwid-3.0.4}/urwid/font.py +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/urwid/numedit.py +65 -65
- {urwid-3.0.3 → urwid-3.0.4}/urwid/signals.py +8 -8
- {urwid-3.0.3 → urwid-3.0.4}/urwid/split_repr.py +9 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/util.py +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/urwid/version.py +3 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/attr_map.py +10 -10
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/attr_wrap.py +3 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/big_text.py +0 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/box_adapter.py +2 -2
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/divider.py +6 -6
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/edit.py +42 -42
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/filler.py +8 -8
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/frame.py +3 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/line_box.py +19 -19
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/listbox.py +1 -1
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/monitored_list.py +69 -45
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/padding.py +20 -20
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/progress_bar.py +7 -7
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/solid_fill.py +3 -3
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/text.py +28 -28
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/widget.py +6 -6
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/widget_decoration.py +2 -2
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/wimp.py +56 -53
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/PKG-INFO +5 -4
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/SOURCES.txt +0 -2
- urwid-3.0.3/black-requirements.txt +0 -1
- urwid-3.0.3/isort-requirements.txt +0 -1
- urwid-3.0.3/pylint-requirements.txt +0 -1
- urwid-3.0.3/ruff-requirements.txt +0 -1
- {urwid-3.0.3 → urwid-3.0.4}/.coveralls.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.devcontainer/dev.dockerfile +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.devcontainer/devcontainer.json +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.dockerignore +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.editorconfig +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/CODE_OF_CONDUCT.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/ISSUE_TEMPLATE/docs.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/ISSUE_TEMPLATE/question.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/dependabot.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/labeler.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/release.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.github/workflows/labels.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.gitignore +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/.yamllint.yml +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/COPYING +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/MANIFEST.in +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/Makefile +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/conf.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/bigtext.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/bigtext.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/bigtext1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/bigtext2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/bigtext3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/browse.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/browse.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/browse1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/browse2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/edit.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/edit.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/edit1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/edit2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/edit_text.txt +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/graph.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/graph.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/graph1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/graph2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/index.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/palette_test.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/palette_test.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/palette_test1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/palette_test2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/pop_up.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/pop_up.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/pop_up1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/pop_up2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/real_browse.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/real_edit.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/subproc.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/subproc.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/subproc1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/subproc2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/subproc2.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/tour.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/tour.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/tour1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/examples/tour2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/index.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/bright_combinations.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/bright_combinations.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/bright_combinations1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/canvascache.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/displayattributes.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/displaymodules.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/encodings.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/display_modules.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/introduction.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/urwid_widgets.svgz +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/urwid_widgets_1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/urwid_widgets_1.xcf +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/urwid_widgets_2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/urwid_widgets_2.xcf +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/images/widget_layout.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/index.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/mainloop.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/overview.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/safe_combinations.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/safe_combinations.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/safe_combinations1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/textlayout.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/userinput.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wanat.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wanat_multi.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wcur1.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wcur2.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/widgets.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wmod.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/manual/wsel.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/attrspec.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/canvas.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/command_map.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/constants.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/deprecated.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/display_modules.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/exceptions.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/global_settings.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/index.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/list_walkers.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/main_loop.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/meta.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/signals.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/text_layout.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/reference/widget.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/compile_pngs.sh +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/screenshots.sh +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/static/.placeholder +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/templates/indexcontent.html +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/templates/indexsidebar.html +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tools/templates/localtoc.html +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/adventure4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/cmenu4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/highcolors.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/highcolors.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/highcolors1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/hmenu4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/index.rst +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/input5.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/menu25.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/minimal.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/minimal.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/minimal1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/multiple4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/qa.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/qa.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/qa1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/qa2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/qa3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/sig4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/smenu.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/smenu.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/smenu1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/smenu2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/smenu3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr.py.xdotool +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr1.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr2.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr3.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/tutorial/urwid_attr4.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/docs/urwid-logo.png +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/asyncio_socket_server.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/bigtext.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/browse.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/calc.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/dialog.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/edit.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/fib.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/graph.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/input_test.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/lcd_cf635.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/palette_test.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/pop_up.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/subproc.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/subproc2.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/terminal.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/tour.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/treesample.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/examples/twisted_serve_ssh.tac +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/requirements.txt +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/setup.cfg +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/test_requirements.txt +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/__init__.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_canvas.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_columns.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_container.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_doctests.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_escapes.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_event_loops.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_filler.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_floatedit.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_font.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_frame.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_graphics.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_grid_flow.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_line_box.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_listbox.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_main_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_moved_imports.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_overlay.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_padding.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_pile.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_raw_display.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_scrollable.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_signals.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_str_util.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_text_layout.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_tree.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_util.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_vterm.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/test_widget.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/tests/util.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/canvas.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/command_map.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/container.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/decoration.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_posix_raw_display.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_web.css +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_web.js +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_win32.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/_win32_raw_display.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/escape.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/html_fragment.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/lcd.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/display/raw.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/__init__.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/abstract_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/glib_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/select_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/tornado_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/trio_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/twisted_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/event_loop/zmq_loop.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/graphics.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/str_util.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/text_layout.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/vterm.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/__init__.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/bar_graph.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/columns.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/constants.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/container.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/grid_flow.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/overlay.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/pile.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/popup.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/scrollable.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/widget/treetools.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid/wimp.py +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/dependency_links.txt +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/not-zip-safe +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/requires.txt +0 -0
- {urwid-3.0.3 → urwid-3.0.4}/urwid.egg-info/top_level.txt +0 -0
|
@@ -23,7 +23,7 @@ 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
|
|
@@ -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@v5
|
|
48
48
|
with:
|
|
49
49
|
path: build/documentation
|
|
50
50
|
name: documentation
|
|
@@ -4,19 +4,17 @@ 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
19
|
uses: actions/setup-python@v6
|
|
22
20
|
with:
|
|
@@ -25,34 +23,16 @@ jobs:
|
|
|
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@v5
|
|
38
|
-
- name: Set up Python
|
|
39
|
-
uses: actions/setup-python@v6
|
|
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
37
|
uses: actions/setup-python@v6
|
|
58
38
|
with:
|
|
@@ -70,7 +50,7 @@ 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
|
|
@@ -26,11 +26,11 @@ 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
35
|
uses: actions/setup-python@v6
|
|
36
36
|
with:
|
|
@@ -39,34 +39,16 @@ jobs:
|
|
|
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@v5
|
|
52
|
-
- name: Set up Python
|
|
53
|
-
uses: actions/setup-python@v6
|
|
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
53
|
uses: actions/setup-python@v6
|
|
72
54
|
with:
|
|
@@ -84,7 +66,7 @@ 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
|
|
@@ -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,10 +96,13 @@ 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 }}
|
|
@@ -170,10 +155,10 @@ 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
|
|
|
@@ -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@v5
|
|
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@v5
|
|
197
182
|
with:
|
|
198
183
|
path: dist/*.whl
|
|
199
184
|
name: built-bdist
|
|
@@ -204,7 +189,7 @@ 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
194
|
uses: actions/setup-python@v6
|
|
210
195
|
with:
|
|
@@ -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@v6
|
|
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@v6
|
|
243
228
|
with:
|
|
244
229
|
pattern: built-*
|
|
245
230
|
merge-multiple: true
|
|
@@ -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.4
|
|
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,6 +26,7 @@ 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
|
|
@@ -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/
|
|
@@ -147,6 +147,7 @@ Supported Python versions
|
|
|
147
147
|
- 3.11
|
|
148
148
|
- 3.12
|
|
149
149
|
- 3.13
|
|
150
|
+
- 3.14
|
|
150
151
|
- pypy3
|
|
151
152
|
|
|
152
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/
|
|
@@ -92,6 +92,7 @@ Supported Python versions
|
|
|
92
92
|
- 3.11
|
|
93
93
|
- 3.12
|
|
94
94
|
- 3.13
|
|
95
|
+
- 3.14
|
|
95
96
|
- pypy3
|
|
96
97
|
|
|
97
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,23 @@
|
|
|
2
2
|
Changelog
|
|
3
3
|
---------
|
|
4
4
|
|
|
5
|
+
Urwid 3.0.4
|
|
6
|
+
===========
|
|
7
|
+
|
|
8
|
+
2025-12-01
|
|
9
|
+
|
|
10
|
+
Deprecations ⚡
|
|
11
|
+
++++++++++++++
|
|
12
|
+
* Fix CheckBox DeprecationWarning: Use user_args instead of user_arg by @sawdmn in https://github.com/urwid/urwid/pull/1079
|
|
13
|
+
Other Changes
|
|
14
|
+
+++++++++++++
|
|
15
|
+
* Refactoring: use official python way for lazy imports by @penguinolog in https://github.com/urwid/urwid/pull/1077
|
|
16
|
+
|
|
17
|
+
## New Contributors
|
|
18
|
+
* @sawdmn made their first contribution in https://github.com/urwid/urwid/pull/1079
|
|
19
|
+
|
|
20
|
+
**Full Changelog**: https://github.com/urwid/urwid/compare/3.0.3...3.0.4
|
|
21
|
+
|
|
5
22
|
Urwid 3.0.3
|
|
6
23
|
===========
|
|
7
24
|
|
|
@@ -289,9 +289,9 @@ class TwistedScreen(Screen):
|
|
|
289
289
|
>>> s = Screen()
|
|
290
290
|
>>> s.set_terminal_properties(colors=256)
|
|
291
291
|
>>> a2e = s._attrspec_to_escape
|
|
292
|
-
>>> a2e(s.AttrSpec(
|
|
292
|
+
>>> a2e(s.AttrSpec("brown", "dark green"))
|
|
293
293
|
'\\x1b[0;33;42m'
|
|
294
|
-
>>> a2e(s.AttrSpec(
|
|
294
|
+
>>> a2e(s.AttrSpec("#fea,underline", "#d0d"))
|
|
295
295
|
'\\x1b[0;38;5;229;4;48;5;164m'
|
|
296
296
|
"""
|
|
297
297
|
if a.foreground_high:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pylint==4.0.3
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
# Minimum requirements for the build system to execute.
|
|
3
3
|
# PEP 508 specifications for PEP 518.
|
|
4
4
|
requires = [
|
|
5
|
-
"setuptools >=
|
|
6
|
-
"setuptools_scm[toml]>=7.0",
|
|
5
|
+
"setuptools >= 80.8.0",
|
|
7
6
|
"wheel",
|
|
7
|
+
"setuptools_scm[toml]>=8.1.0",
|
|
8
8
|
]
|
|
9
9
|
build-backend="setuptools.build_meta"
|
|
10
10
|
|
|
@@ -13,7 +13,8 @@ name = "urwid"
|
|
|
13
13
|
description = "A full-featured console (xterm et al.) user interface library"
|
|
14
14
|
requires-python = ">=3.9.0"
|
|
15
15
|
keywords = ["curses", "ui", "widget", "scroll", "listbox", "user interface", "text layout", "console", "ncurses"]
|
|
16
|
-
license=
|
|
16
|
+
license = "LGPL-2.1-only" # Use SPDX classifier
|
|
17
|
+
license-files=["COPYING"]
|
|
17
18
|
readme = {file = "README.rst", content-type = "text/x-rst"}
|
|
18
19
|
authors=[{name="Ian Ward", email="ian@excess.org"}]
|
|
19
20
|
dynamic = ["classifiers", "version", "dependencies"]
|
|
@@ -161,6 +162,7 @@ extend-exclude = ["tests"]
|
|
|
161
162
|
extend-select = [
|
|
162
163
|
"E",
|
|
163
164
|
"W", # also pycodestyle warnings
|
|
165
|
+
"F", # pyflakes
|
|
164
166
|
"PYI", # flake8-pyi
|
|
165
167
|
"ASYNC", # flake8-async
|
|
166
168
|
"FA", # from __future__ import annotations
|
|
@@ -174,9 +176,12 @@ extend-select = [
|
|
|
174
176
|
"ICN", "PGH", # flake8-import-conventions, pygrep-hooks
|
|
175
177
|
"Q", # quotes
|
|
176
178
|
"FLY", # Flynt
|
|
179
|
+
"FURB", # Refurb
|
|
180
|
+
"PIE", # flake8-pie,
|
|
177
181
|
"TRY", "UP", "I", "PL", "PERF", "RUF", # tryceratops, pyupgrade, isort, pylint + perflint, Ruff-specific
|
|
178
182
|
]
|
|
179
183
|
extend-ignore = [
|
|
184
|
+
"E221", "E222", # handled by formatter
|
|
180
185
|
"PLR6301", "E203",
|
|
181
186
|
# refactor rules (too many statements/arguments/branches)
|
|
182
187
|
"PLR0904", "PLR0911", "PLR0912", "PLR0913", "PLR0914", "PLR0915", "PLR0917", "PLR2004",
|
|
@@ -207,6 +212,9 @@ allow-dunder-method-names = [
|
|
|
207
212
|
"_contents__delitem__",
|
|
208
213
|
]
|
|
209
214
|
|
|
215
|
+
[tool.ruff.format]
|
|
216
|
+
docstring-code-format = true
|
|
217
|
+
|
|
210
218
|
[tool.pylint]
|
|
211
219
|
extension-pkg-whitelist = []
|
|
212
220
|
ignore = ["CVS", "version.py"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruff==0.14.7
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[tox]
|
|
2
|
-
envlist = py3{9,10,11,12,13},pypy3,
|
|
2
|
+
envlist = py3{9,10,11,12,13,14},pypy3,ruff,pylint,refurb
|
|
3
3
|
skip_missing_interpreters = True
|
|
4
4
|
|
|
5
5
|
[testenv]
|
|
@@ -18,26 +18,13 @@ commands =
|
|
|
18
18
|
python -m build
|
|
19
19
|
twine check {toxinidir}/dist/*
|
|
20
20
|
|
|
21
|
-
[testenv:isort]
|
|
22
|
-
skip_install = true
|
|
23
|
-
deps =
|
|
24
|
-
isort
|
|
25
|
-
commands =
|
|
26
|
-
isort .
|
|
27
|
-
|
|
28
|
-
[testenv:black]
|
|
29
|
-
skip_install = true
|
|
30
|
-
depends = isort
|
|
31
|
-
deps =
|
|
32
|
-
black
|
|
33
|
-
commands =
|
|
34
|
-
black .
|
|
35
|
-
|
|
36
21
|
[testenv:ruff]
|
|
37
22
|
skip_install = true
|
|
38
|
-
depends =
|
|
23
|
+
depends =
|
|
39
24
|
deps = ruff
|
|
40
|
-
commands =
|
|
25
|
+
commands =
|
|
26
|
+
ruff format --check .
|
|
27
|
+
ruff check .
|
|
41
28
|
|
|
42
29
|
[testenv:docs]
|
|
43
30
|
deps =
|
|
@@ -47,7 +34,7 @@ deps =
|
|
|
47
34
|
commands = sphinx-build docs/ build/documentation
|
|
48
35
|
|
|
49
36
|
[testenv:pylint]
|
|
50
|
-
depends =
|
|
37
|
+
depends = ruff
|
|
51
38
|
deps =
|
|
52
39
|
-r {toxinidir}/test_requirements.txt
|
|
53
40
|
PyGObject
|
|
@@ -55,6 +42,6 @@ deps =
|
|
|
55
42
|
commands = pylint urwid
|
|
56
43
|
|
|
57
44
|
[testenv:refurb]
|
|
58
|
-
depends =
|
|
45
|
+
depends = ruff
|
|
59
46
|
deps = refurb
|
|
60
47
|
commands = refurb urwid examples
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
from __future__ import annotations
|
|
23
23
|
|
|
24
|
-
import importlib
|
|
24
|
+
import importlib.util
|
|
25
25
|
import sys
|
|
26
26
|
import types
|
|
27
27
|
import typing
|
|
@@ -265,12 +265,28 @@ _moved_warn: dict[str, str] = {
|
|
|
265
265
|
}
|
|
266
266
|
# Backward compatible lazy load without any warnings
|
|
267
267
|
# Before DeprecationWarning need to start PendingDeprecationWarning process.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
"
|
|
272
|
-
|
|
273
|
-
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
def lazy_import(name: str, package: str | None = None) -> types.ModuleType:
|
|
271
|
+
"""Lazy import implementation from Python documentation.
|
|
272
|
+
|
|
273
|
+
Useful for cases where no warnings expected for moved modules.
|
|
274
|
+
"""
|
|
275
|
+
spec = importlib.util.find_spec(name, package)
|
|
276
|
+
if not spec:
|
|
277
|
+
raise ImportError(f"No module named {name!r}")
|
|
278
|
+
if not spec.loader:
|
|
279
|
+
raise ImportError(f"Module named {name!r} is invalid")
|
|
280
|
+
|
|
281
|
+
loader = importlib.util.LazyLoader(spec.loader)
|
|
282
|
+
spec.loader = loader
|
|
283
|
+
module = importlib.util.module_from_spec(spec)
|
|
284
|
+
if not package:
|
|
285
|
+
sys.modules[name] = module
|
|
286
|
+
else:
|
|
287
|
+
sys.modules[f"{package.rstrip('.')}.{name.lstrip('.')}"] = module
|
|
288
|
+
loader.exec_module(module)
|
|
289
|
+
return module
|
|
274
290
|
|
|
275
291
|
|
|
276
292
|
class _MovedModule(types.ModuleType):
|
|
@@ -293,6 +309,12 @@ class _MovedModule(types.ModuleType):
|
|
|
293
309
|
return getattr(real_module, name)
|
|
294
310
|
|
|
295
311
|
|
|
312
|
+
display_common = lazy_import("urwid.display.common")
|
|
313
|
+
raw_display = lazy_import("urwid.display.raw")
|
|
314
|
+
curses_display = lazy_import("urwid.display.curses")
|
|
315
|
+
escape = lazy_import("urwid.display.escape")
|
|
316
|
+
|
|
317
|
+
|
|
296
318
|
class _MovedModuleWarn(_MovedModule):
|
|
297
319
|
"""Special class to handle moved modules.
|
|
298
320
|
|
|
@@ -310,10 +332,6 @@ class _MovedModuleWarn(_MovedModule):
|
|
|
310
332
|
return super().__getattr__(name)
|
|
311
333
|
|
|
312
334
|
|
|
313
|
-
for _name, _module in _moved_no_warn.items():
|
|
314
|
-
_module_path = f"{__name__}.{_name}"
|
|
315
|
-
sys.modules[_module_path] = _MovedModule(_module_path, _module)
|
|
316
|
-
|
|
317
335
|
for _name, _module in _moved_warn.items():
|
|
318
336
|
_module_path = f"{__name__}.{_name}"
|
|
319
337
|
sys.modules[_module_path] = _MovedModuleWarn(_module_path, _module)
|
|
@@ -325,11 +343,6 @@ def __getattr__(name: str) -> typing.Any:
|
|
|
325
343
|
:return: attribute by name
|
|
326
344
|
:raises AttributeError: attribute is not defined for lazy load
|
|
327
345
|
"""
|
|
328
|
-
if name in _moved_no_warn:
|
|
329
|
-
mod = importlib.import_module(_moved_no_warn[name])
|
|
330
|
-
__locals[name] = mod
|
|
331
|
-
return mod
|
|
332
|
-
|
|
333
346
|
if name in _moved_warn:
|
|
334
347
|
warnings.warn(
|
|
335
348
|
f"{name} is moved to {_moved_warn[name]}",
|