urwid 3.0.0__tar.gz → 3.0.1__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.
Files changed (316) hide show
  1. {urwid-3.0.0 → urwid-3.0.1}/.github/workflows/documentation.yml +0 -1
  2. {urwid-3.0.0 → urwid-3.0.1}/.github/workflows/pythonpackage.yml +0 -5
  3. {urwid-3.0.0 → urwid-3.0.1}/.pre-commit-config.yaml +2 -2
  4. {urwid-3.0.0 → urwid-3.0.1}/PKG-INFO +4 -7
  5. {urwid-3.0.0 → urwid-3.0.1}/docs/changelog.rst +13 -0
  6. {urwid-3.0.0 → urwid-3.0.1}/pyproject.toml +2 -2
  7. {urwid-3.0.0 → urwid-3.0.1}/tests/test_event_loops.py +12 -2
  8. {urwid-3.0.0 → urwid-3.0.1}/urwid/canvas.py +1 -1
  9. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/asyncio_loop.py +32 -13
  10. {urwid-3.0.0 → urwid-3.0.1}/urwid/version.py +2 -2
  11. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/PKG-INFO +4 -7
  12. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/SOURCES.txt +0 -1
  13. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/requires.txt +3 -1
  14. urwid-3.0.0/setup.py +0 -33
  15. {urwid-3.0.0 → urwid-3.0.1}/.coveralls.yml +0 -0
  16. {urwid-3.0.0 → urwid-3.0.1}/.devcontainer/dev.dockerfile +0 -0
  17. {urwid-3.0.0 → urwid-3.0.1}/.devcontainer/devcontainer.json +0 -0
  18. {urwid-3.0.0 → urwid-3.0.1}/.dockerignore +0 -0
  19. {urwid-3.0.0 → urwid-3.0.1}/.editorconfig +0 -0
  20. {urwid-3.0.0 → urwid-3.0.1}/.github/CODE_OF_CONDUCT.md +0 -0
  21. {urwid-3.0.0 → urwid-3.0.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {urwid-3.0.0 → urwid-3.0.1}/.github/ISSUE_TEMPLATE/docs.md +0 -0
  23. {urwid-3.0.0 → urwid-3.0.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  24. {urwid-3.0.0 → urwid-3.0.1}/.github/ISSUE_TEMPLATE/question.md +0 -0
  25. {urwid-3.0.0 → urwid-3.0.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  26. {urwid-3.0.0 → urwid-3.0.1}/.github/dependabot.yml +0 -0
  27. {urwid-3.0.0 → urwid-3.0.1}/.github/labeler.yml +0 -0
  28. {urwid-3.0.0 → urwid-3.0.1}/.github/release.yml +0 -0
  29. {urwid-3.0.0 → urwid-3.0.1}/.github/workflows/isolated_static_check.yml +0 -0
  30. {urwid-3.0.0 → urwid-3.0.1}/.github/workflows/labels.yml +0 -0
  31. {urwid-3.0.0 → urwid-3.0.1}/.github/workflows/yamllint.yml +0 -0
  32. {urwid-3.0.0 → urwid-3.0.1}/.gitignore +0 -0
  33. {urwid-3.0.0 → urwid-3.0.1}/.yamllint.yml +0 -0
  34. {urwid-3.0.0 → urwid-3.0.1}/COPYING +0 -0
  35. {urwid-3.0.0 → urwid-3.0.1}/MANIFEST.in +0 -0
  36. {urwid-3.0.0 → urwid-3.0.1}/README.rst +0 -0
  37. {urwid-3.0.0 → urwid-3.0.1}/black-requirements.txt +0 -0
  38. {urwid-3.0.0 → urwid-3.0.1}/classifiers.txt +0 -0
  39. {urwid-3.0.0 → urwid-3.0.1}/docs/Makefile +0 -0
  40. {urwid-3.0.0 → urwid-3.0.1}/docs/conf.py +0 -0
  41. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/bigtext.py +0 -0
  42. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/bigtext.py.xdotool +0 -0
  43. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/bigtext1.png +0 -0
  44. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/bigtext2.png +0 -0
  45. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/bigtext3.png +0 -0
  46. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/browse.py +0 -0
  47. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/browse.py.xdotool +0 -0
  48. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/browse1.png +0 -0
  49. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/browse2.png +0 -0
  50. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/edit.py +0 -0
  51. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/edit.py.xdotool +0 -0
  52. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/edit1.png +0 -0
  53. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/edit2.png +0 -0
  54. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/edit_text.txt +0 -0
  55. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/graph.py +0 -0
  56. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/graph.py.xdotool +0 -0
  57. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/graph1.png +0 -0
  58. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/graph2.png +0 -0
  59. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/index.rst +0 -0
  60. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/palette_test.py +0 -0
  61. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/palette_test.py.xdotool +0 -0
  62. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/palette_test1.png +0 -0
  63. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/palette_test2.png +0 -0
  64. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/pop_up.py +0 -0
  65. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/pop_up.py.xdotool +0 -0
  66. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/pop_up1.png +0 -0
  67. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/pop_up2.png +0 -0
  68. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/real_browse.py +0 -0
  69. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/real_edit.py +0 -0
  70. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/subproc.py +0 -0
  71. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/subproc.py.xdotool +0 -0
  72. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/subproc1.png +0 -0
  73. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/subproc2.png +0 -0
  74. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/subproc2.py +0 -0
  75. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/tour.py +0 -0
  76. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/tour.py.xdotool +0 -0
  77. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/tour1.png +0 -0
  78. {urwid-3.0.0 → urwid-3.0.1}/docs/examples/tour2.png +0 -0
  79. {urwid-3.0.0 → urwid-3.0.1}/docs/index.rst +0 -0
  80. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/bright_combinations.py +0 -0
  81. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/bright_combinations.py.xdotool +0 -0
  82. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/bright_combinations1.png +0 -0
  83. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/canvascache.rst +0 -0
  84. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/displayattributes.rst +0 -0
  85. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/displaymodules.rst +0 -0
  86. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/encodings.rst +0 -0
  87. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/display_modules.png +0 -0
  88. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/introduction.png +0 -0
  89. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/urwid_widgets.svgz +0 -0
  90. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/urwid_widgets_1.png +0 -0
  91. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/urwid_widgets_1.xcf +0 -0
  92. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/urwid_widgets_2.png +0 -0
  93. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/urwid_widgets_2.xcf +0 -0
  94. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/images/widget_layout.png +0 -0
  95. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/index.rst +0 -0
  96. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/mainloop.rst +0 -0
  97. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/overview.rst +0 -0
  98. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/safe_combinations.py +0 -0
  99. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/safe_combinations.py.xdotool +0 -0
  100. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/safe_combinations1.png +0 -0
  101. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/textlayout.rst +0 -0
  102. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/userinput.rst +0 -0
  103. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wanat.py +0 -0
  104. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wanat_multi.py +0 -0
  105. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wcur1.py +0 -0
  106. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wcur2.py +0 -0
  107. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/widgets.rst +0 -0
  108. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wmod.py +0 -0
  109. {urwid-3.0.0 → urwid-3.0.1}/docs/manual/wsel.py +0 -0
  110. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/attrspec.rst +0 -0
  111. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/canvas.rst +0 -0
  112. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/command_map.rst +0 -0
  113. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/constants.rst +0 -0
  114. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/deprecated.rst +0 -0
  115. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/display_modules.rst +0 -0
  116. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/exceptions.rst +0 -0
  117. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/global_settings.rst +0 -0
  118. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/index.rst +0 -0
  119. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/list_walkers.rst +0 -0
  120. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/main_loop.rst +0 -0
  121. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/meta.rst +0 -0
  122. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/signals.rst +0 -0
  123. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/text_layout.rst +0 -0
  124. {urwid-3.0.0 → urwid-3.0.1}/docs/reference/widget.rst +0 -0
  125. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/compile_pngs.sh +0 -0
  126. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/screenshots.sh +0 -0
  127. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/static/.placeholder +0 -0
  128. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/templates/indexcontent.html +0 -0
  129. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/templates/indexsidebar.html +0 -0
  130. {urwid-3.0.0 → urwid-3.0.1}/docs/tools/templates/localtoc.html +0 -0
  131. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure.py +0 -0
  132. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure.py.xdotool +0 -0
  133. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure1.png +0 -0
  134. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure2.png +0 -0
  135. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure3.png +0 -0
  136. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/adventure4.png +0 -0
  137. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu.py +0 -0
  138. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu.py.xdotool +0 -0
  139. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu1.png +0 -0
  140. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu2.png +0 -0
  141. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu3.png +0 -0
  142. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/cmenu4.png +0 -0
  143. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/highcolors.py +0 -0
  144. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/highcolors.py.xdotool +0 -0
  145. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/highcolors1.png +0 -0
  146. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu.py +0 -0
  147. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu.py.xdotool +0 -0
  148. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu1.png +0 -0
  149. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu2.png +0 -0
  150. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu3.png +0 -0
  151. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/hmenu4.png +0 -0
  152. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/index.rst +0 -0
  153. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input.py +0 -0
  154. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input.py.xdotool +0 -0
  155. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input1.png +0 -0
  156. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input2.png +0 -0
  157. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input3.png +0 -0
  158. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input4.png +0 -0
  159. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/input5.png +0 -0
  160. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/menu25.png +0 -0
  161. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/minimal.py +0 -0
  162. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/minimal.py.xdotool +0 -0
  163. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/minimal1.png +0 -0
  164. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple.py +0 -0
  165. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple.py.xdotool +0 -0
  166. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple1.png +0 -0
  167. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple2.png +0 -0
  168. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple3.png +0 -0
  169. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/multiple4.png +0 -0
  170. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/qa.py +0 -0
  171. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/qa.py.xdotool +0 -0
  172. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/qa1.png +0 -0
  173. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/qa2.png +0 -0
  174. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/qa3.png +0 -0
  175. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig.py +0 -0
  176. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig.py.xdotool +0 -0
  177. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig1.png +0 -0
  178. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig2.png +0 -0
  179. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig3.png +0 -0
  180. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/sig4.png +0 -0
  181. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/smenu.py +0 -0
  182. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/smenu.py.xdotool +0 -0
  183. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/smenu1.png +0 -0
  184. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/smenu2.png +0 -0
  185. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/smenu3.png +0 -0
  186. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr.py +0 -0
  187. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr.py.xdotool +0 -0
  188. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr1.png +0 -0
  189. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr2.png +0 -0
  190. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr3.png +0 -0
  191. {urwid-3.0.0 → urwid-3.0.1}/docs/tutorial/urwid_attr4.png +0 -0
  192. {urwid-3.0.0 → urwid-3.0.1}/docs/urwid-logo.png +0 -0
  193. {urwid-3.0.0 → urwid-3.0.1}/examples/asyncio_socket_server.py +0 -0
  194. {urwid-3.0.0 → urwid-3.0.1}/examples/bigtext.py +0 -0
  195. {urwid-3.0.0 → urwid-3.0.1}/examples/browse.py +0 -0
  196. {urwid-3.0.0 → urwid-3.0.1}/examples/calc.py +0 -0
  197. {urwid-3.0.0 → urwid-3.0.1}/examples/dialog.py +0 -0
  198. {urwid-3.0.0 → urwid-3.0.1}/examples/edit.py +0 -0
  199. {urwid-3.0.0 → urwid-3.0.1}/examples/fib.py +0 -0
  200. {urwid-3.0.0 → urwid-3.0.1}/examples/graph.py +0 -0
  201. {urwid-3.0.0 → urwid-3.0.1}/examples/input_test.py +0 -0
  202. {urwid-3.0.0 → urwid-3.0.1}/examples/lcd_cf635.py +0 -0
  203. {urwid-3.0.0 → urwid-3.0.1}/examples/palette_test.py +0 -0
  204. {urwid-3.0.0 → urwid-3.0.1}/examples/pop_up.py +0 -0
  205. {urwid-3.0.0 → urwid-3.0.1}/examples/subproc.py +0 -0
  206. {urwid-3.0.0 → urwid-3.0.1}/examples/subproc2.py +0 -0
  207. {urwid-3.0.0 → urwid-3.0.1}/examples/terminal.py +0 -0
  208. {urwid-3.0.0 → urwid-3.0.1}/examples/tour.py +0 -0
  209. {urwid-3.0.0 → urwid-3.0.1}/examples/treesample.py +0 -0
  210. {urwid-3.0.0 → urwid-3.0.1}/examples/twisted_serve_ssh.py +0 -0
  211. {urwid-3.0.0 → urwid-3.0.1}/examples/twisted_serve_ssh.tac +0 -0
  212. {urwid-3.0.0 → urwid-3.0.1}/isort-requirements.txt +0 -0
  213. {urwid-3.0.0 → urwid-3.0.1}/pylint-requirements.txt +0 -0
  214. {urwid-3.0.0 → urwid-3.0.1}/requirements.txt +0 -0
  215. {urwid-3.0.0 → urwid-3.0.1}/ruff-requirements.txt +0 -0
  216. {urwid-3.0.0 → urwid-3.0.1}/setup.cfg +0 -0
  217. {urwid-3.0.0 → urwid-3.0.1}/test_requirements.txt +0 -0
  218. {urwid-3.0.0 → urwid-3.0.1}/tests/__init__.py +0 -0
  219. {urwid-3.0.0 → urwid-3.0.1}/tests/test_canvas.py +0 -0
  220. {urwid-3.0.0 → urwid-3.0.1}/tests/test_columns.py +0 -0
  221. {urwid-3.0.0 → urwid-3.0.1}/tests/test_container.py +0 -0
  222. {urwid-3.0.0 → urwid-3.0.1}/tests/test_doctests.py +0 -0
  223. {urwid-3.0.0 → urwid-3.0.1}/tests/test_escapes.py +0 -0
  224. {urwid-3.0.0 → urwid-3.0.1}/tests/test_filler.py +0 -0
  225. {urwid-3.0.0 → urwid-3.0.1}/tests/test_floatedit.py +0 -0
  226. {urwid-3.0.0 → urwid-3.0.1}/tests/test_font.py +0 -0
  227. {urwid-3.0.0 → urwid-3.0.1}/tests/test_frame.py +0 -0
  228. {urwid-3.0.0 → urwid-3.0.1}/tests/test_graphics.py +0 -0
  229. {urwid-3.0.0 → urwid-3.0.1}/tests/test_grid_flow.py +0 -0
  230. {urwid-3.0.0 → urwid-3.0.1}/tests/test_line_box.py +0 -0
  231. {urwid-3.0.0 → urwid-3.0.1}/tests/test_listbox.py +0 -0
  232. {urwid-3.0.0 → urwid-3.0.1}/tests/test_main_loop.py +0 -0
  233. {urwid-3.0.0 → urwid-3.0.1}/tests/test_moved_imports.py +0 -0
  234. {urwid-3.0.0 → urwid-3.0.1}/tests/test_overlay.py +0 -0
  235. {urwid-3.0.0 → urwid-3.0.1}/tests/test_padding.py +0 -0
  236. {urwid-3.0.0 → urwid-3.0.1}/tests/test_pile.py +0 -0
  237. {urwid-3.0.0 → urwid-3.0.1}/tests/test_raw_display.py +0 -0
  238. {urwid-3.0.0 → urwid-3.0.1}/tests/test_scrollable.py +0 -0
  239. {urwid-3.0.0 → urwid-3.0.1}/tests/test_signals.py +0 -0
  240. {urwid-3.0.0 → urwid-3.0.1}/tests/test_str_util.py +0 -0
  241. {urwid-3.0.0 → urwid-3.0.1}/tests/test_text_layout.py +0 -0
  242. {urwid-3.0.0 → urwid-3.0.1}/tests/test_tree.py +0 -0
  243. {urwid-3.0.0 → urwid-3.0.1}/tests/test_util.py +0 -0
  244. {urwid-3.0.0 → urwid-3.0.1}/tests/test_vterm.py +0 -0
  245. {urwid-3.0.0 → urwid-3.0.1}/tests/test_widget.py +0 -0
  246. {urwid-3.0.0 → urwid-3.0.1}/tests/util.py +0 -0
  247. {urwid-3.0.0 → urwid-3.0.1}/tox.ini +0 -0
  248. {urwid-3.0.0 → urwid-3.0.1}/urwid/__init__.py +0 -0
  249. {urwid-3.0.0 → urwid-3.0.1}/urwid/command_map.py +0 -0
  250. {urwid-3.0.0 → urwid-3.0.1}/urwid/container.py +0 -0
  251. {urwid-3.0.0 → urwid-3.0.1}/urwid/decoration.py +0 -0
  252. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/__init__.py +0 -0
  253. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_posix_raw_display.py +0 -0
  254. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_raw_display_base.py +0 -0
  255. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_web.css +0 -0
  256. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_web.js +0 -0
  257. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_win32.py +0 -0
  258. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/_win32_raw_display.py +0 -0
  259. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/common.py +0 -0
  260. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/curses.py +0 -0
  261. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/escape.py +0 -0
  262. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/html_fragment.py +0 -0
  263. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/lcd.py +0 -0
  264. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/raw.py +0 -0
  265. {urwid-3.0.0 → urwid-3.0.1}/urwid/display/web.py +0 -0
  266. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/__init__.py +0 -0
  267. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/abstract_loop.py +0 -0
  268. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/glib_loop.py +0 -0
  269. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/main_loop.py +0 -0
  270. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/select_loop.py +0 -0
  271. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/tornado_loop.py +0 -0
  272. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/trio_loop.py +0 -0
  273. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/twisted_loop.py +0 -0
  274. {urwid-3.0.0 → urwid-3.0.1}/urwid/event_loop/zmq_loop.py +0 -0
  275. {urwid-3.0.0 → urwid-3.0.1}/urwid/font.py +0 -0
  276. {urwid-3.0.0 → urwid-3.0.1}/urwid/graphics.py +0 -0
  277. {urwid-3.0.0 → urwid-3.0.1}/urwid/numedit.py +0 -0
  278. {urwid-3.0.0 → urwid-3.0.1}/urwid/signals.py +0 -0
  279. {urwid-3.0.0 → urwid-3.0.1}/urwid/split_repr.py +0 -0
  280. {urwid-3.0.0 → urwid-3.0.1}/urwid/str_util.py +0 -0
  281. {urwid-3.0.0 → urwid-3.0.1}/urwid/text_layout.py +0 -0
  282. {urwid-3.0.0 → urwid-3.0.1}/urwid/util.py +0 -0
  283. {urwid-3.0.0 → urwid-3.0.1}/urwid/vterm.py +0 -0
  284. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/__init__.py +0 -0
  285. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/attr_map.py +0 -0
  286. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/attr_wrap.py +0 -0
  287. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/bar_graph.py +0 -0
  288. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/big_text.py +0 -0
  289. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/box_adapter.py +0 -0
  290. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/columns.py +0 -0
  291. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/constants.py +0 -0
  292. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/container.py +0 -0
  293. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/divider.py +0 -0
  294. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/edit.py +0 -0
  295. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/filler.py +0 -0
  296. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/frame.py +0 -0
  297. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/grid_flow.py +0 -0
  298. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/line_box.py +0 -0
  299. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/listbox.py +0 -0
  300. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/monitored_list.py +0 -0
  301. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/overlay.py +0 -0
  302. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/padding.py +0 -0
  303. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/pile.py +0 -0
  304. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/popup.py +0 -0
  305. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/progress_bar.py +0 -0
  306. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/scrollable.py +0 -0
  307. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/solid_fill.py +0 -0
  308. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/text.py +0 -0
  309. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/treetools.py +0 -0
  310. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/widget.py +0 -0
  311. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/widget_decoration.py +0 -0
  312. {urwid-3.0.0 → urwid-3.0.1}/urwid/widget/wimp.py +0 -0
  313. {urwid-3.0.0 → urwid-3.0.1}/urwid/wimp.py +0 -0
  314. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/dependency_links.txt +0 -0
  315. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/not-zip-safe +0 -0
  316. {urwid-3.0.0 → urwid-3.0.1}/urwid.egg-info/top_level.txt +0 -0
@@ -16,7 +16,6 @@ on:
16
16
  - "docs/**"
17
17
  - "README.rst"
18
18
  - "urwid/**"
19
- - "setup.py"
20
19
  - "pyproject.toml"
21
20
  - ".github/workflows/documentation.yml"
22
21
 
@@ -12,7 +12,6 @@ on:
12
12
  paths:
13
13
  - "urwid/**"
14
14
  - "source/**"
15
- - "setup.py"
16
15
  - "pyproject.toml"
17
16
  - "MANIFEST.in"
18
17
  - "README.rst"
@@ -116,10 +115,6 @@ jobs:
116
115
  # , "macos-latest"
117
116
  # enable macOS only if OS specific branch will be added
118
117
  python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13" ]
119
- exclude:
120
- # Not supported by external requirements
121
- - os: "windows-latest"
122
- python-version: "3.13"
123
118
 
124
119
  steps:
125
120
  - uses: actions/checkout@v4
@@ -26,13 +26,13 @@ repos:
26
26
 
27
27
  - repo: https://github.com/astral-sh/ruff-pre-commit
28
28
  # Ruff version.
29
- rev: v0.11.6
29
+ rev: v0.11.8
30
30
  hooks:
31
31
  - id: ruff
32
32
  args: [ --fix, --exit-non-zero-on-fix ]
33
33
 
34
34
  - repo: https://github.com/adrienverge/yamllint.git
35
- rev: v1.37.0
35
+ rev: v1.37.1
36
36
  hooks:
37
37
  - id: yamllint
38
38
 
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: urwid
3
- Version: 3.0.0
3
+ Version: 3.0.1
4
4
  Summary: A full-featured console (xterm et al.) user interface library
5
- Home-page: https://urwid.org/
6
5
  Author-email: Ian Ward <ian@excess.org>
7
6
  License: LGPL-2.1-only
8
7
  Project-URL: Homepage, https://urwid.org/
@@ -31,7 +30,7 @@ Classifier: Programming Language :: Python :: 3.13
31
30
  Classifier: Programming Language :: Python :: 3 :: Only
32
31
  Classifier: Programming Language :: Python :: Implementation :: CPython
33
32
  Classifier: Programming Language :: Python :: Implementation :: PyPy
34
- Requires-Python: >3.7
33
+ Requires-Python: >=3.9.0
35
34
  Description-Content-Type: text/x-rst
36
35
  License-File: COPYING
37
36
  Requires-Dist: wcwidth
@@ -42,8 +41,8 @@ Requires-Dist: PyGObject; extra == "glib"
42
41
  Provides-Extra: tornado
43
42
  Requires-Dist: tornado>=5.0; extra == "tornado"
44
43
  Provides-Extra: trio
45
- Requires-Dist: trio>=0.22.0; extra == "trio"
46
- Requires-Dist: exceptiongroup; extra == "trio"
44
+ Requires-Dist: trio>=0.24.0; extra == "trio"
45
+ Requires-Dist: exceptiongroup; python_version < "3.11" and extra == "trio"
47
46
  Provides-Extra: twisted
48
47
  Requires-Dist: twisted; extra == "twisted"
49
48
  Provides-Extra: zmq
@@ -52,9 +51,7 @@ Provides-Extra: serial
52
51
  Requires-Dist: pyserial; extra == "serial"
53
52
  Provides-Extra: lcd
54
53
  Requires-Dist: pyserial; extra == "lcd"
55
- Dynamic: home-page
56
54
  Dynamic: license-file
57
- Dynamic: requires-python
58
55
 
59
56
  Urwid
60
57
  =====
@@ -2,6 +2,19 @@
2
2
  Changelog
3
3
  ---------
4
4
 
5
+ Urwid 3.0.1
6
+ ===========
7
+
8
+ 2025-05-07
9
+
10
+ Bug fixes 🕷
11
+ ++++++++++++
12
+ * Packaging: drop setup.py and adjust requirements by @penguinolog in https://github.com/urwid/urwid/pull/1018
13
+ Not updated `setup.py` lead to wrong metadata and mark of release 3.0.0 as Python 3.7 compatible.
14
+ Since urwid is distribluted in the pre-packaged format (wheel),
15
+ missing `setup.py` will not affect old toolchain users except special cases (manually enforced sdist usage).
16
+ * Python 3.14 compatibility: adjust `AsyncioEventLoop` by @penguinolog in https://github.com/urwid/urwid/pull/1019
17
+
5
18
  Urwid 3.0.0
6
19
  ===========
7
20
 
@@ -45,10 +45,10 @@ dependencies = {file = ["requirements.txt"]}
45
45
  classifiers = {file = ["classifiers.txt"]}
46
46
 
47
47
  [project.optional-dependencies]
48
- curses = ["windows-curses;sys_platform=='win32'"]
48
+ curses = ["windows-curses; sys_platform == 'win32'"]
49
49
  glib = ["PyGObject"]
50
50
  tornado = ["tornado>=5.0"]
51
- trio = ["trio>=0.22.0", "exceptiongroup"]
51
+ trio = ["trio>=0.24.0", "exceptiongroup; python_version < '3.11'"]
52
52
  twisted = ["twisted"]
53
53
  zmq = ["zmq"]
54
54
  # for lcd_display
@@ -213,7 +213,17 @@ class SelectEventLoopTest(unittest.TestCase, EventLoopTestMixin):
213
213
  @unittest.skipIf(IS_WINDOWS, "Windows is temporary not supported by AsyncioEventLoop.")
214
214
  class AsyncioEventLoopTest(unittest.TestCase, EventLoopTestMixin):
215
215
  def setUp(self):
216
- self.evl = urwid.AsyncioEventLoop()
216
+ if sys.version_info[:2] < (3, 11):
217
+ self.loop = asyncio.get_event_loop_policy().get_event_loop()
218
+ self.evl_runner = None
219
+ else:
220
+ self.evl_runner = asyncio.Runner(loop_factory=asyncio.SelectorEventLoop)
221
+ self.loop = self.evl_runner.get_loop()
222
+ self.evl = urwid.AsyncioEventLoop(loop=self.loop)
223
+
224
+ def tearDown(self):
225
+ if self.evl_runner is not None:
226
+ self.evl_runner.close()
217
227
 
218
228
  _expected_idle_handle = None
219
229
 
@@ -233,7 +243,7 @@ class AsyncioEventLoopTest(unittest.TestCase, EventLoopTestMixin):
233
243
  result = 1 / 0 # Simulate error in coroutine
234
244
  return result
235
245
 
236
- asyncio.ensure_future(error_coro(), loop=asyncio.get_event_loop_policy().get_event_loop())
246
+ asyncio.ensure_future(error_coro(), loop=self.loop)
237
247
  self.assertRaises(ZeroDivisionError, evl.run)
238
248
 
239
249
 
@@ -1170,7 +1170,7 @@ def cview_trim_rows(cv, rows: int):
1170
1170
 
1171
1171
 
1172
1172
  def cview_trim_top(cv, trim: int):
1173
- return (cv[0], trim + cv[1], cv[2], cv[3] - trim) + cv[4:]
1173
+ return (cv[0], trim + cv[1], cv[2], cv[3] - trim, *cv[4:])
1174
1174
 
1175
1175
 
1176
1176
  def cview_trim_left(cv, trim: int):
@@ -41,7 +41,6 @@ if typing.TYPE_CHECKING:
41
41
  _T = typing.TypeVar("_T")
42
42
 
43
43
  __all__ = ("AsyncioEventLoop",)
44
- IS_WINDOWS = sys.platform == "win32"
45
44
 
46
45
 
47
46
  class AsyncioEventLoop(EventLoop):
@@ -67,20 +66,37 @@ class AsyncioEventLoop(EventLoop):
67
66
  def __init__(self, *, loop: asyncio.AbstractEventLoop | None = None, **kwargs) -> None:
68
67
  super().__init__()
69
68
  self.logger = logging.getLogger(__name__).getChild(self.__class__.__name__)
70
- if loop:
71
- self._loop: asyncio.AbstractEventLoop = loop
69
+
70
+ if sys.version_info[:2] < (3, 11):
72
71
  self._event_loop_policy_altered: bool = False
73
72
  self._original_event_loop_policy: asyncio.AbstractEventLoopPolicy | None = None
74
- else:
75
- self._original_event_loop_policy = asyncio.get_event_loop_policy()
76
- if IS_WINDOWS and not isinstance(self._original_event_loop_policy, asyncio.WindowsSelectorEventLoopPolicy):
77
- self.logger.debug("Set WindowsSelectorEventLoopPolicy as asyncio event loop policy")
78
- asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
79
- self._event_loop_policy_altered = True
73
+
74
+ if loop:
75
+ self._loop: asyncio.AbstractEventLoop = loop
80
76
  else:
81
- self._event_loop_policy_altered = False
77
+ self._original_event_loop_policy = asyncio.get_event_loop_policy()
78
+ if sys.platform == "win32" and not isinstance(
79
+ self._original_event_loop_policy, asyncio.WindowsSelectorEventLoopPolicy
80
+ ):
81
+ self.logger.debug("Set WindowsSelectorEventLoopPolicy as asyncio event loop policy")
82
+ asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
83
+ self._event_loop_policy_altered = True
84
+ else:
85
+ self._event_loop_policy_altered = False
86
+
87
+ self._loop = asyncio.get_event_loop()
82
88
 
83
- self._loop = asyncio.get_event_loop()
89
+ else:
90
+ self._runner: asyncio.Runner | None = None
91
+
92
+ if loop:
93
+ self._loop: asyncio.AbstractEventLoop = loop
94
+ else:
95
+ try:
96
+ self._loop = asyncio.get_running_loop()
97
+ except RuntimeError:
98
+ self._runner = asyncio.Runner(loop_factory=asyncio.SelectorEventLoop)
99
+ self._loop = self._runner.get_loop()
84
100
 
85
101
  self._exc: BaseException | None = None
86
102
 
@@ -89,8 +105,11 @@ class AsyncioEventLoop(EventLoop):
89
105
  self._idle_callbacks: dict[int, Callable[[], typing.Any]] = {}
90
106
 
91
107
  def __del__(self) -> None:
92
- if self._event_loop_policy_altered:
93
- asyncio.set_event_loop_policy(self._original_event_loop_policy) # Restore default event loop policy
108
+ if sys.version_info[:2] < (3, 11):
109
+ if self._event_loop_policy_altered:
110
+ asyncio.set_event_loop_policy(self._original_event_loop_policy) # Restore default event loop policy
111
+ elif self._runner is not None:
112
+ self._runner.close()
94
113
 
95
114
  def _also_call_idle(self, callback: Callable[_Spec, _T]) -> Callable[_Spec, _T]:
96
115
  """
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '3.0.0'
21
- __version_tuple__ = version_tuple = (3, 0, 0)
20
+ __version__ = version = '3.0.1'
21
+ __version_tuple__ = version_tuple = (3, 0, 1)
@@ -1,8 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: urwid
3
- Version: 3.0.0
3
+ Version: 3.0.1
4
4
  Summary: A full-featured console (xterm et al.) user interface library
5
- Home-page: https://urwid.org/
6
5
  Author-email: Ian Ward <ian@excess.org>
7
6
  License: LGPL-2.1-only
8
7
  Project-URL: Homepage, https://urwid.org/
@@ -31,7 +30,7 @@ Classifier: Programming Language :: Python :: 3.13
31
30
  Classifier: Programming Language :: Python :: 3 :: Only
32
31
  Classifier: Programming Language :: Python :: Implementation :: CPython
33
32
  Classifier: Programming Language :: Python :: Implementation :: PyPy
34
- Requires-Python: >3.7
33
+ Requires-Python: >=3.9.0
35
34
  Description-Content-Type: text/x-rst
36
35
  License-File: COPYING
37
36
  Requires-Dist: wcwidth
@@ -42,8 +41,8 @@ Requires-Dist: PyGObject; extra == "glib"
42
41
  Provides-Extra: tornado
43
42
  Requires-Dist: tornado>=5.0; extra == "tornado"
44
43
  Provides-Extra: trio
45
- Requires-Dist: trio>=0.22.0; extra == "trio"
46
- Requires-Dist: exceptiongroup; extra == "trio"
44
+ Requires-Dist: trio>=0.24.0; extra == "trio"
45
+ Requires-Dist: exceptiongroup; python_version < "3.11" and extra == "trio"
47
46
  Provides-Extra: twisted
48
47
  Requires-Dist: twisted; extra == "twisted"
49
48
  Provides-Extra: zmq
@@ -52,9 +51,7 @@ Provides-Extra: serial
52
51
  Requires-Dist: pyserial; extra == "serial"
53
52
  Provides-Extra: lcd
54
53
  Requires-Dist: pyserial; extra == "lcd"
55
- Dynamic: home-page
56
54
  Dynamic: license-file
57
- Dynamic: requires-python
58
55
 
59
56
  Urwid
60
57
  =====
@@ -14,7 +14,6 @@ pylint-requirements.txt
14
14
  pyproject.toml
15
15
  requirements.txt
16
16
  ruff-requirements.txt
17
- setup.py
18
17
  test_requirements.txt
19
18
  tox.ini
20
19
  .devcontainer/dev.dockerfile
@@ -18,7 +18,9 @@ pyserial
18
18
  tornado>=5.0
19
19
 
20
20
  [trio]
21
- trio>=0.22.0
21
+ trio>=0.24.0
22
+
23
+ [trio:python_version < "3.11"]
22
24
  exceptiongroup
23
25
 
24
26
  [twisted]
urwid-3.0.0/setup.py DELETED
@@ -1,33 +0,0 @@
1
- # Urwid setup.py exports the useful bits
2
- # Copyright (C) 2004-2014 Ian Ward
3
- #
4
- # This library is free software; you can redistribute it and/or
5
- # modify it under the terms of the GNU Lesser General Public
6
- # License as published by the Free Software Foundation; either
7
- # version 2.1 of the License, or (at your option) any later version.
8
- #
9
- # This library is distributed in the hope that it will be useful,
10
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
- # Lesser General Public License for more details.
13
- #
14
- # You should have received a copy of the GNU Lesser General Public
15
- # License along with this library; if not, write to the Free Software
16
- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
- #
18
- # Urwid web site: https://urwid.org/
19
-
20
- from __future__ import annotations
21
-
22
- from setuptools import setup
23
-
24
- setup(
25
- name="urwid",
26
- url="https://urwid.org/",
27
- python_requires=">3.7",
28
- setup_requires=[
29
- "setuptools >= 61.0.0",
30
- "setuptools_scm[toml]>=7.0",
31
- "wheel",
32
- ],
33
- )
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes