From e6256f296f62f5149b7b98214a5ad93d90bc71aa Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Fri, 20 Dec 2024 22:52:03 +1000 Subject: [PATCH 01/46] Revert "packaging: Try uv path dependencies in projects" This reverts commit b1eb3d30f50a880e24b2fe061ac26357a8010e7d. - Other projects couldn't depend on subprojects anymore. --- eris/pyproject.toml | 11 +++-------- eris/uv.lock | 21 ++++++--------------- fill3/pyproject.toml | 5 +---- fill3/uv.lock | 7 ++----- lscolors/pyproject.toml | 5 +---- lscolors/uv.lock | 7 ++----- termstr/pyproject.toml | 2 -- 7 files changed, 15 insertions(+), 43 deletions(-) diff --git a/eris/pyproject.toml b/eris/pyproject.toml index 4a3109b..38e45d1 100644 --- a/eris/pyproject.toml +++ b/eris/pyproject.toml @@ -1,10 +1,5 @@ tool.uv.package = true -[tool.uv.sources] -lscolors = { path = "../lscolors", editable = true } -termstr = { path = "../termstr", editable = true } -fill3 = { path = "../fill3", editable = true } - [project] name = "eris" version = "v2024.12.20" @@ -17,13 +12,13 @@ requires-python = ">=3.11" dependencies = [ "decorator==5.1.1", "docopt==0.6.2", - "fill3", - "lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=lscolors", "pexpect==4.8.0", "pillow==10.0.0", "pygments==2.16.1", "pyinotify==0.9.6", - "termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", "toml==0.10.2", ] diff --git a/eris/uv.lock b/eris/uv.lock index 2effee4..63e018b 100644 --- a/eris/uv.lock +++ b/eris/uv.lock @@ -43,38 +43,32 @@ dependencies = [ requires-dist = [ { name = "decorator", specifier = "==5.1.1" }, { name = "docopt", specifier = "==0.6.2" }, - { name = "fill3", editable = "../fill3" }, - { name = "lscolors", editable = "../lscolors" }, + { name = "fill3", git = "https://gitlab.com/ahamilton/eris?subdirectory=fill3&rev=v2024.12.18" }, + { name = "lscolors", git = "https://gitlab.com/ahamilton/eris?subdirectory=lscolors&rev=v2024.12.18" }, { name = "pexpect", specifier = "==4.8.0" }, { name = "pillow", specifier = "==10.0.0" }, { name = "pygments", specifier = "==2.16.1" }, { name = "pyinotify", specifier = "==0.9.6" }, - { name = "termstr", editable = "../termstr" }, + { name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }, { name = "toml", specifier = "==0.10.2" }, ] [[package]] name = "fill3" version = "2024.12.18" -source = { editable = "../fill3" } +source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=fill3&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } dependencies = [ { name = "termstr" }, ] -[package.metadata] -requires-dist = [{ name = "termstr", virtual = "../termstr" }] - [[package]] name = "lscolors" version = "2024.12.18" -source = { editable = "../lscolors" } +source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=lscolors&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } dependencies = [ { name = "termstr" }, ] -[package.metadata] -requires-dist = [{ name = "termstr", virtual = "../termstr" }] - [[package]] name = "pexpect" version = "4.8.0" @@ -142,14 +136,11 @@ sdist = { url = "https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c12496 [[package]] name = "termstr" version = "2024.12.18" -source = { editable = "../termstr" } +source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } dependencies = [ { name = "cwcwidth" }, ] -[package.metadata] -requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] - [[package]] name = "toml" version = "0.10.2" diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index c1468f8..8154e6f 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -1,8 +1,5 @@ tool.uv.package = true -[tool.uv.sources] -termstr = { path = "../termstr" } - [project] name = "fill3" version = "v2024.12.20" @@ -12,7 +9,7 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", ] [project.urls] diff --git a/fill3/uv.lock b/fill3/uv.lock index f09c5f5..6e50813 100644 --- a/fill3/uv.lock +++ b/fill3/uv.lock @@ -16,15 +16,12 @@ dependencies = [ ] [package.metadata] -requires-dist = [{ name = "termstr", virtual = "../termstr" }] +requires-dist = [{ name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }] [[package]] name = "termstr" version = "2024.12.18" -source = { virtual = "../termstr" } +source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } dependencies = [ { name = "cwcwidth" }, ] - -[package.metadata] -requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index e5676d8..3498018 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -5,9 +5,6 @@ build-backend = "hatchling.build" [tool.hatch.metadata] allow-direct-references = true -[tool.uv.sources] -termstr = { path = "../termstr" } - [project] name = "lscolors" version = "v2024.12.20" @@ -17,7 +14,7 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", ] [project.urls] diff --git a/lscolors/uv.lock b/lscolors/uv.lock index ba7557a..aa9ed5a 100644 --- a/lscolors/uv.lock +++ b/lscolors/uv.lock @@ -16,15 +16,12 @@ dependencies = [ ] [package.metadata] -requires-dist = [{ name = "termstr", virtual = "../termstr" }] +requires-dist = [{ name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }] [[package]] name = "termstr" version = "2024.12.18" -source = { virtual = "../termstr" } +source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } dependencies = [ { name = "cwcwidth" }, ] - -[package.metadata] -requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index d268d31..6b79af4 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -13,5 +13,3 @@ dependencies = [ [project.urls] Homepage = "https://github.com/ahamilton/eris" -[tool.setuptools] -py-modules=["termstr"] From fe5389d698aa5bafb7f9b786f0a54fc37228e9c3 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 17:29:38 +1000 Subject: [PATCH 02/46] packaging: Try using uv workspaces. --- eris/LICENSE | 1 - eris/{eris => }/__init__.py | 0 eris/{eris => }/__main__.py | 0 eris/{eris => }/paged_list.py | 0 eris/{eris => }/pydoc_color.py | 0 eris/{eris => }/tools.py | 0 eris/{eris => }/tools.toml | 0 eris/{eris => }/webserver.py | 0 eris/{eris => }/worker.py | 0 fill3/pyproject.toml | 5 ++- fill3/uv.lock | 27 ------------- lscolors/pyproject.toml | 5 ++- lscolors/uv.lock | 27 ------------- eris/pyproject.toml => pyproject.toml | 14 +++++-- termstr/pyproject.toml | 1 - termstr/uv.lock | 19 --------- {eris/tests => tests}/__main___test.py | 0 {eris/tests => tests}/golden-files/help | 0 {eris/tests => tests}/golden-files/initial | 0 .../golden-files/input/circle.bmp | Bin .../golden-files/input/circle.gif | Bin .../golden-files/input/circle.jpg | Bin .../golden-files/input/circle.png | Bin .../golden-files/input/circle.ppm | Bin .../golden-files/input/circle.tga | Bin .../golden-files/input/circle.tiff | Bin .../golden-files/input/clojure-util.java | 0 .../golden-files/input/hello.c | 0 .../golden-files/input/hello.cpp | 0 .../golden-files/input/hello.h | 0 .../golden-files/input/hi.html | 0 .../golden-files/input/hi.tar.bz2 | Bin .../golden-files/input/hi.tar.gz | Bin .../tests => tests}/golden-files/input/hi.tgz | Bin .../tests => tests}/golden-files/input/hi.zip | Bin .../tests => tests}/golden-files/input/hi3.py | 0 .../golden-files/input/hi3_test.py | 0 .../golden-files/input/hi_test.py | 0 .../golden-files/input/libieee.a | Bin .../golden-files/input/libpcprofile.so | Bin .../golden-files/input/perl.pl | 0 .../golden-files/input/root.php | 0 .../golden-files/input/rotatingtree.o | Bin .../golden-files/input/standard.pdf | Bin .../golden-files/input/test_foo.py | 0 {eris/tests => tests}/golden-files/log | 0 .../tests => tests}/golden-files/log-original | 0 .../results/antic-closure-util_java | 0 .../results/c_syntax_clang-hello_c | 0 .../golden-files/results/c_syntax_gcc-hello_c | 0 .../golden-files/results/contents-hi3_py | 0 .../results/cpp_syntax_clang-hello_cpp | 0 .../results/cpp_syntax_gcc-hello_cpp | 0 .../golden-files/results/html2text-hi_html | 0 .../golden-files/results/html_syntax-hi_html | 0 .../results/jlint-javaversion_class | 0 .../golden-files/results/metadata-hi3_py | 0 .../golden-files/results/mypy-hi3_py | 0 .../golden-files/results/nm-libieee_a | 0 .../golden-files/results/nm-libpcprofile_so | 0 .../objdump_disassemble-rotatingtree_o | 0 .../results/objdump_headers-rotatingtree_o | 0 .../golden-files/results/pdf2txt-standard_pdf | 0 .../golden-files/results/perl_syntax-perl_pl | 0 .../golden-files/results/perltidy-perl_pl | 0 .../golden-files/results/php8_syntax-root_php | 0 .../golden-files/results/pil-circle_bmp | 0 .../golden-files/results/pil-circle_gif | 0 .../golden-files/results/pil-circle_jpg | 0 .../golden-files/results/pil-circle_png | 0 .../golden-files/results/pil-circle_ppm | 0 .../golden-files/results/pil-circle_tga | 0 .../golden-files/results/pil-circle_tiff | 0 .../golden-files/results/pil_half-circle_png | 0 .../golden-files/results/pycodestyle-hi3_py | 0 .../golden-files/results/pyflakes-hi3_py | 0 .../golden-files/results/pylint-hi3_py | 0 .../golden-files/results/python_gut-hi3_py | 0 .../golden-files/results/python_mccabe-hi3_py | 0 .../results/python_modulefinder-hi3_py | 0 .../golden-files/results/python_syntax-hi3_py | 0 .../results/python_unittests-hi3_py | 0 .../results/python_unittests-hi3_test_py | 0 .../results/python_unittests-test_foo_py | 0 .../results/readelf-rotatingtree_o | 0 .../golden-files/results/zipinfo-hi_zip | 0 .../golden-files/summary-initial | 0 .../golden-files/summary-one-element | 0 .../golden-files/summary-two-element | 0 .../golden-files/window-orientation | 0 .../golden-files/window-orientation-original | 0 {eris/tests => tests}/golden.py | 0 {eris/tests => tests}/paged_list_test.py | 0 {eris/tests => tests}/tools_test.py | 0 {eris/tests => tests}/worker_test.py | 0 eris/uv.lock => uv.lock | 37 +++++++++++++----- 96 files changed, 46 insertions(+), 90 deletions(-) delete mode 120000 eris/LICENSE rename eris/{eris => }/__init__.py (100%) rename eris/{eris => }/__main__.py (100%) rename eris/{eris => }/paged_list.py (100%) rename eris/{eris => }/pydoc_color.py (100%) rename eris/{eris => }/tools.py (100%) rename eris/{eris => }/tools.toml (100%) rename eris/{eris => }/webserver.py (100%) rename eris/{eris => }/worker.py (100%) delete mode 100644 fill3/uv.lock delete mode 100644 lscolors/uv.lock rename eris/pyproject.toml => pyproject.toml (74%) delete mode 100644 termstr/uv.lock rename {eris/tests => tests}/__main___test.py (100%) rename {eris/tests => tests}/golden-files/help (100%) rename {eris/tests => tests}/golden-files/initial (100%) rename {eris/tests => tests}/golden-files/input/circle.bmp (100%) rename {eris/tests => tests}/golden-files/input/circle.gif (100%) rename {eris/tests => tests}/golden-files/input/circle.jpg (100%) rename {eris/tests => tests}/golden-files/input/circle.png (100%) rename {eris/tests => tests}/golden-files/input/circle.ppm (100%) rename {eris/tests => tests}/golden-files/input/circle.tga (100%) rename {eris/tests => tests}/golden-files/input/circle.tiff (100%) rename {eris/tests => tests}/golden-files/input/clojure-util.java (100%) rename {eris/tests => tests}/golden-files/input/hello.c (100%) rename {eris/tests => tests}/golden-files/input/hello.cpp (100%) rename {eris/tests => tests}/golden-files/input/hello.h (100%) rename {eris/tests => tests}/golden-files/input/hi.html (100%) rename {eris/tests => tests}/golden-files/input/hi.tar.bz2 (100%) rename {eris/tests => tests}/golden-files/input/hi.tar.gz (100%) rename {eris/tests => tests}/golden-files/input/hi.tgz (100%) rename {eris/tests => tests}/golden-files/input/hi.zip (100%) rename {eris/tests => tests}/golden-files/input/hi3.py (100%) rename {eris/tests => tests}/golden-files/input/hi3_test.py (100%) rename {eris/tests => tests}/golden-files/input/hi_test.py (100%) rename {eris/tests => tests}/golden-files/input/libieee.a (100%) rename {eris/tests => tests}/golden-files/input/libpcprofile.so (100%) rename {eris/tests => tests}/golden-files/input/perl.pl (100%) rename {eris/tests => tests}/golden-files/input/root.php (100%) rename {eris/tests => tests}/golden-files/input/rotatingtree.o (100%) rename {eris/tests => tests}/golden-files/input/standard.pdf (100%) rename {eris/tests => tests}/golden-files/input/test_foo.py (100%) rename {eris/tests => tests}/golden-files/log (100%) rename {eris/tests => tests}/golden-files/log-original (100%) rename {eris/tests => tests}/golden-files/results/antic-closure-util_java (100%) rename {eris/tests => tests}/golden-files/results/c_syntax_clang-hello_c (100%) rename {eris/tests => tests}/golden-files/results/c_syntax_gcc-hello_c (100%) rename {eris/tests => tests}/golden-files/results/contents-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/cpp_syntax_clang-hello_cpp (100%) rename {eris/tests => tests}/golden-files/results/cpp_syntax_gcc-hello_cpp (100%) rename {eris/tests => tests}/golden-files/results/html2text-hi_html (100%) rename {eris/tests => tests}/golden-files/results/html_syntax-hi_html (100%) rename {eris/tests => tests}/golden-files/results/jlint-javaversion_class (100%) rename {eris/tests => tests}/golden-files/results/metadata-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/mypy-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/nm-libieee_a (100%) rename {eris/tests => tests}/golden-files/results/nm-libpcprofile_so (100%) rename {eris/tests => tests}/golden-files/results/objdump_disassemble-rotatingtree_o (100%) rename {eris/tests => tests}/golden-files/results/objdump_headers-rotatingtree_o (100%) rename {eris/tests => tests}/golden-files/results/pdf2txt-standard_pdf (100%) rename {eris/tests => tests}/golden-files/results/perl_syntax-perl_pl (100%) rename {eris/tests => tests}/golden-files/results/perltidy-perl_pl (100%) rename {eris/tests => tests}/golden-files/results/php8_syntax-root_php (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_bmp (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_gif (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_jpg (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_png (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_ppm (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_tga (100%) rename {eris/tests => tests}/golden-files/results/pil-circle_tiff (100%) rename {eris/tests => tests}/golden-files/results/pil_half-circle_png (100%) rename {eris/tests => tests}/golden-files/results/pycodestyle-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/pyflakes-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/pylint-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_gut-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_mccabe-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_modulefinder-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_syntax-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_unittests-hi3_py (100%) rename {eris/tests => tests}/golden-files/results/python_unittests-hi3_test_py (100%) rename {eris/tests => tests}/golden-files/results/python_unittests-test_foo_py (100%) rename {eris/tests => tests}/golden-files/results/readelf-rotatingtree_o (100%) rename {eris/tests => tests}/golden-files/results/zipinfo-hi_zip (100%) rename {eris/tests => tests}/golden-files/summary-initial (100%) rename {eris/tests => tests}/golden-files/summary-one-element (100%) rename {eris/tests => tests}/golden-files/summary-two-element (100%) rename {eris/tests => tests}/golden-files/window-orientation (100%) rename {eris/tests => tests}/golden-files/window-orientation-original (100%) rename {eris/tests => tests}/golden.py (100%) rename {eris/tests => tests}/paged_list_test.py (100%) rename {eris/tests => tests}/tools_test.py (100%) rename {eris/tests => tests}/worker_test.py (100%) rename eris/uv.lock => uv.lock (93%) diff --git a/eris/LICENSE b/eris/LICENSE deleted file mode 120000 index ea5b606..0000000 --- a/eris/LICENSE +++ /dev/null @@ -1 +0,0 @@ -../LICENSE \ No newline at end of file diff --git a/eris/eris/__init__.py b/eris/__init__.py similarity index 100% rename from eris/eris/__init__.py rename to eris/__init__.py diff --git a/eris/eris/__main__.py b/eris/__main__.py similarity index 100% rename from eris/eris/__main__.py rename to eris/__main__.py diff --git a/eris/eris/paged_list.py b/eris/paged_list.py similarity index 100% rename from eris/eris/paged_list.py rename to eris/paged_list.py diff --git a/eris/eris/pydoc_color.py b/eris/pydoc_color.py similarity index 100% rename from eris/eris/pydoc_color.py rename to eris/pydoc_color.py diff --git a/eris/eris/tools.py b/eris/tools.py similarity index 100% rename from eris/eris/tools.py rename to eris/tools.py diff --git a/eris/eris/tools.toml b/eris/tools.toml similarity index 100% rename from eris/eris/tools.toml rename to eris/tools.toml diff --git a/eris/eris/webserver.py b/eris/webserver.py similarity index 100% rename from eris/eris/webserver.py rename to eris/webserver.py diff --git a/eris/eris/worker.py b/eris/worker.py similarity index 100% rename from eris/eris/worker.py rename to eris/worker.py diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 8154e6f..0893327 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -9,8 +9,11 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", + "termstr", ] [project.urls] Homepage = "https://github.com/ahamilton/eris" + +[tool.uv.sources] +termstr = { workspace = true } diff --git a/fill3/uv.lock b/fill3/uv.lock deleted file mode 100644 index 6e50813..0000000 --- a/fill3/uv.lock +++ /dev/null @@ -1,27 +0,0 @@ -version = 1 -requires-python = ">=3.11" - -[[package]] -name = "cwcwidth" -version = "0.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071 } - -[[package]] -name = "fill3" -version = "2024.12.18" -source = { editable = "." } -dependencies = [ - { name = "termstr" }, -] - -[package.metadata] -requires-dist = [{ name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }] - -[[package]] -name = "termstr" -version = "2024.12.18" -source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } -dependencies = [ - { name = "cwcwidth" }, -] diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index 3498018..e2a2617 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -14,9 +14,12 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", + "termstr", ] +[tool.uv.sources] +termstr = { workspace = true } + [project.urls] Homepage = "https://github.com/ahamilton/eris" diff --git a/lscolors/uv.lock b/lscolors/uv.lock deleted file mode 100644 index aa9ed5a..0000000 --- a/lscolors/uv.lock +++ /dev/null @@ -1,27 +0,0 @@ -version = 1 -requires-python = ">=3.11" - -[[package]] -name = "cwcwidth" -version = "0.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071 } - -[[package]] -name = "lscolors" -version = "2024.12.18" -source = { editable = "." } -dependencies = [ - { name = "termstr" }, -] - -[package.metadata] -requires-dist = [{ name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }] - -[[package]] -name = "termstr" -version = "2024.12.18" -source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } -dependencies = [ - { name = "cwcwidth" }, -] diff --git a/eris/pyproject.toml b/pyproject.toml similarity index 74% rename from eris/pyproject.toml rename to pyproject.toml index 38e45d1..f155617 100644 --- a/eris/pyproject.toml +++ b/pyproject.toml @@ -12,16 +12,24 @@ requires-python = ">=3.11" dependencies = [ "decorator==5.1.1", "docopt==0.6.2", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=lscolors", + "fill3", + "lscolors", "pexpect==4.8.0", "pillow==10.0.0", "pygments==2.16.1", "pyinotify==0.9.6", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2024.12.18#subdirectory=termstr", + "termstr", "toml==0.10.2", ] +[tool.uv.sources] +fill3 = { workspace = true } +lscolors = { workspace = true } +termstr = { workspace = true } + +[tool.uv.workspace] +members = ["termstr", "fill3", "lscolors"] + [project.scripts] eris = "eris.__main__:entry_point" eris-worker = "eris.worker:main" diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 6b79af4..c3d8639 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -12,4 +12,3 @@ dependencies = [ [project.urls] Homepage = "https://github.com/ahamilton/eris" - diff --git a/termstr/uv.lock b/termstr/uv.lock deleted file mode 100644 index e212787..0000000 --- a/termstr/uv.lock +++ /dev/null @@ -1,19 +0,0 @@ -version = 1 -requires-python = ">=3.11" - -[[package]] -name = "cwcwidth" -version = "0.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071 } - -[[package]] -name = "termstr" -version = "2024.12.18" -source = { virtual = "." } -dependencies = [ - { name = "cwcwidth" }, -] - -[package.metadata] -requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] diff --git a/eris/tests/__main___test.py b/tests/__main___test.py similarity index 100% rename from eris/tests/__main___test.py rename to tests/__main___test.py diff --git a/eris/tests/golden-files/help b/tests/golden-files/help similarity index 100% rename from eris/tests/golden-files/help rename to tests/golden-files/help diff --git a/eris/tests/golden-files/initial b/tests/golden-files/initial similarity index 100% rename from eris/tests/golden-files/initial rename to tests/golden-files/initial diff --git a/eris/tests/golden-files/input/circle.bmp b/tests/golden-files/input/circle.bmp similarity index 100% rename from eris/tests/golden-files/input/circle.bmp rename to tests/golden-files/input/circle.bmp diff --git a/eris/tests/golden-files/input/circle.gif b/tests/golden-files/input/circle.gif similarity index 100% rename from eris/tests/golden-files/input/circle.gif rename to tests/golden-files/input/circle.gif diff --git a/eris/tests/golden-files/input/circle.jpg b/tests/golden-files/input/circle.jpg similarity index 100% rename from eris/tests/golden-files/input/circle.jpg rename to tests/golden-files/input/circle.jpg diff --git a/eris/tests/golden-files/input/circle.png b/tests/golden-files/input/circle.png similarity index 100% rename from eris/tests/golden-files/input/circle.png rename to tests/golden-files/input/circle.png diff --git a/eris/tests/golden-files/input/circle.ppm b/tests/golden-files/input/circle.ppm similarity index 100% rename from eris/tests/golden-files/input/circle.ppm rename to tests/golden-files/input/circle.ppm diff --git a/eris/tests/golden-files/input/circle.tga b/tests/golden-files/input/circle.tga similarity index 100% rename from eris/tests/golden-files/input/circle.tga rename to tests/golden-files/input/circle.tga diff --git a/eris/tests/golden-files/input/circle.tiff b/tests/golden-files/input/circle.tiff similarity index 100% rename from eris/tests/golden-files/input/circle.tiff rename to tests/golden-files/input/circle.tiff diff --git a/eris/tests/golden-files/input/clojure-util.java b/tests/golden-files/input/clojure-util.java similarity index 100% rename from eris/tests/golden-files/input/clojure-util.java rename to tests/golden-files/input/clojure-util.java diff --git a/eris/tests/golden-files/input/hello.c b/tests/golden-files/input/hello.c similarity index 100% rename from eris/tests/golden-files/input/hello.c rename to tests/golden-files/input/hello.c diff --git a/eris/tests/golden-files/input/hello.cpp b/tests/golden-files/input/hello.cpp similarity index 100% rename from eris/tests/golden-files/input/hello.cpp rename to tests/golden-files/input/hello.cpp diff --git a/eris/tests/golden-files/input/hello.h b/tests/golden-files/input/hello.h similarity index 100% rename from eris/tests/golden-files/input/hello.h rename to tests/golden-files/input/hello.h diff --git a/eris/tests/golden-files/input/hi.html b/tests/golden-files/input/hi.html similarity index 100% rename from eris/tests/golden-files/input/hi.html rename to tests/golden-files/input/hi.html diff --git a/eris/tests/golden-files/input/hi.tar.bz2 b/tests/golden-files/input/hi.tar.bz2 similarity index 100% rename from eris/tests/golden-files/input/hi.tar.bz2 rename to tests/golden-files/input/hi.tar.bz2 diff --git a/eris/tests/golden-files/input/hi.tar.gz b/tests/golden-files/input/hi.tar.gz similarity index 100% rename from eris/tests/golden-files/input/hi.tar.gz rename to tests/golden-files/input/hi.tar.gz diff --git a/eris/tests/golden-files/input/hi.tgz b/tests/golden-files/input/hi.tgz similarity index 100% rename from eris/tests/golden-files/input/hi.tgz rename to tests/golden-files/input/hi.tgz diff --git a/eris/tests/golden-files/input/hi.zip b/tests/golden-files/input/hi.zip similarity index 100% rename from eris/tests/golden-files/input/hi.zip rename to tests/golden-files/input/hi.zip diff --git a/eris/tests/golden-files/input/hi3.py b/tests/golden-files/input/hi3.py similarity index 100% rename from eris/tests/golden-files/input/hi3.py rename to tests/golden-files/input/hi3.py diff --git a/eris/tests/golden-files/input/hi3_test.py b/tests/golden-files/input/hi3_test.py similarity index 100% rename from eris/tests/golden-files/input/hi3_test.py rename to tests/golden-files/input/hi3_test.py diff --git a/eris/tests/golden-files/input/hi_test.py b/tests/golden-files/input/hi_test.py similarity index 100% rename from eris/tests/golden-files/input/hi_test.py rename to tests/golden-files/input/hi_test.py diff --git a/eris/tests/golden-files/input/libieee.a b/tests/golden-files/input/libieee.a similarity index 100% rename from eris/tests/golden-files/input/libieee.a rename to tests/golden-files/input/libieee.a diff --git a/eris/tests/golden-files/input/libpcprofile.so b/tests/golden-files/input/libpcprofile.so similarity index 100% rename from eris/tests/golden-files/input/libpcprofile.so rename to tests/golden-files/input/libpcprofile.so diff --git a/eris/tests/golden-files/input/perl.pl b/tests/golden-files/input/perl.pl similarity index 100% rename from eris/tests/golden-files/input/perl.pl rename to tests/golden-files/input/perl.pl diff --git a/eris/tests/golden-files/input/root.php b/tests/golden-files/input/root.php similarity index 100% rename from eris/tests/golden-files/input/root.php rename to tests/golden-files/input/root.php diff --git a/eris/tests/golden-files/input/rotatingtree.o b/tests/golden-files/input/rotatingtree.o similarity index 100% rename from eris/tests/golden-files/input/rotatingtree.o rename to tests/golden-files/input/rotatingtree.o diff --git a/eris/tests/golden-files/input/standard.pdf b/tests/golden-files/input/standard.pdf similarity index 100% rename from eris/tests/golden-files/input/standard.pdf rename to tests/golden-files/input/standard.pdf diff --git a/eris/tests/golden-files/input/test_foo.py b/tests/golden-files/input/test_foo.py similarity index 100% rename from eris/tests/golden-files/input/test_foo.py rename to tests/golden-files/input/test_foo.py diff --git a/eris/tests/golden-files/log b/tests/golden-files/log similarity index 100% rename from eris/tests/golden-files/log rename to tests/golden-files/log diff --git a/eris/tests/golden-files/log-original b/tests/golden-files/log-original similarity index 100% rename from eris/tests/golden-files/log-original rename to tests/golden-files/log-original diff --git a/eris/tests/golden-files/results/antic-closure-util_java b/tests/golden-files/results/antic-closure-util_java similarity index 100% rename from eris/tests/golden-files/results/antic-closure-util_java rename to tests/golden-files/results/antic-closure-util_java diff --git a/eris/tests/golden-files/results/c_syntax_clang-hello_c b/tests/golden-files/results/c_syntax_clang-hello_c similarity index 100% rename from eris/tests/golden-files/results/c_syntax_clang-hello_c rename to tests/golden-files/results/c_syntax_clang-hello_c diff --git a/eris/tests/golden-files/results/c_syntax_gcc-hello_c b/tests/golden-files/results/c_syntax_gcc-hello_c similarity index 100% rename from eris/tests/golden-files/results/c_syntax_gcc-hello_c rename to tests/golden-files/results/c_syntax_gcc-hello_c diff --git a/eris/tests/golden-files/results/contents-hi3_py b/tests/golden-files/results/contents-hi3_py similarity index 100% rename from eris/tests/golden-files/results/contents-hi3_py rename to tests/golden-files/results/contents-hi3_py diff --git a/eris/tests/golden-files/results/cpp_syntax_clang-hello_cpp b/tests/golden-files/results/cpp_syntax_clang-hello_cpp similarity index 100% rename from eris/tests/golden-files/results/cpp_syntax_clang-hello_cpp rename to tests/golden-files/results/cpp_syntax_clang-hello_cpp diff --git a/eris/tests/golden-files/results/cpp_syntax_gcc-hello_cpp b/tests/golden-files/results/cpp_syntax_gcc-hello_cpp similarity index 100% rename from eris/tests/golden-files/results/cpp_syntax_gcc-hello_cpp rename to tests/golden-files/results/cpp_syntax_gcc-hello_cpp diff --git a/eris/tests/golden-files/results/html2text-hi_html b/tests/golden-files/results/html2text-hi_html similarity index 100% rename from eris/tests/golden-files/results/html2text-hi_html rename to tests/golden-files/results/html2text-hi_html diff --git a/eris/tests/golden-files/results/html_syntax-hi_html b/tests/golden-files/results/html_syntax-hi_html similarity index 100% rename from eris/tests/golden-files/results/html_syntax-hi_html rename to tests/golden-files/results/html_syntax-hi_html diff --git a/eris/tests/golden-files/results/jlint-javaversion_class b/tests/golden-files/results/jlint-javaversion_class similarity index 100% rename from eris/tests/golden-files/results/jlint-javaversion_class rename to tests/golden-files/results/jlint-javaversion_class diff --git a/eris/tests/golden-files/results/metadata-hi3_py b/tests/golden-files/results/metadata-hi3_py similarity index 100% rename from eris/tests/golden-files/results/metadata-hi3_py rename to tests/golden-files/results/metadata-hi3_py diff --git a/eris/tests/golden-files/results/mypy-hi3_py b/tests/golden-files/results/mypy-hi3_py similarity index 100% rename from eris/tests/golden-files/results/mypy-hi3_py rename to tests/golden-files/results/mypy-hi3_py diff --git a/eris/tests/golden-files/results/nm-libieee_a b/tests/golden-files/results/nm-libieee_a similarity index 100% rename from eris/tests/golden-files/results/nm-libieee_a rename to tests/golden-files/results/nm-libieee_a diff --git a/eris/tests/golden-files/results/nm-libpcprofile_so b/tests/golden-files/results/nm-libpcprofile_so similarity index 100% rename from eris/tests/golden-files/results/nm-libpcprofile_so rename to tests/golden-files/results/nm-libpcprofile_so diff --git a/eris/tests/golden-files/results/objdump_disassemble-rotatingtree_o b/tests/golden-files/results/objdump_disassemble-rotatingtree_o similarity index 100% rename from eris/tests/golden-files/results/objdump_disassemble-rotatingtree_o rename to tests/golden-files/results/objdump_disassemble-rotatingtree_o diff --git a/eris/tests/golden-files/results/objdump_headers-rotatingtree_o b/tests/golden-files/results/objdump_headers-rotatingtree_o similarity index 100% rename from eris/tests/golden-files/results/objdump_headers-rotatingtree_o rename to tests/golden-files/results/objdump_headers-rotatingtree_o diff --git a/eris/tests/golden-files/results/pdf2txt-standard_pdf b/tests/golden-files/results/pdf2txt-standard_pdf similarity index 100% rename from eris/tests/golden-files/results/pdf2txt-standard_pdf rename to tests/golden-files/results/pdf2txt-standard_pdf diff --git a/eris/tests/golden-files/results/perl_syntax-perl_pl b/tests/golden-files/results/perl_syntax-perl_pl similarity index 100% rename from eris/tests/golden-files/results/perl_syntax-perl_pl rename to tests/golden-files/results/perl_syntax-perl_pl diff --git a/eris/tests/golden-files/results/perltidy-perl_pl b/tests/golden-files/results/perltidy-perl_pl similarity index 100% rename from eris/tests/golden-files/results/perltidy-perl_pl rename to tests/golden-files/results/perltidy-perl_pl diff --git a/eris/tests/golden-files/results/php8_syntax-root_php b/tests/golden-files/results/php8_syntax-root_php similarity index 100% rename from eris/tests/golden-files/results/php8_syntax-root_php rename to tests/golden-files/results/php8_syntax-root_php diff --git a/eris/tests/golden-files/results/pil-circle_bmp b/tests/golden-files/results/pil-circle_bmp similarity index 100% rename from eris/tests/golden-files/results/pil-circle_bmp rename to tests/golden-files/results/pil-circle_bmp diff --git a/eris/tests/golden-files/results/pil-circle_gif b/tests/golden-files/results/pil-circle_gif similarity index 100% rename from eris/tests/golden-files/results/pil-circle_gif rename to tests/golden-files/results/pil-circle_gif diff --git a/eris/tests/golden-files/results/pil-circle_jpg b/tests/golden-files/results/pil-circle_jpg similarity index 100% rename from eris/tests/golden-files/results/pil-circle_jpg rename to tests/golden-files/results/pil-circle_jpg diff --git a/eris/tests/golden-files/results/pil-circle_png b/tests/golden-files/results/pil-circle_png similarity index 100% rename from eris/tests/golden-files/results/pil-circle_png rename to tests/golden-files/results/pil-circle_png diff --git a/eris/tests/golden-files/results/pil-circle_ppm b/tests/golden-files/results/pil-circle_ppm similarity index 100% rename from eris/tests/golden-files/results/pil-circle_ppm rename to tests/golden-files/results/pil-circle_ppm diff --git a/eris/tests/golden-files/results/pil-circle_tga b/tests/golden-files/results/pil-circle_tga similarity index 100% rename from eris/tests/golden-files/results/pil-circle_tga rename to tests/golden-files/results/pil-circle_tga diff --git a/eris/tests/golden-files/results/pil-circle_tiff b/tests/golden-files/results/pil-circle_tiff similarity index 100% rename from eris/tests/golden-files/results/pil-circle_tiff rename to tests/golden-files/results/pil-circle_tiff diff --git a/eris/tests/golden-files/results/pil_half-circle_png b/tests/golden-files/results/pil_half-circle_png similarity index 100% rename from eris/tests/golden-files/results/pil_half-circle_png rename to tests/golden-files/results/pil_half-circle_png diff --git a/eris/tests/golden-files/results/pycodestyle-hi3_py b/tests/golden-files/results/pycodestyle-hi3_py similarity index 100% rename from eris/tests/golden-files/results/pycodestyle-hi3_py rename to tests/golden-files/results/pycodestyle-hi3_py diff --git a/eris/tests/golden-files/results/pyflakes-hi3_py b/tests/golden-files/results/pyflakes-hi3_py similarity index 100% rename from eris/tests/golden-files/results/pyflakes-hi3_py rename to tests/golden-files/results/pyflakes-hi3_py diff --git a/eris/tests/golden-files/results/pylint-hi3_py b/tests/golden-files/results/pylint-hi3_py similarity index 100% rename from eris/tests/golden-files/results/pylint-hi3_py rename to tests/golden-files/results/pylint-hi3_py diff --git a/eris/tests/golden-files/results/python_gut-hi3_py b/tests/golden-files/results/python_gut-hi3_py similarity index 100% rename from eris/tests/golden-files/results/python_gut-hi3_py rename to tests/golden-files/results/python_gut-hi3_py diff --git a/eris/tests/golden-files/results/python_mccabe-hi3_py b/tests/golden-files/results/python_mccabe-hi3_py similarity index 100% rename from eris/tests/golden-files/results/python_mccabe-hi3_py rename to tests/golden-files/results/python_mccabe-hi3_py diff --git a/eris/tests/golden-files/results/python_modulefinder-hi3_py b/tests/golden-files/results/python_modulefinder-hi3_py similarity index 100% rename from eris/tests/golden-files/results/python_modulefinder-hi3_py rename to tests/golden-files/results/python_modulefinder-hi3_py diff --git a/eris/tests/golden-files/results/python_syntax-hi3_py b/tests/golden-files/results/python_syntax-hi3_py similarity index 100% rename from eris/tests/golden-files/results/python_syntax-hi3_py rename to tests/golden-files/results/python_syntax-hi3_py diff --git a/eris/tests/golden-files/results/python_unittests-hi3_py b/tests/golden-files/results/python_unittests-hi3_py similarity index 100% rename from eris/tests/golden-files/results/python_unittests-hi3_py rename to tests/golden-files/results/python_unittests-hi3_py diff --git a/eris/tests/golden-files/results/python_unittests-hi3_test_py b/tests/golden-files/results/python_unittests-hi3_test_py similarity index 100% rename from eris/tests/golden-files/results/python_unittests-hi3_test_py rename to tests/golden-files/results/python_unittests-hi3_test_py diff --git a/eris/tests/golden-files/results/python_unittests-test_foo_py b/tests/golden-files/results/python_unittests-test_foo_py similarity index 100% rename from eris/tests/golden-files/results/python_unittests-test_foo_py rename to tests/golden-files/results/python_unittests-test_foo_py diff --git a/eris/tests/golden-files/results/readelf-rotatingtree_o b/tests/golden-files/results/readelf-rotatingtree_o similarity index 100% rename from eris/tests/golden-files/results/readelf-rotatingtree_o rename to tests/golden-files/results/readelf-rotatingtree_o diff --git a/eris/tests/golden-files/results/zipinfo-hi_zip b/tests/golden-files/results/zipinfo-hi_zip similarity index 100% rename from eris/tests/golden-files/results/zipinfo-hi_zip rename to tests/golden-files/results/zipinfo-hi_zip diff --git a/eris/tests/golden-files/summary-initial b/tests/golden-files/summary-initial similarity index 100% rename from eris/tests/golden-files/summary-initial rename to tests/golden-files/summary-initial diff --git a/eris/tests/golden-files/summary-one-element b/tests/golden-files/summary-one-element similarity index 100% rename from eris/tests/golden-files/summary-one-element rename to tests/golden-files/summary-one-element diff --git a/eris/tests/golden-files/summary-two-element b/tests/golden-files/summary-two-element similarity index 100% rename from eris/tests/golden-files/summary-two-element rename to tests/golden-files/summary-two-element diff --git a/eris/tests/golden-files/window-orientation b/tests/golden-files/window-orientation similarity index 100% rename from eris/tests/golden-files/window-orientation rename to tests/golden-files/window-orientation diff --git a/eris/tests/golden-files/window-orientation-original b/tests/golden-files/window-orientation-original similarity index 100% rename from eris/tests/golden-files/window-orientation-original rename to tests/golden-files/window-orientation-original diff --git a/eris/tests/golden.py b/tests/golden.py similarity index 100% rename from eris/tests/golden.py rename to tests/golden.py diff --git a/eris/tests/paged_list_test.py b/tests/paged_list_test.py similarity index 100% rename from eris/tests/paged_list_test.py rename to tests/paged_list_test.py diff --git a/eris/tests/tools_test.py b/tests/tools_test.py similarity index 100% rename from eris/tests/tools_test.py rename to tests/tools_test.py diff --git a/eris/tests/worker_test.py b/tests/worker_test.py similarity index 100% rename from eris/tests/worker_test.py rename to tests/worker_test.py diff --git a/eris/uv.lock b/uv.lock similarity index 93% rename from eris/uv.lock rename to uv.lock index 63e018b..16a0021 100644 --- a/eris/uv.lock +++ b/uv.lock @@ -1,6 +1,14 @@ version = 1 requires-python = ">=3.11" +[manifest] +members = [ + "eris", + "fill3", + "lscolors", + "termstr", +] + [[package]] name = "cwcwidth" version = "0.1.5" @@ -24,7 +32,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf57 [[package]] name = "eris" -version = "2024.12.18" +version = "2024.12.20" source = { editable = "." } dependencies = [ { name = "decorator" }, @@ -43,32 +51,38 @@ dependencies = [ requires-dist = [ { name = "decorator", specifier = "==5.1.1" }, { name = "docopt", specifier = "==0.6.2" }, - { name = "fill3", git = "https://gitlab.com/ahamilton/eris?subdirectory=fill3&rev=v2024.12.18" }, - { name = "lscolors", git = "https://gitlab.com/ahamilton/eris?subdirectory=lscolors&rev=v2024.12.18" }, + { name = "fill3", editable = "fill3" }, + { name = "lscolors", editable = "lscolors" }, { name = "pexpect", specifier = "==4.8.0" }, { name = "pillow", specifier = "==10.0.0" }, { name = "pygments", specifier = "==2.16.1" }, { name = "pyinotify", specifier = "==0.9.6" }, - { name = "termstr", git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18" }, + { name = "termstr", virtual = "termstr" }, { name = "toml", specifier = "==0.10.2" }, ] [[package]] name = "fill3" -version = "2024.12.18" -source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=fill3&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } +version = "2024.12.20" +source = { editable = "fill3" } dependencies = [ { name = "termstr" }, ] +[package.metadata] +requires-dist = [{ name = "termstr", virtual = "termstr" }] + [[package]] name = "lscolors" -version = "2024.12.18" -source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=lscolors&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } +version = "2024.12.20" +source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, ] +[package.metadata] +requires-dist = [{ name = "termstr", virtual = "termstr" }] + [[package]] name = "pexpect" version = "4.8.0" @@ -135,12 +149,15 @@ sdist = { url = "https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c12496 [[package]] name = "termstr" -version = "2024.12.18" -source = { git = "https://gitlab.com/ahamilton/eris?subdirectory=termstr&rev=v2024.12.18#42acd6db75cfb366e4f6b5de0bf7c7508eec6796" } +version = "2024.12.20" +source = { virtual = "termstr" } dependencies = [ { name = "cwcwidth" }, ] +[package.metadata] +requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] + [[package]] name = "toml" version = "0.10.2" From fb354cba60a0dfb51163b652a474656ade3c202c Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 17:33:05 +1000 Subject: [PATCH 03/46] Update version to v2024.12.28 --- README.md | 2 +- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 2 +- pyproject.toml | 2 +- termstr/pyproject.toml | 2 +- termstr/termstr.py | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a74b14d..605cce2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.20#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.28#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/eris/__init__.py b/eris/__init__.py index 11c7257..053584c 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2024.12.20" +__version__ = "v2024.12.28" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index 4acc885..c8ff982 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2024.12.20" +__version__ = "v2024.12.28" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 0893327..4a27f37 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2024.12.20" +version = "v2024.12.28" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 5f89c6b..c4aa5c5 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2024.12.20" +__version__ = "v2024.12.28" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index e2a2617..607168c 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2024.12.20" +version = "v2024.12.28" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 75ee792..806d8fd 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -26,7 +26,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.20#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.28#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/pyproject.toml b/pyproject.toml index f155617..3c71a8a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2024.12.20" +version = "v2024.12.28" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index c3d8639..93bed9b 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "termstr" -version = "v2024.12.20" +version = "v2024.12.28" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr.py b/termstr/termstr.py index 1644ac2..2fcee20 100644 --- a/termstr/termstr.py +++ b/termstr/termstr.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2024.12.20" +__version__ = "v2024.12.28" ESC = "\x1b" From 418c6c0bea19749021a1d7ba1a8666062421e785 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 18:22:15 +1000 Subject: [PATCH 04/46] packaging: Fix test-all after moving tests --- install | 2 +- test-all | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/install b/install index 0161cae..e4081a7 100755 --- a/install +++ b/install @@ -5,5 +5,5 @@ set -e set -x -pipx install --system-site-packages "$@" ./eris +pipx install --system-site-packages "$@" . eris --install-all-tools diff --git a/test-all b/test-all index c6c8410..dfbbaec 100755 --- a/test-all +++ b/test-all @@ -4,9 +4,9 @@ FAILURE=0 CODEBASE_PATH=$(dirname $0) cd ${CODEBASE_PATH} -for test in {termstr,fill3,lscolors,eris}/tests/*_test.py; do +for test in {termstr/,fill3/,lscolors/,}tests/*_test.py; do echo "Testing $test …" - ./${test} 2>&1 + ${test} 2>&1 FAILURE=$(($FAILURE | $?)) echo done From 1377b36d2862cfd25f0c22cd1bf6be5d6fcceb78 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 18:36:38 +1000 Subject: [PATCH 05/46] sorted_collection is bundled and not special --- eris/__main__.py | 2 +- pyproject.toml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 9fd7d6d..30dd165 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -43,7 +43,7 @@ import termstr import eris import eris.worker as worker import eris.paged_list as paged_list -import sorted_collection +import eris.sorted_collection as sorted_collection USAGE = """ diff --git a/pyproject.toml b/pyproject.toml index 3c71a8a..e481260 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,4 +41,3 @@ homepage = "https://github.com/ahamilton/eris" [tool.setuptools] packages=["eris"] -py-modules=["sorted_collection"] From f5dd5d3444973dde7565fa310c982980494bb570 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 18:37:37 +1000 Subject: [PATCH 06/46] packaging: Bring uv.lock up to date --- uv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uv.lock b/uv.lock index 16a0021..07c0470 100644 --- a/uv.lock +++ b/uv.lock @@ -32,7 +32,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf57 [[package]] name = "eris" -version = "2024.12.20" +version = "2024.12.28" source = { editable = "." } dependencies = [ { name = "decorator" }, @@ -63,7 +63,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2024.12.20" +version = "2024.12.28" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -74,7 +74,7 @@ requires-dist = [{ name = "termstr", virtual = "termstr" }] [[package]] name = "lscolors" -version = "2024.12.20" +version = "2024.12.28" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -149,7 +149,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c12496 [[package]] name = "termstr" -version = "2024.12.20" +version = "2024.12.28" source = { virtual = "termstr" } dependencies = [ { name = "cwcwidth" }, From 65666648acc86d5ce060a7198e5e684ada1e726e Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 28 Dec 2024 18:46:47 +1000 Subject: [PATCH 07/46] packaging: Return push-new-version to working version --- packaging/push-new-version | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packaging/push-new-version b/packaging/push-new-version index 0ca8cc2..a8e3c74 100755 --- a/packaging/push-new-version +++ b/packaging/push-new-version @@ -16,9 +16,10 @@ CURRENT_VERSION=$(git describe --tags --abbrev=0) if [ $NEW_VERSION == $CURRENT_VERSION ]; then git tag --delete $CURRENT_VERSION git push --delete origin $CURRENT_VERSION +else + git grep --no-color -l $CURRENT_VERSION | xargs sed -i "s/$CURRENT_VERSION/$NEW_VERSION/g" + git commit --all --message="Update version to $NEW_VERSION" fi -git grep --no-color -l $CURRENT_VERSION | xargs sed -i "s/$CURRENT_VERSION/$NEW_VERSION/g" -git commit --all --message="Update version to $NEW_VERSION" git tag $NEW_VERSION git push git push --tags From 6ec0d4e1ff7d9d05422d2ad70fed19fd0af7abc4 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 14:00:12 +1000 Subject: [PATCH 08/46] Fix pyinotify dependency to work with latest pythons - pyinotify is not working anymore since it needs asyncore which has been removed from the standard library - Someone created pyinotify-elephant-fork to superseed pyinotify --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e481260..df1fcdd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ "pexpect==4.8.0", "pillow==10.0.0", "pygments==2.16.1", - "pyinotify==0.9.6", + "pyinotify-elephant-fork==0.0.1", "termstr", "toml==0.10.2", ] From 1cf014fb169471e84f77fdd97b27e056e9cf9077 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 14:15:39 +1000 Subject: [PATCH 09/46] packaging: Make termstr a proper package - It was a single module, and it wasn't working with uv. --- termstr/pyproject.toml | 2 ++ termstr/{termstr.py => termstr/__init__.py} | 0 2 files changed, 2 insertions(+) rename termstr/{termstr.py => termstr/__init__.py} (100%) diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 93bed9b..1aa6937 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -1,3 +1,5 @@ +tool.uv.package = true + [project] name = "termstr" version = "v2024.12.28" diff --git a/termstr/termstr.py b/termstr/termstr/__init__.py similarity index 100% rename from termstr/termstr.py rename to termstr/termstr/__init__.py From e9bc97fb4097473623c8d0feff510f818f97dd64 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 16:34:14 +1000 Subject: [PATCH 10/46] Bring dependencies up to date --- pyproject.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index df1fcdd..da777a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,13 +10,12 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "decorator==5.1.1", "docopt==0.6.2", "fill3", "lscolors", - "pexpect==4.8.0", - "pillow==10.0.0", - "pygments==2.16.1", + "pexpect==4.9.0", + "pillow==11.2.1", + "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", "termstr", "toml==0.10.2", From 63a2c0dfd9e2030ed6c80a418e2bb53143645fc4 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 16:36:58 +1000 Subject: [PATCH 11/46] Use tomllib now that toml is in the standard library --- eris/tools.py | 8 +-- pyproject.toml | 1 - uv.lock | 142 ++++++++++++++++++++++++++----------------------- 3 files changed, 80 insertions(+), 71 deletions(-) diff --git a/eris/tools.py b/eris/tools.py index 9d90ae8..08a3be4 100755 --- a/eris/tools.py +++ b/eris/tools.py @@ -30,7 +30,7 @@ import pygments import pygments.lexers import pygments.styles import termstr -import toml +import tomllib import eris @@ -456,10 +456,10 @@ elinks, git_diff, git_blame = None, None, None # For linters. if "ERIS_CONFIG" in os.environ: - tools_toml = toml.load(os.environ["ERIS_CONFIG"]) + tools_toml = tomllib.load(open(os.environ["ERIS_CONFIG"], "rb")) else: - with importlib.resources.open_text(eris, "tools.toml") as tools_toml_file: - tools_toml = toml.load(tools_toml_file) + with importlib.resources.open_binary(eris, "tools.toml") as tools_toml_file: + tools_toml = tomllib.load(tools_toml_file) tools_for_extensions = tools_toml["tools_for_extensions"] del tools_toml["tools_for_extensions"] for tool_name, tool_toml in tools_toml.items(): diff --git a/pyproject.toml b/pyproject.toml index da777a5..519955b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,6 @@ dependencies = [ "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", "termstr", - "toml==0.10.2", ] [tool.uv.sources] diff --git a/uv.lock b/uv.lock index 07c0470..3e5e26a 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 2 requires-python = ">=3.11" [manifest] @@ -13,52 +14,39 @@ members = [ name = "cwcwidth" version = "0.1.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071 } - -[[package]] -name = "decorator" -version = "5.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/0c/8d907af351aa16b42caae42f9d6aa37b900c67308052d10fdce809f8d952/decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", size = 35016 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/50/83c593b07763e1161326b3b8c6686f0f4b0f24d5526546bee538c89837d6/decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186", size = 9073 }, -] +sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071, upload-time = "2021-10-10T16:46:56.825Z" } [[package]] name = "docopt" version = "0.6.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } [[package]] name = "eris" version = "2024.12.28" source = { editable = "." } dependencies = [ - { name = "decorator" }, { name = "docopt" }, { name = "fill3" }, { name = "lscolors" }, { name = "pexpect" }, { name = "pillow" }, { name = "pygments" }, - { name = "pyinotify" }, + { name = "pyinotify-elephant-fork" }, { name = "termstr" }, - { name = "toml" }, ] [package.metadata] requires-dist = [ - { name = "decorator", specifier = "==5.1.1" }, { name = "docopt", specifier = "==0.6.2" }, { name = "fill3", editable = "fill3" }, { name = "lscolors", editable = "lscolors" }, - { name = "pexpect", specifier = "==4.8.0" }, - { name = "pillow", specifier = "==10.0.0" }, - { name = "pygments", specifier = "==2.16.1" }, - { name = "pyinotify", specifier = "==0.9.6" }, - { name = "termstr", virtual = "termstr" }, - { name = "toml", specifier = "==0.10.2" }, + { name = "pexpect", specifier = "==4.9.0" }, + { name = "pillow", specifier = "==11.2.1" }, + { name = "pygments", specifier = "==2.19.1" }, + { name = "pyinotify-elephant-fork", specifier = "==0.0.1" }, + { name = "termstr", editable = "termstr" }, ] [[package]] @@ -70,7 +58,7 @@ dependencies = [ ] [package.metadata] -requires-dist = [{ name = "termstr", virtual = "termstr" }] +requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" @@ -81,88 +69,110 @@ dependencies = [ ] [package.metadata] -requires-dist = [{ name = "termstr", virtual = "termstr" }] +requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/9b/ff402e0e930e70467a7178abb7c128709a30dfb22d8777c043e501bc1b10/pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c", size = 157037 } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/7b/88dbb785881c28a102619d46423cb853b46dbccc70d3ac362d99773a78ce/pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937", size = 59024 }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" -version = "10.0.0" +version = "11.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/8b/2ebaf9adcf4260c00f842154865f8730cf745906aa5dd499141fb6063e26/Pillow-10.0.0.tar.gz", hash = "sha256:9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396", size = 50527522 } +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/54/f6a14d95cba8ff082c550d836c9e5c23f1641d2ac291c23efe0494219b8c/Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485", size = 3398781 }, - { url = "https://files.pythonhosted.org/packages/b7/ad/71982d18fd28ed1f93c31b8648f980ebdbdbcf7d8c9c9b4af59290914ce9/Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f", size = 3111873 }, - { url = "https://files.pythonhosted.org/packages/45/5c/04224bf1a8247d6bbba375248d74668724a5a9879b4c42c23dfadd0c28ae/Pillow-10.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ed64f9ca2f0a95411e88a4efbd7a29e5ce2cea36072c53dd9d26d9c76f753b3", size = 3117246 }, - { url = "https://files.pythonhosted.org/packages/45/de/b07418f00cd78af292ceb4e2855c158ef8477dc1cbcdac3e1f32eb4e53b6/Pillow-10.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6eb5502f45a60a3f411c63187db83a3d3107887ad0d036c13ce836f8a36f1d", size = 3314475 }, - { url = "https://files.pythonhosted.org/packages/79/53/3a7277ae95bfe86b8b4db0ed1d08c4924aa2dfbfe51b8fe0e310b160a9c6/Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd", size = 3169201 }, - { url = "https://files.pythonhosted.org/packages/16/89/818fa238e37a47a29bb8495ca2cafdd514599a89f19ada7916348a74b5f9/Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd25d2a9d2b36fcb318882481367956d2cf91329f6892fe5d385c346c0649629", size = 3421012 }, - { url = "https://files.pythonhosted.org/packages/72/17/6c1e6b0f78d21838844318057b7a939ab8a8d92deeb51d22563202b2db64/Pillow-10.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b08d4cc24f471b2c8ca24ec060abf4bebc6b144cb89cba638c720546b1cf538", size = 3355277 }, - { url = "https://files.pythonhosted.org/packages/40/58/0a62422b3cf188dac72fe6c54b6f3f372ec2e84043eb4f8d2158626992b7/Pillow-10.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737a602fbd82afd892ca746392401b634e278cb65d55c4b7a8f48e9ef8d008d", size = 3420294 }, - { url = "https://files.pythonhosted.org/packages/66/d4/054e491f0880bf0119ee79cdc03264e01d5732e06c454da8c69b83a7c8f2/Pillow-10.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f", size = 2513082 }, - { url = "https://files.pythonhosted.org/packages/6a/33/c278084a811d7a7a17c8dd14cb261248fdd0265263760fb753a5a719241e/Pillow-10.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:bc2ec7c7b5d66b8ec9ce9f720dbb5fa4bace0f545acd34870eff4a369b44bf37", size = 2501798 }, - { url = "https://files.pythonhosted.org/packages/9c/e8/59271ada18cec229d4a79475a45a9e64367e54e5d1f488b030af63805960/Pillow-10.0.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:d80cf684b541685fccdd84c485b31ce73fc5c9b5d7523bf1394ce134a60c6883", size = 3398485 }, - { url = "https://files.pythonhosted.org/packages/f0/7f/ff6ce4360dccfacc3af3462cfcd2d7481a1cc8d6aa712927072016dd6755/Pillow-10.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76de421f9c326da8f43d690110f0e79fe3ad1e54be811545d7d91898b4c8493e", size = 3111012 }, - { url = "https://files.pythonhosted.org/packages/2e/a4/06f84d3fe7aa9558d2b80d8d4960fe07071a53e8d3ccac8b079905003048/Pillow-10.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff539a12457809666fef6624684c008e00ff6bf455b4b89fd00a140eecd640", size = 3117406 }, - { url = "https://files.pythonhosted.org/packages/a8/7b/f8ed885d18096930991bbaac729024435e0343a3c81062811cf865205a79/Pillow-10.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce543ed15570eedbb85df19b0a1a7314a9c8141a36ce089c0a894adbfccb4568", size = 3315095 }, - { url = "https://files.pythonhosted.org/packages/54/2e/04bae205c5bf3ff7e58735b73a1d3943d0e33e0f7ca8637aa30a2acd06d0/Pillow-10.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:685ac03cc4ed5ebc15ad5c23bc555d68a87777586d970c2c3e216619a5476223", size = 3169235 }, - { url = "https://files.pythonhosted.org/packages/5f/82/39a266a0626d2c0dd4ee341639fe7749268fc871429b90006eeb1583f24b/Pillow-10.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d72e2ecc68a942e8cf9739619b7f408cc7b272b279b56b2c83c6123fcfa5cdff", size = 3421158 }, - { url = "https://files.pythonhosted.org/packages/4d/61/eba2506ce68706ccb7d485cee968e35fa9ee797d77520760acf41a65f281/Pillow-10.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d50b6aec14bc737742ca96e85d6d0a5f9bfbded018264b3b70ff9d8c33485551", size = 3355694 }, - { url = "https://files.pythonhosted.org/packages/0f/0b/0f37aac8432fb91e9f7eec96a29afb354f172e593d2d6d8201e544f49b55/Pillow-10.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:00e65f5e822decd501e374b0650146063fbb30a7264b4d2744bdd7b913e0cab5", size = 3421380 }, - { url = "https://files.pythonhosted.org/packages/e7/af/06fa67e8c8c4ead837f6a4025b6605f4cb8ec0fcbff1e4c697712fabf9f9/Pillow-10.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f31f9fdbfecb042d046f9d91270a0ba28368a723302786c0009ee9b9f1f60199", size = 2513485 }, - { url = "https://files.pythonhosted.org/packages/83/c0/aaa4f7f9f0ed854d8b519739392ed17ee1aaaa352fd037646e97634a6bdb/Pillow-10.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:1ce91b6ec08d866b14413d3f0bbdea7e24dfdc8e59f562bb77bc3fe60b6144ca", size = 2502324 }, + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, + { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098, upload-time = "2025-04-12T17:48:23.915Z" }, + { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166, upload-time = "2025-04-12T17:48:25.738Z" }, + { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674, upload-time = "2025-04-12T17:48:27.908Z" }, + { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005, upload-time = "2025-04-12T17:48:29.888Z" }, + { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707, upload-time = "2025-04-12T17:48:31.874Z" }, + { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008, upload-time = "2025-04-12T17:48:34.422Z" }, + { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420, upload-time = "2025-04-12T17:48:37.641Z" }, + { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655, upload-time = "2025-04-12T17:48:39.652Z" }, + { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329, upload-time = "2025-04-12T17:48:41.765Z" }, + { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388, upload-time = "2025-04-12T17:48:43.625Z" }, + { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950, upload-time = "2025-04-12T17:48:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759, upload-time = "2025-04-12T17:48:47.866Z" }, + { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284, upload-time = "2025-04-12T17:48:50.189Z" }, + { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826, upload-time = "2025-04-12T17:48:52.346Z" }, + { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329, upload-time = "2025-04-12T17:48:54.403Z" }, + { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049, upload-time = "2025-04-12T17:48:56.383Z" }, + { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408, upload-time = "2025-04-12T17:48:58.782Z" }, + { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863, upload-time = "2025-04-12T17:49:00.709Z" }, + { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938, upload-time = "2025-04-12T17:49:02.946Z" }, + { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774, upload-time = "2025-04-12T17:49:04.889Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895, upload-time = "2025-04-12T17:49:06.635Z" }, + { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234, upload-time = "2025-04-12T17:49:08.399Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pygments" -version = "2.16.1" +version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/f7/4d461ddf9c2bcd6a4d7b2b139267ca32a69439387cc1f02a924ff8883825/Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29", size = 4872980 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/88/29adf0b44ba6ac85045e63734ae0997d3c58d8b1a91c914d240828d0d73d/Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692", size = 1164750 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, ] [[package]] -name = "pyinotify" -version = "0.9.6" +name = "pyinotify-elephant-fork" +version = "0.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/c0/fd5b18dde17c1249658521f69598f3252f11d9d7a980c5be8619970646e1/pyinotify-0.9.6.tar.gz", hash = "sha256:9c998a5d7606ca835065cdabc013ae6c66eb9ea76a00a1e3bc6e0cfe2b4f71f4", size = 60998 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449af37f8ff3ffa64755dc7dcfb92477a2f61c2639a6ee/pyinotify-elephant-fork-0.0.1.tar.gz", hash = "sha256:a366b27e0d5be8cef60c836f89132c515500b5012ab6190d9c255c645df884ae", size = 109161, upload-time = "2023-10-12T04:19:16.906Z" } [[package]] name = "termstr" version = "2024.12.28" -source = { virtual = "termstr" } +source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, ] [package.metadata] requires-dist = [{ name = "cwcwidth", specifier = "==0.1.5" }] - -[[package]] -name = "toml" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, -] From 95603d2985f674f2b1d9b4f5d593f5c885f526f8 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 16:38:11 +1000 Subject: [PATCH 12/46] Update version to v2025.06.03 --- README.md | 2 +- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 2 +- pyproject.toml | 2 +- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 605cce2..980e517 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.28#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.03#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/eris/__init__.py b/eris/__init__.py index 053584c..36d6d03 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2024.12.28" +__version__ = "v2025.06.03" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index c8ff982..3bac230 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2024.12.28" +__version__ = "v2025.06.03" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 4a27f37..6abceb7 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2024.12.28" +version = "v2025.06.03" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index c4aa5c5..3f4df55 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2024.12.28" +__version__ = "v2025.06.03" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index 607168c..dc61127 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2024.12.28" +version = "v2025.06.03" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 806d8fd..c22571e 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -26,7 +26,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2024.12.28#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.03#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/pyproject.toml b/pyproject.toml index 519955b..f04c612 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2024.12.28" +version = "v2025.06.03" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 1aa6937..8f6d442 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2024.12.28" +version = "v2025.06.03" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index 2fcee20..02cd4f7 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2024.12.28" +__version__ = "v2025.06.03" ESC = "\x1b" From 54d7d8c2a7cafbaeeaef36626614009903b62c18 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 16:42:40 +1000 Subject: [PATCH 13/46] packaging: Bring uv.lock up to date --- uv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/uv.lock b/uv.lock index 3e5e26a..77c10ac 100644 --- a/uv.lock +++ b/uv.lock @@ -24,7 +24,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf57 [[package]] name = "eris" -version = "2024.12.28" +version = "2025.6.3" source = { editable = "." } dependencies = [ { name = "docopt" }, @@ -51,7 +51,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2024.12.28" +version = "2025.6.3" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -62,7 +62,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2024.12.28" +version = "2025.6.3" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -168,7 +168,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2024.12.28" +version = "2025.6.3" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From 1a1989e5657699898cf30587829ba8cbccb3fbec Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 16:57:44 +1000 Subject: [PATCH 14/46] packaging: Bring uv lock file up to date when tagging a new version --- packaging/push-new-version | 1 + 1 file changed, 1 insertion(+) diff --git a/packaging/push-new-version b/packaging/push-new-version index a8e3c74..c9b3edd 100755 --- a/packaging/push-new-version +++ b/packaging/push-new-version @@ -18,6 +18,7 @@ if [ $NEW_VERSION == $CURRENT_VERSION ]; then git push --delete origin $CURRENT_VERSION else git grep --no-color -l $CURRENT_VERSION | xargs sed -i "s/$CURRENT_VERSION/$NEW_VERSION/g" + uv lock git commit --all --message="Update version to $NEW_VERSION" fi git tag $NEW_VERSION From 06e9250888c2ec66a2e82e09ed376397c754df92 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 3 Jun 2025 19:34:26 +1000 Subject: [PATCH 15/46] Switch dependency docopt to docopt-ng - docopt is unmaintained and giving SyntaxWarnings --- eris/__main__.py | 2 +- pyproject.toml | 2 +- uv.lock | 13 ++++++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 30dd165..ff9cbd5 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1166,7 +1166,7 @@ def install_all_tools(): def check_arguments(): global tools cmdline_help = __doc__ + USAGE.replace("*", "") - arguments = docopt.docopt(cmdline_help, help=False) + arguments = docopt.docopt(cmdline_help, default_help=False) if arguments["--help"]: print(cmdline_help) sys.exit(0) diff --git a/pyproject.toml b/pyproject.toml index f04c612..30c4a4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ authors = [ ] requires-python = ">=3.11" dependencies = [ - "docopt==0.6.2", + "docopt-ng==0.9.0", "fill3", "lscolors", "pexpect==4.9.0", diff --git a/uv.lock b/uv.lock index 77c10ac..9e81e46 100644 --- a/uv.lock +++ b/uv.lock @@ -17,17 +17,20 @@ source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/38/17/aadd0c6190dca91aa27c4d7e84d69d30fdf4966e7764247cdc395f8fe7d9/cwcwidth-0.1.5.tar.gz", hash = "sha256:2c840e7d85f6de45c45986b416d79312c91882e1121b78d4c347e49c4238c09d", size = 11071, upload-time = "2021-10-10T16:46:56.825Z" } [[package]] -name = "docopt" -version = "0.6.2" +name = "docopt-ng" +version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/50/8d6806cf13138127692ae6ff79ddeb4e25eb3b0bcc3c1bd033e7e04531a9/docopt_ng-0.9.0.tar.gz", hash = "sha256:91c6da10b5bb6f2e9e25345829fb8278c78af019f6fc40887ad49b060483b1d7", size = 32264, upload-time = "2023-05-30T20:46:25.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/4a/c3b77fc1a24510b08918b43a473410c0168f6e657118807015f1f1edceea/docopt_ng-0.9.0-py3-none-any.whl", hash = "sha256:bfe4c8b03f9fca424c24ee0b4ffa84bf7391cb18c29ce0f6a8227a3b01b81ff9", size = 16689, upload-time = "2023-05-30T20:46:45.294Z" }, +] [[package]] name = "eris" version = "2025.6.3" source = { editable = "." } dependencies = [ - { name = "docopt" }, + { name = "docopt-ng" }, { name = "fill3" }, { name = "lscolors" }, { name = "pexpect" }, @@ -39,7 +42,7 @@ dependencies = [ [package.metadata] requires-dist = [ - { name = "docopt", specifier = "==0.6.2" }, + { name = "docopt-ng", specifier = "==0.9.0" }, { name = "fill3", editable = "fill3" }, { name = "lscolors", editable = "lscolors" }, { name = "pexpect", specifier = "==4.9.0" }, From 0effc3da490c3fa77f2ac1bb57192e5b1ec23941 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 15:49:44 +1000 Subject: [PATCH 16/46] Specify the build-system in pyproject.toml - Needed so that "uv tool install" can work with a git url. - pipx seemed to work without this. - Also need to ensure that tools.toml is installed as package-data. --- pyproject.toml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 30c4a4e..f1555a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,5 +37,12 @@ pydoc_color = "eris.pydoc_color:main" [project.urls] homepage = "https://github.com/ahamilton/eris" +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + [tool.setuptools] packages=["eris"] + +[tool.setuptools.package-data] +"eris" = ["tools.toml"] From 5448eced5a131c37228dafd6b30d25dc1814bb40 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 16:00:26 +1000 Subject: [PATCH 17/46] Update version to v2025.06.04 --- README.md | 2 +- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 2 +- pyproject.toml | 2 +- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 980e517..f966da3 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.03#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/eris/__init__.py b/eris/__init__.py index 36d6d03..274d002 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2025.06.03" +__version__ = "v2025.06.04" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index 3bac230..338e58b 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.03" +__version__ = "v2025.06.04" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 6abceb7..43c3261 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.03" +version = "v2025.06.04" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 3f4df55..701a73f 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.03" +__version__ = "v2025.06.04" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index dc61127..2ebb549 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.03" +version = "v2025.06.04" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index c22571e..fae28d8 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -26,7 +26,7 @@ Eris maintains an up-to-date set of reports for every file in a codebase. Install eris with pipx, then install all the tools eris uses: - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.03#subdirectory=eris + pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=eris eris --install-all-tools Or install from source: (includes tools) diff --git a/pyproject.toml b/pyproject.toml index f1555a2..3e8c6a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.03" +version = "v2025.06.04" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 8f6d442..35d4b30 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.03" +version = "v2025.06.04" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index 02cd4f7..70df20e 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.03" +__version__ = "v2025.06.04" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index 9e81e46..3a2d1fc 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.3" +version = "2025.6.4" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.3" +version = "2025.6.4" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.3" +version = "2025.6.4" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.3" +version = "2025.6.4" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From b5031417dc4327eede16d4086c5985f45990cacf Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 18:26:14 +1000 Subject: [PATCH 18/46] Make python tools work better under uv - uv's has its own python, and standard python tools are installed in the system python. --- eris/tools.toml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/eris/tools.toml b/eris/tools.toml index 3e94f14..71361b9 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -58,7 +58,7 @@ tools_for_extensions = [ [pycodestyle] dependencies = ["python3-pycodestyle"] url = "http://pycodestyle.pycqa.org/en/latest/" - command = "python3.11 -m pycodestyle --max-line-length=100" + command = "/usr/bin/python3.11 -m pycodestyle --max-line-length=100" [pydocstyle] dependencies = ["python3-pydocstyle"] @@ -68,18 +68,18 @@ tools_for_extensions = [ [pyflakes] dependencies = ["python3-pyflakes"] url = "https://pypi.org/project/pyflakes/" - command = "python3.11 -m pyflakes" + command = "pyflakes3" [pylint] dependencies = ["pylint"] url = "https://www.pylint.org/" - command = "python3.11 -m pylint -f colorized --errors-only" + command = "pylint -f colorized --errors-only" has_color = true [bandit] dependencies = ["python3-bandit"] url = "https://pypi.org/project/bandit/" - command = "python3.11 -m bandit.cli.main -f screen" + command = "bandit -f screen" has_color = true timeout = 60 @@ -262,7 +262,7 @@ tools_for_extensions = [ [yamllint] dependencies = ["yamllint"] url = "https://github.com/adrienverge/yamllint" - command = "python3.11 -m yamllint -f colored" + command = "yamllint -f colored" has_color = true [mediainfo] From 3913a495375ef77debca1dba8800f12a85ad67dc Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 18:32:53 +1000 Subject: [PATCH 19/46] tools: Remove pydocstyle which has been superceeded by ruff --- eris/tools.toml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/eris/tools.toml b/eris/tools.toml index 71361b9..56902d1 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -2,7 +2,7 @@ tools_for_extensions = [ [["py"], ["python_syntax", "python_unittests", "pytest", "pydoc", "mypy", - "python_coverage", "pycodestyle", "pydocstyle", "pyflakes", + "python_coverage", "pycodestyle", "pyflakes", "pylint", "python_gut", "python_mccabe", "bandit"]], # [["pyc"], ["pydisasm"]], [["pl", "pm", "t"], ["perl_syntax", "perldoc"]], @@ -60,11 +60,6 @@ tools_for_extensions = [ url = "http://pycodestyle.pycqa.org/en/latest/" command = "/usr/bin/python3.11 -m pycodestyle --max-line-length=100" -[pydocstyle] - dependencies = ["python3-pydocstyle"] - url = "http://www.pydocstyle.org/en/2.1.1/usage.html" - command = "python3.11 -m pydocstyle --ignore=D1,D213" - [pyflakes] dependencies = ["python3-pyflakes"] url = "https://pypi.org/project/pyflakes/" From 7827aae0ae0b747f1fce5d7a5ad6cfbed2d3e534 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 18:47:01 +1000 Subject: [PATCH 20/46] tools: With uv the system python's version isn't necessarily 3.11 --- eris/tools.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eris/tools.toml b/eris/tools.toml index 56902d1..c8897f4 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -45,7 +45,7 @@ tools_for_extensions = [ [python_syntax] dependencies = [] url = "https://en.wikipedia.org/wiki/Python_syntax_and_semantics" - command = "python3.11 -m py_compile" + command = "python3 -m py_compile" [pydoc] dependencies = [] @@ -58,7 +58,7 @@ tools_for_extensions = [ [pycodestyle] dependencies = ["python3-pycodestyle"] url = "http://pycodestyle.pycqa.org/en/latest/" - command = "/usr/bin/python3.11 -m pycodestyle --max-line-length=100" + command = "/usr/bin/python3 -m pycodestyle --max-line-length=100" [pyflakes] dependencies = ["python3-pyflakes"] From 31985cc5512a72ac7399535361f3aaee349abff8 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 22:52:09 +1000 Subject: [PATCH 21/46] Now using uv instead of pipx - Update the installation instructions in the readme. - Change the install script to use uv. --- README.md | 22 ++++++++++++++++------ install | 2 +- packaging/make-readme.py | 18 ++++++++++++++---- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index f966da3..874dbbf 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,28 @@ ## Summary -Eris maintains an up-to-date set of reports for every file in a codebase. +Eris maintains an up to date set of reports for every file in a codebase. ## Installation #### Debian / Ubuntu / Fedora / Arch / Alpine -Install eris with pipx, then install all the tools eris uses: +Firstly uv is needed to install eris. - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=eris +To install uv: + + curl -LsSf https://astral.sh/uv/install.sh | sh + +For other ways to install uv see its [installation page](https://docs.astral.sh/uv/getting-started/installation/). + +Then use uv to install eris: + + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + +Then use eris to install all the tools it uses: eris --install-all-tools -Or install from source: (includes tools) +Or install from source: (including tools) git clone https://gitlab.com/ahamilton/eris cd eris @@ -26,10 +36,10 @@ Then to run: ## Tools -File types(100) | Tools(57) +File types(100) | Tools(56) ----------:| ----- .* | [contents](http://pygments.org/) • [metadata](https://github.com/ahamilton/eris) • [git_diff](https://git-scm.com/docs/git-diff) • [git_blame](https://git-scm.com/docs/git-blame) • [git_log](https://git-scm.com/docs/git-log) -.py | [python_syntax](https://en.wikipedia.org/wiki/Python_syntax_and_semantics) • [python_unittests](https://docs.python.org/3/library/unittest.html) • [pytest](https://docs.pytest.org/en/latest/) • [pydoc](https://docs.python.org/3/library/pydoc.html) • [mypy](http://mypy-lang.org/) • [python_coverage](https://coverage.readthedocs.io/) • [pycodestyle](http://pycodestyle.pycqa.org/en/latest/) • [pydocstyle](http://www.pydocstyle.org/en/2.1.1/usage.html) • [pyflakes](https://pypi.org/project/pyflakes/) • [pylint](https://www.pylint.org/) • [python_gut](https://github.com/ahamilton/eris) • [python_mccabe](https://pypi.org/project/mccabe/) • [bandit](https://pypi.org/project/bandit/) +.py | [python_syntax](https://en.wikipedia.org/wiki/Python_syntax_and_semantics) • [python_unittests](https://docs.python.org/3/library/unittest.html) • [pytest](https://docs.pytest.org/en/latest/) • [pydoc](https://docs.python.org/3/library/pydoc.html) • [mypy](http://mypy-lang.org/) • [python_coverage](https://coverage.readthedocs.io/) • [pycodestyle](http://pycodestyle.pycqa.org/en/latest/) • [pyflakes](https://pypi.org/project/pyflakes/) • [pylint](https://www.pylint.org/) • [python_gut](https://github.com/ahamilton/eris) • [python_mccabe](https://pypi.org/project/mccabe/) • [bandit](https://pypi.org/project/bandit/) .pl .pm .t | [perl_syntax](https://en.wikipedia.org/wiki/Perl) • [perldoc](http://perldoc.perl.org/) .p6 .pm6 | [perl6_syntax](https://rakudo.org/) .pod .pod6 | [perldoc](http://perldoc.perl.org/) diff --git a/install b/install index e4081a7..74554c6 100755 --- a/install +++ b/install @@ -5,5 +5,5 @@ set -e set -x -pipx install --system-site-packages "$@" . +uv tool install "$@" . eris --install-all-tools diff --git a/packaging/make-readme.py b/packaging/make-readme.py index fae28d8..1f10441 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -18,18 +18,28 @@ def main(): ## Summary -Eris maintains an up-to-date set of reports for every file in a codebase. +Eris maintains an up to date set of reports for every file in a codebase. ## Installation #### Debian / Ubuntu / Fedora / Arch / Alpine -Install eris with pipx, then install all the tools eris uses: +Firstly uv is needed to install eris. - pipx install --system-site-packages git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=eris +To install uv: + + curl -LsSf https://astral.sh/uv/install.sh | sh + +For other ways to install uv see its [installation page](https://docs.astral.sh/uv/getting-started/installation/). + +Then use uv to install eris: + + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + +Then use eris to install all the tools it uses: eris --install-all-tools -Or install from source: (includes tools) +Or install from source: (including tools) git clone https://gitlab.com/ahamilton/eris cd eris From 968d2b8443d5f5ead70c87d1d15c46e8eb482e2a Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Wed, 4 Jun 2025 23:00:11 +1000 Subject: [PATCH 22/46] Fix README formatting --- README.md | 1 + packaging/make-readme.py | 1 + 2 files changed, 2 insertions(+) diff --git a/README.md b/README.md index 874dbbf..4b294d4 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,7 @@ Then use uv to install eris: uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 Then use eris to install all the tools it uses: + eris --install-all-tools Or install from source: (including tools) diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 1f10441..f2e952d 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -37,6 +37,7 @@ Then use uv to install eris: uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 Then use eris to install all the tools it uses: + eris --install-all-tools Or install from source: (including tools) From 03c2644ac4ef8055028e1f3a20c174f55d1f38f5 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 7 Jun 2025 21:52:06 +1000 Subject: [PATCH 23/46] packaging: Make pyproject.toml work with pip --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3e8c6a0..b98ed38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3", - "lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=termstr", ] [tool.uv.sources] From 35b3ac22ece31e671afdf93d3a8a9457a271dfbb Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 7 Jun 2025 22:01:21 +1000 Subject: [PATCH 24/46] Update README - Can install with pipx or uv. --- README.md | 16 ++++------------ packaging/make-readme.py | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 4b294d4..a7dca6b 100644 --- a/README.md +++ b/README.md @@ -8,15 +8,13 @@ Eris maintains an up to date set of reports for every file in a codebase. #### Debian / Ubuntu / Fedora / Arch / Alpine -Firstly uv is needed to install eris. +Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/installation/). -To install uv: +To install with pipx: - curl -LsSf https://astral.sh/uv/install.sh | sh + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.04 -For other ways to install uv see its [installation page](https://docs.astral.sh/uv/getting-started/installation/). - -Then use uv to install eris: +or to install with uv: uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 @@ -24,12 +22,6 @@ Then use eris to install all the tools it uses: eris --install-all-tools -Or install from source: (including tools) - - git clone https://gitlab.com/ahamilton/eris - cd eris - ./install - Then to run: eris diff --git a/packaging/make-readme.py b/packaging/make-readme.py index f2e952d..5189e59 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -24,15 +24,13 @@ Eris maintains an up to date set of reports for every file in a codebase. #### Debian / Ubuntu / Fedora / Arch / Alpine -Firstly uv is needed to install eris. +Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/installation/). -To install uv: +To install with pipx: - curl -LsSf https://astral.sh/uv/install.sh | sh + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.04 -For other ways to install uv see its [installation page](https://docs.astral.sh/uv/getting-started/installation/). - -Then use uv to install eris: +or to install with uv: uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 @@ -40,12 +38,6 @@ Then use eris to install all the tools it uses: eris --install-all-tools -Or install from source: (including tools) - - git clone https://gitlab.com/ahamilton/eris - cd eris - ./install - Then to run: eris From 5ba4f6bb811b715fa8f5c926590ae53672f4bfe9 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 7 Jun 2025 22:02:35 +1000 Subject: [PATCH 25/46] Update version to v2025.06.07 --- README.md | 4 ++-- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 4 ++-- pyproject.toml | 8 ++++---- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index a7dca6b..05a3ffb 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.07 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.07 Then use eris to install all the tools it uses: diff --git a/eris/__init__.py b/eris/__init__.py index 274d002..f47acec 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2025.06.04" +__version__ = "v2025.06.07" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index 338e58b..cb8e67c 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.04" +__version__ = "v2025.06.07" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 43c3261..2316d21 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.04" +version = "v2025.06.07" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 701a73f..581bfdb 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.04" +__version__ = "v2025.06.07" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index 2ebb549..a20b3ea 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.04" +version = "v2025.06.07" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 5189e59..a938099 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -28,11 +28,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.07 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.04 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.07 Then use eris to install all the tools it uses: diff --git a/pyproject.toml b/pyproject.toml index b98ed38..dd0a5e5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.04" +version = "v2025.06.07" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.04#subdirectory=termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=termstr", ] [tool.uv.sources] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 35d4b30..73a2840 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.04" +version = "v2025.06.07" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index 70df20e..432ecd3 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.04" +__version__ = "v2025.06.07" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index 3a2d1fc..fec26b8 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.4" +version = "2025.6.7" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.4" +version = "2025.6.7" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.4" +version = "2025.6.7" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.4" +version = "2025.6.7" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From 4341df0114f2ba254f05e27c5ea5f193f7da8522 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 15:52:06 +1000 Subject: [PATCH 26/46] tools: Add some tools suggested by gemini ai --- README.md | 10 ++++++---- eris/tools.toml | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 05a3ffb..8686f1d 100644 --- a/README.md +++ b/README.md @@ -29,21 +29,23 @@ Then to run: ## Tools -File types(100) | Tools(56) +File types(103) | Tools(63) ----------:| ----- .* | [contents](http://pygments.org/) • [metadata](https://github.com/ahamilton/eris) • [git_diff](https://git-scm.com/docs/git-diff) • [git_blame](https://git-scm.com/docs/git-blame) • [git_log](https://git-scm.com/docs/git-log) -.py | [python_syntax](https://en.wikipedia.org/wiki/Python_syntax_and_semantics) • [python_unittests](https://docs.python.org/3/library/unittest.html) • [pytest](https://docs.pytest.org/en/latest/) • [pydoc](https://docs.python.org/3/library/pydoc.html) • [mypy](http://mypy-lang.org/) • [python_coverage](https://coverage.readthedocs.io/) • [pycodestyle](http://pycodestyle.pycqa.org/en/latest/) • [pyflakes](https://pypi.org/project/pyflakes/) • [pylint](https://www.pylint.org/) • [python_gut](https://github.com/ahamilton/eris) • [python_mccabe](https://pypi.org/project/mccabe/) • [bandit](https://pypi.org/project/bandit/) +.py | [python_syntax](https://en.wikipedia.org/wiki/Python_syntax_and_semantics) • [python_unittests](https://docs.python.org/3/library/unittest.html) • [pytest](https://docs.pytest.org/en/latest/) • [pydoc](https://docs.python.org/3/library/pydoc.html) • [mypy](http://mypy-lang.org/) • [python_coverage](https://coverage.readthedocs.io/) • [pycodestyle](http://pycodestyle.pycqa.org/en/latest/) • [pyflakes](https://pypi.org/project/pyflakes/) • [pylint](https://www.pylint.org/) • [python_gut](https://github.com/ahamilton/eris) • [python_mccabe](https://pypi.org/project/mccabe/) • [bandit](https://pypi.org/project/bandit/) • [black](https://github.com/psf/black) • [isort](https://pycqa.github.io/isort/) .pl .pm .t | [perl_syntax](https://en.wikipedia.org/wiki/Perl) • [perldoc](http://perldoc.perl.org/) .p6 .pm6 | [perl6_syntax](https://rakudo.org/) .pod .pod6 | [perldoc](http://perldoc.perl.org/) .c .h | [c_syntax_gcc](https://gcc.gnu.org/) • [cppcheck](http://sourceforge.net/p/cppcheck/wiki/Home/) .cc .cpp .hpp | [cpp_syntax_gcc](https://gcc.gnu.org/) • [cppcheck](http://sourceforge.net/p/cppcheck/wiki/Home/) -.rb | [ruby_syntax](http://www.ruby-lang.org/) +.rb | [ruby_syntax](http://www.ruby-lang.org/) • [rubocop](https://rubocop.org/) +.rs | [rustfmt](https://github.com/rust-lang/rustfmt) • [clippy](https://github.com/rust-lang/rust-clippy) .lua | [lua_syntax](http://www.lua.org) • [lua_check](https://github.com/mpeterv/luacheck) -.js | [js_syntax](http://nodejs.org/) +.js .ts | [js_syntax](http://nodejs.org/) • [typescript_check](https://www.typescriptlang.org/) .php | [php8_syntax](https://en.wikipedia.org/wiki/PHP) .go | [go_vet](https://github.com/golang/go) • [godoc](https://github.com/golang/go) .bash .sh .dash .ksh | [shellcheck](https://www.shellcheck.net/) +.wat | [wat_syntax_check](https://github.com/WebAssembly/wabt) .wasm | [wasm_validate](https://github.com/WebAssembly/wabt) • [wasm_objdump](https://github.com/WebAssembly/wabt) .pdf | [pdf2txt](https://github.com/pdfminer/pdfminer.six) .html .htm | [html_syntax](https://www.html-tidy.org/) • [html2text](http://www.mbayer.de/html2text/) • [elinks](http://elinks.cz/) diff --git a/eris/tools.toml b/eris/tools.toml index c8897f4..a8b8621 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -3,19 +3,21 @@ tools_for_extensions = [ [["py"], ["python_syntax", "python_unittests", "pytest", "pydoc", "mypy", "python_coverage", "pycodestyle", "pyflakes", - "pylint", "python_gut", "python_mccabe", "bandit"]], + "pylint", "python_gut", "python_mccabe", "bandit", "black", "isort"]], # [["pyc"], ["pydisasm"]], [["pl", "pm", "t"], ["perl_syntax", "perldoc"]], [["p6", "pm6"], ["perl6_syntax"]], [["pod", "pod6"], ["perldoc"]], [["c", "h"], ["c_syntax_gcc", "cppcheck"]], [["cc", "cpp", "hpp"], ["cpp_syntax_gcc", "cppcheck"]], - [["rb"], ["ruby_syntax"]], + [["rb"], ["ruby_syntax", "rubocop"]], + [["rs"], ["rustfmt", "clippy"]], [["lua"], ["lua_syntax", "lua_check"]], - [["js"], ["js_syntax"]], + [["js", "ts"], ["js_syntax", "typescript_check"]], [["php"], ["php8_syntax"]], [["go"], ["go_vet", "godoc"]], [["bash", "sh", "dash", "ksh"], ["shellcheck"]], + [["wat"], ["wat_syntax_check"]], [["wasm"], ["wasm_validate", "wasm_objdump"]], [["pdf"], ["pdf2txt"]], [["html", "htm"], ["html_syntax", "html2text", "elinks"]], @@ -78,6 +80,18 @@ tools_for_extensions = [ has_color = true timeout = 60 +[black] + dependencies = ["black"] + url = "https://github.com/psf/black" + command = "black --check --diff --color" + has_color = true + +[isort] + dependencies = ["python3-isort", "python3-colorama"] + url = "https://pycqa.github.io/isort/" + command = "isort --check-only --diff --color" + has_color = true + [perl_syntax] dependencies = ["perl"] url = "https://en.wikipedia.org/wiki/Perl" @@ -223,6 +237,24 @@ tools_for_extensions = [ url = "http://www.ruby-lang.org/" command = "ruby -c" +[rubocop] + dependencies = ["rubocop"] + url = "https://rubocop.org/" + command = "rubocop --color --fail-level autocorrect --display-style-guide" + has_color = true + +[rustfmt] + dependencies = ["rustfmt"] + url = "https://github.com/rust-lang/rustfmt" + command = "cargo fmt --check -- --color always" + has_color = true + +[clippy] + dependencies = ["rust-clippy"] + url = "https://github.com/rust-lang/rust-clippy" + command = "rustc -Awarnings -Dclippy::all" + has_color = true + [lua_syntax] dependencies = ["lua5.3"] url = "http://www.lua.org" @@ -233,6 +265,12 @@ tools_for_extensions = [ url = "http://nodejs.org/" command = "node --check" +[typescript_check] + dependencies = ["node-typescript"] + url = "https://www.typescriptlang.org/" + command = "tsc --pretty --noEmit" + has_color = true + [lua_check] dependencies = ["lua-check"] url = "https://github.com/mpeterv/luacheck" @@ -244,6 +282,11 @@ tools_for_extensions = [ url = "https://github.com/golang/go" command = "go vet" +[wat_syntax_check] + dependencies = ["wabt"] + url = "https://github.com/WebAssembly/wabt" + command = "wat2wasm --check-only" + [wasm_validate] dependencies = ["wabt"] url = "https://github.com/WebAssembly/wabt" From 6ec4f958ff84288b712de46568ee8b64f807ff9d Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 15:53:06 +1000 Subject: [PATCH 27/46] Update version to v2025.06.09 --- README.md | 4 ++-- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 4 ++-- pyproject.toml | 8 ++++---- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 8686f1d..85c54a0 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.07 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.09 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.07 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.09 Then use eris to install all the tools it uses: diff --git a/eris/__init__.py b/eris/__init__.py index f47acec..dc26c70 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2025.06.07" +__version__ = "v2025.06.09" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index cb8e67c..09e8b96 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.07" +__version__ = "v2025.06.09" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 2316d21..428004d 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.07" +version = "v2025.06.09" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 581bfdb..5d583dd 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.07" +__version__ = "v2025.06.09" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index a20b3ea..e727251 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.07" +version = "v2025.06.09" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index a938099..69a1872 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -28,11 +28,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.07 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.09 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.07 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.09 Then use eris to install all the tools it uses: diff --git a/pyproject.toml b/pyproject.toml index dd0a5e5..59e8b9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.07" +version = "v2025.06.09" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.07#subdirectory=termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=termstr", ] [tool.uv.sources] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 73a2840..4f50147 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.07" +version = "v2025.06.09" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index 432ecd3..e730338 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.07" +__version__ = "v2025.06.09" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index fec26b8..32b2d33 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.7" +version = "2025.6.9" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.7" +version = "2025.6.9" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.7" +version = "2025.6.9" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.7" +version = "2025.6.9" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From ad74f48679f34748ca3fbff34e2f3b483548f1af Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 17:08:07 +1000 Subject: [PATCH 28/46] tools: Fix python isort - isort is not in the path - Run in the system python with /usr/bin/python3 -m isort --- eris/tools.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eris/tools.toml b/eris/tools.toml index a8b8621..24deb72 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -89,7 +89,7 @@ tools_for_extensions = [ [isort] dependencies = ["python3-isort", "python3-colorama"] url = "https://pycqa.github.io/isort/" - command = "isort --check-only --diff --color" + command = "/usr/bin/python3 -m isort --check-only --diff --color" has_color = true [perl_syntax] From 1a31aa838e5cb2b5fad43ab5eeb8119e8efa8e76 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 17:50:57 +1000 Subject: [PATCH 29/46] packaging: Python tools use the system python not venv python --- eris/tools.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/eris/tools.py b/eris/tools.py index 08a3be4..a292637 100755 --- a/eris/tools.py +++ b/eris/tools.py @@ -35,8 +35,7 @@ import tomllib import eris -PYTHON_VERSION = "3.11" -PYTHON_EXECUTABLE = "python" + PYTHON_VERSION +PYTHON_EXECUTABLE = "/usr/bin/python3" CACHE_PATH = ".eris" @@ -654,13 +653,16 @@ def splitext(path): return root, ext +def python_has_module(python_path, module_name): + one_liner = ("import importlib, sys; " + f"sys.exit(importlib.util.find_spec('{module_name}') is not None)") + return bool(subprocess.call([python_path, "-c", one_liner])) + + @functools.cache def is_tool_available(tool): if (hasattr(tool, "command") and tool.command.startswith(f"{PYTHON_EXECUTABLE} -m ")): - try: - return importlib.util.find_spec(tool.command.split()[2]) is not None - except ModuleNotFoundError: - return False + return python_has_module(PYTHON_EXECUTABLE, tool.command.split()[2]) try: return all(shutil.which(executable) for executable in tool.executables) except AttributeError: From 410666e0b064f3671824a4e673748cf93ecc2bcc Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 18:12:47 +1000 Subject: [PATCH 30/46] tools: Get tools tests passing - 7zz is now 7z - Update golden files for different shade of grey --- eris/tools.toml | 2 +- tests/golden-files/results/contents-hi3_py | 2 +- tests/golden-files/results/python_gut-hi3_py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eris/tools.toml b/eris/tools.toml index 24deb72..1ac39c0 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -156,7 +156,7 @@ tools_for_extensions = [ [7z] dependencies = ["7zip"] url = "http://p7zip.sourceforge.net/" - command = "7zz l" + command = "7z l" [unxz] dependencies = ["xz-utils"] diff --git a/tests/golden-files/results/contents-hi3_py b/tests/golden-files/results/contents-hi3_py index f8eb0b0..a4b5d4f 100644 --- a/tests/golden-files/results/contents-hi3_py +++ b/tests/golden-files/results/contents-hi3_py @@ -1,4 +1,4 @@     -def hi():  +def hi():   print("hi") \ No newline at end of file diff --git a/tests/golden-files/results/python_gut-hi3_py b/tests/golden-files/results/python_gut-hi3_py index 994b829..07e324f 100644 --- a/tests/golden-files/results/python_gut-hi3_py +++ b/tests/golden-files/results/python_gut-hi3_py @@ -1,3 +1,3 @@     -def hi(): \ No newline at end of file +def hi(): \ No newline at end of file From 2b5b7f7fe97bdb2e60488b39a728574e0bdbe33e Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 18:18:52 +1000 Subject: [PATCH 31/46] tools: Drop fragile golden tests that work on x86 but not arm --- tests/tools_test.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tests/tools_test.py b/tests/tools_test.py index e708bf3..227475b 100755 --- a/tests/tools_test.py +++ b/tests/tools_test.py @@ -107,12 +107,6 @@ class ToolsTestCase(unittest.TestCase): def test_c_syntax_gcc(self): self._test_tool(tools.c_syntax_gcc, [("hello.c", tools.Status.ok)]) - def test_objdump_headers(self): - self._test_tool(tools.objdump_headers, [("rotatingtree.o", tools.Status.ok)]) - - def test_objdump_disassemble(self): - self._test_tool(tools.objdump_disassemble, [("rotatingtree.o", tools.Status.problem)]) - def test_readelf(self): self._test_tool(tools.readelf, [("rotatingtree.o", tools.Status.ok)]) From a78f53740a737d19dff92fe1457fecc9e8a39e38 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Mon, 9 Jun 2025 22:39:07 +1000 Subject: [PATCH 32/46] tools: Document tools.toml - So that it can be understood in isolation by ai. --- eris/tools.toml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/eris/tools.toml b/eris/tools.toml index 1ac39c0..9bf91d9 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -1,5 +1,6 @@ - +# tools_for_extensions is a mapping that defines which tools are run on files of +# certain types. The tools are defined below. tools_for_extensions = [ [["py"], ["python_syntax", "python_unittests", "pytest", "pydoc", "mypy", "python_coverage", "pycodestyle", "pyflakes", @@ -43,6 +44,17 @@ tools_for_extensions = [ [["iso"], ["isoinfo"]], ] +# Now define all the tools. +# +# Each section defines a tool by these attributes: +# dependencies: A list of debian packages that need to be installed for the tool to run. +# url: Where the tool is documented. +# command: The shell command to run the tool. All tools must produce a text report given a +# file in the codebase. The file's path is added to the end of the command. +# All reports are ideally in color. All tools should return an error code of 0 iff +# there are no issues with the file. +# has_color: Is true if the command's output is in color. +# timeout: Some commands have a timeout if they can't be trusted to finish in a reasonable time. [python_syntax] dependencies = [] From 9962068019b4b87fced7990f6d03db3a22e3191c Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 10 Jun 2025 13:22:30 +1000 Subject: [PATCH 33/46] Page the output when listing all tools. --- eris/__main__.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index ff9cbd5..033d777 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1115,17 +1115,28 @@ def print_tool_info(): for extension in extensions: for tool in tools_: extensions_for_tool.setdefault(tool, {extension}).add(extension) + pager_process = None + if shutil.which("less"): + pager_process = subprocess.Popen(["less", "-RFEX"], + stdin=subprocess.PIPE, text=True) + output_file = pager_process.stdin + else: + output_file = sys.stdout for tool in sorted(tools.tools_all(), key=lambda t: t.__name__): print(termstr.TermStr(tool.__name__, is_bold=True) if tools.is_tool_available(tool) - else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)") + else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)" + , file=output_file) if hasattr(tool, "command"): - print(f"command: {tool.command} foo.{extensions[0]}") + print(f"command: {tool.command} foo.{extensions[0]}", file=output_file) else: - print("function:", "eris.tools." + tool.__name__) - print("url:", tool.url) + print("function:", "eris.tools." + tool.__name__, file=output_file) + print("url:", tool.url, file=output_file) extensions = list(extensions_for_tool.get(tool, {"*"})) - print("extensions:", ", ".join(extensions)) - print() + print("extensions:", ", ".join(extensions), file=output_file) + print("", file=output_file) + if pager_process is not None: + output_file.close() + pager_process.wait() def install_all_tools(): From 4c68e226bf1b0fbd3095bfe2a3d9fd8ef0ff3cae Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 10 Jun 2025 13:39:24 +1000 Subject: [PATCH 34/46] coding style: Redirect stdout to simplify multiple prints --- eris/__main__.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 033d777..b7ac7db 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1122,18 +1122,18 @@ def print_tool_info(): output_file = pager_process.stdin else: output_file = sys.stdout - for tool in sorted(tools.tools_all(), key=lambda t: t.__name__): - print(termstr.TermStr(tool.__name__, is_bold=True) if tools.is_tool_available(tool) - else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)" - , file=output_file) - if hasattr(tool, "command"): - print(f"command: {tool.command} foo.{extensions[0]}", file=output_file) - else: - print("function:", "eris.tools." + tool.__name__, file=output_file) - print("url:", tool.url, file=output_file) - extensions = list(extensions_for_tool.get(tool, {"*"})) - print("extensions:", ", ".join(extensions), file=output_file) - print("", file=output_file) + with contextlib.redirect_stdout(output_file): + for tool in sorted(tools.tools_all(), key=lambda t: t.__name__): + print(termstr.TermStr(tool.__name__, is_bold=True) if tools.is_tool_available(tool) + else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)") + if hasattr(tool, "command"): + print(f"command: {tool.command} foo.{extensions[0]}") + else: + print("function:", "eris.tools." + tool.__name__) + print("url:", tool.url) + extensions = list(extensions_for_tool.get(tool, {"*"})) + print("extensions:", ", ".join(extensions)) + print("") if pager_process is not None: output_file.close() pager_process.wait() From ce224275e9fa1dbe5b612cbe587fe9da911999c9 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 10 Jun 2025 16:57:44 +1000 Subject: [PATCH 35/46] coding style: Extract the paging code into its own context manager --- eris/__main__.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index b7ac7db..32cc11a 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1109,20 +1109,26 @@ def manage_cache(root_path): gitignore_file.write("*") +@contextlib.contextmanager +def print_to_pager(pager_command=["less", "-RFEX"]): + try: + pager_process = subprocess.Popen(pager_command, stdin=subprocess.PIPE, text=True) + except FileNotFoundError: + yield + else: + with contextlib.redirect_stdout(pager_process.stdin): + yield + pager_process.stdin.close() + pager_process.wait() + + def print_tool_info(): extensions_for_tool = {} for extensions, tools_ in tools.TOOLS_FOR_EXTENSIONS: for extension in extensions: for tool in tools_: extensions_for_tool.setdefault(tool, {extension}).add(extension) - pager_process = None - if shutil.which("less"): - pager_process = subprocess.Popen(["less", "-RFEX"], - stdin=subprocess.PIPE, text=True) - output_file = pager_process.stdin - else: - output_file = sys.stdout - with contextlib.redirect_stdout(output_file): + with print_to_pager(): for tool in sorted(tools.tools_all(), key=lambda t: t.__name__): print(termstr.TermStr(tool.__name__, is_bold=True) if tools.is_tool_available(tool) else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)") @@ -1134,9 +1140,6 @@ def print_tool_info(): extensions = list(extensions_for_tool.get(tool, {"*"})) print("extensions:", ", ".join(extensions)) print("") - if pager_process is not None: - output_file.close() - pager_process.wait() def install_all_tools(): From ff1f2c87602d9a5b58d20a29a68dfb5405b6d17e Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 10 Jun 2025 18:52:54 +1000 Subject: [PATCH 36/46] coding style: Can use the Popen context manager to close and wait --- eris/__main__.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 32cc11a..06d78f4 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1112,14 +1112,11 @@ def manage_cache(root_path): @contextlib.contextmanager def print_to_pager(pager_command=["less", "-RFEX"]): try: - pager_process = subprocess.Popen(pager_command, stdin=subprocess.PIPE, text=True) + with subprocess.Popen(pager_command, stdin=subprocess.PIPE, text=True) as pager_process: + with contextlib.redirect_stdout(pager_process.stdin): + yield except FileNotFoundError: yield - else: - with contextlib.redirect_stdout(pager_process.stdin): - yield - pager_process.stdin.close() - pager_process.wait() def print_tool_info(): From 403e056802966e855357fb7378e4897e43cda70a Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 14 Jun 2025 09:06:23 +1000 Subject: [PATCH 37/46] Update version to v2025.06.14 --- README.md | 4 ++-- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 4 ++-- pyproject.toml | 8 ++++---- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 85c54a0..949bed0 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.09 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.14 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.09 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.14 Then use eris to install all the tools it uses: diff --git a/eris/__init__.py b/eris/__init__.py index dc26c70..9d3e284 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1,3 @@ -__version__ = "v2025.06.09" +__version__ = "v2025.06.14" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index 09e8b96..aaa424b 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.09" +__version__ = "v2025.06.14" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index 428004d..a48b613 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.09" +version = "v2025.06.14" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 5d583dd..992fcfb 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.09" +__version__ = "v2025.06.14" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index e727251..1095437 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.09" +version = "v2025.06.14" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 69a1872..17cd51c 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -28,11 +28,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.09 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.14 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.09 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.14 Then use eris to install all the tools it uses: diff --git a/pyproject.toml b/pyproject.toml index 59e8b9b..f521003 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.09" +version = "v2025.06.14" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.09#subdirectory=termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=termstr", ] [tool.uv.sources] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 4f50147..8b8d999 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.09" +version = "v2025.06.14" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index e730338..c1300bd 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.09" +__version__ = "v2025.06.14" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index 32b2d33..c1536e6 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.9" +version = "2025.6.14" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.9" +version = "2025.6.14" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.9" +version = "2025.6.14" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.9" +version = "2025.6.14" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From 99ed8efc43c944394f520972d3991467bf75ab42 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 14 Jun 2025 11:29:15 +1000 Subject: [PATCH 38/46] Fix incorrect extension when listing tools --- eris/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eris/__main__.py b/eris/__main__.py index 06d78f4..c46c9ae 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1129,12 +1129,12 @@ def print_tool_info(): for tool in sorted(tools.tools_all(), key=lambda t: t.__name__): print(termstr.TermStr(tool.__name__, is_bold=True) if tools.is_tool_available(tool) else termstr.TermStr(tool.__name__, fg_color=termstr.Color.red) + " (not available)") + extensions = list(extensions_for_tool.get(tool, {"*"})) if hasattr(tool, "command"): print(f"command: {tool.command} foo.{extensions[0]}") else: print("function:", "eris.tools." + tool.__name__) print("url:", tool.url) - extensions = list(extensions_for_tool.get(tool, {"*"})) print("extensions:", ", ".join(extensions)) print("") From 754143b395bbf35918a2808998e851b36bce5c4c Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 21 Jun 2025 14:41:06 +1000 Subject: [PATCH 39/46] Add a patch command - Make it easy to apply the patches some tools produce. --- eris/__init__.py | 2 -- eris/__main__.py | 18 ++++++++++++++---- eris/tools.py | 3 ++- eris/tools.toml | 2 ++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/eris/__init__.py b/eris/__init__.py index 9d3e284..60fc7e5 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1,3 +1 @@ - - __version__ = "v2025.06.14" diff --git a/eris/__main__.py b/eris/__main__.py index c46c9ae..21e7de7 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -88,6 +88,7 @@ KEYS_DOC = """Keys: R - Refresh all reports of the current tool. f - Resize the focused pane to the full screen. (toggle) o - Open the current file with xdg-open. + p - Patch the current file. (When viewing a patch from a tool) """ @@ -786,6 +787,15 @@ class Screen: in_green(f" at line {line_num}…")]) subprocess.Popen(f"{self.editor_command} +{line_num} {path}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + def patch_file(self): + result = self._summary.get_selection() + if hasattr(result.tool, "patch_command") and result.tool.patch_command is not None: + path = result.path + path_colored = lscolors.path_colored(path) + self._log.log_message([in_green("Patching file: "), path_colored]) + subprocess.run(f"{result.tool.patch_command} {path} | patch -p0", shell=True, + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + subprocess.run(["touch", path]) def toggle_status_style(self): self._summary.toggle_status_style(self._log) @@ -915,7 +925,7 @@ class Screen: tools.STATUS_TO_TERMSTR[widget.status] + divider + "line " + str(y+1)) _STATUS_BAR = highlight_chars(" *help *quit *t*a*b:focus *turn *log *edit *next *sort" - " *refresh *fullscreen *open", Log._GREEN_STYLE) + " *refresh *fullscreen *open *patch", Log._GREEN_STYLE) @functools.cache def _get_partial_bar_chars(self, bar_transparency): @@ -963,9 +973,9 @@ class Screen: terminal.RIGHT: cursor_right, terminal.PAGE_DOWN: cursor_page_down, terminal.PAGE_UP: cursor_page_up, "s": toggle_order, terminal.HOME: cursor_home, terminal.END: cursor_end, "n": move_to_next_issue, "N": move_to_next_issue_of_tool, - "e": edit_file, "q": quit_, terminal.ESC: quit_, terminal.CTRL_C: quit_, - "r": refresh, "R": refresh_tool, "\t": toggle_focus, "f": toggle_fullscreen, - "o": xdg_open} + "e": edit_file, "p": patch_file, "q": quit_, terminal.ESC: quit_, + terminal.CTRL_C: quit_, "r": refresh, "R": refresh_tool, "\t": toggle_focus, + "f": toggle_fullscreen, "o": xdg_open} def setup_inotify(root_path, loop, on_filesystem_event, exclude_filter): diff --git a/eris/tools.py b/eris/tools.py index a292637..1daa6f4 100755 --- a/eris/tools.py +++ b/eris/tools.py @@ -437,7 +437,7 @@ def git_log(path): def make_tool_function(dependencies, command, url=None, error_status=None, - has_color=False, timeout=None): + has_color=False, timeout=None, patch_command=None): if url is None: url = dependencies[0] command_parts = command.split() @@ -448,6 +448,7 @@ def make_tool_function(dependencies, command, url=None, error_status=None, def func(path): return _run_command(command_parts + [path], error_status, has_color, timeout) func.command = command + func.patch_command = patch_command return func diff --git a/eris/tools.toml b/eris/tools.toml index 9bf91d9..0f61767 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -96,12 +96,14 @@ tools_for_extensions = [ dependencies = ["black"] url = "https://github.com/psf/black" command = "black --check --diff --color" + patch_command = "black --diff" has_color = true [isort] dependencies = ["python3-isort", "python3-colorama"] url = "https://pycqa.github.io/isort/" command = "/usr/bin/python3 -m isort --check-only --diff --color" + patch_command = "/usr/bin/python3 -m isort --diff" has_color = true [perl_syntax] From ac7c7010df5c3c41e81e0650eaf6fc63a98ed486 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Sat, 21 Jun 2025 14:43:57 +1000 Subject: [PATCH 40/46] Update version to v2025.06.21 --- README.md | 4 ++-- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 4 ++-- pyproject.toml | 8 ++++---- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 949bed0..d370231 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.14 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.21 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.14 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.21 Then use eris to install all the tools it uses: diff --git a/eris/__init__.py b/eris/__init__.py index 60fc7e5..28fc638 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1 +1 @@ -__version__ = "v2025.06.14" +__version__ = "v2025.06.21" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index aaa424b..b29c624 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.14" +__version__ = "v2025.06.21" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index a48b613..ba2a6ed 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.14" +version = "v2025.06.21" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 992fcfb..3fbef6a 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.14" +__version__ = "v2025.06.21" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index 1095437..676e8a7 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.14" +version = "v2025.06.21" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 17cd51c..597f826 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -28,11 +28,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.14 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.21 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.14 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.21 Then use eris to install all the tools it uses: diff --git a/pyproject.toml b/pyproject.toml index f521003..d3731e8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.14" +version = "v2025.06.21" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.14#subdirectory=termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=termstr", ] [tool.uv.sources] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 8b8d999..01157fb 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.14" +version = "v2025.06.21" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index c1300bd..bae5cc7 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.14" +__version__ = "v2025.06.21" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index c1536e6..fac5b3e 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.14" +version = "2025.6.21" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.14" +version = "2025.6.21" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.14" +version = "2025.6.21" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.14" +version = "2025.6.21" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" }, From a8f3261ab872e7a8c2e5cd890dbf1b44a1dc7e07 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 24 Jun 2025 18:33:01 +1000 Subject: [PATCH 41/46] tools: Fix isort - Isort's has patches containing absolute paths that don't apply. - Let isort apply the patch itself. - The patch_command can either do the patch or return a patch. --- eris/__main__.py | 2 +- eris/tools.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 21e7de7..8332567 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -794,7 +794,7 @@ class Screen: path_colored = lscolors.path_colored(path) self._log.log_message([in_green("Patching file: "), path_colored]) subprocess.run(f"{result.tool.patch_command} {path} | patch -p0", shell=True, - stdout=subprocess.PIPE, stderr=subprocess.PIPE) + capture_output=True) subprocess.run(["touch", path]) def toggle_status_style(self): diff --git a/eris/tools.toml b/eris/tools.toml index 0f61767..546d7ed 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -103,7 +103,7 @@ tools_for_extensions = [ dependencies = ["python3-isort", "python3-colorama"] url = "https://pycqa.github.io/isort/" command = "/usr/bin/python3 -m isort --check-only --diff --color" - patch_command = "/usr/bin/python3 -m isort --diff" + patch_command = "/usr/bin/python3 -m isort --overwrite-in-place" has_color = true [perl_syntax] From 906b0510bb077187a438c041224a18db8c384b36 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Tue, 24 Jun 2025 22:10:46 +1000 Subject: [PATCH 42/46] Add patch_command to the tool summary --- eris/__main__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/eris/__main__.py b/eris/__main__.py index 8332567..0474f98 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1144,6 +1144,8 @@ def print_tool_info(): print(f"command: {tool.command} foo.{extensions[0]}") else: print("function:", "eris.tools." + tool.__name__) + if hasattr(tool, "patch_command") and tool.patch_command is not None: + print(f"patch command: {tool.patch_command} foo.{extensions[0]}") print("url:", tool.url) print("extensions:", ", ".join(extensions)) print("") From 267a100b095fb29bbf92d4ef4c63cab191e88a5e Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Fri, 27 Jun 2025 23:02:57 +1000 Subject: [PATCH 43/46] tools: Add patch command to "git diff" - May as well let the changes be easily removed. --- eris/tools.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/eris/tools.toml b/eris/tools.toml index 546d7ed..a62aed8 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -128,6 +128,7 @@ tools_for_extensions = [ dependencies = ["git"] url = "https://git-scm.com/docs/git-diff" command = "git diff --exit-code" + patch_command = "git checkout" has_color = true [git_blame] From 327852af40bf1444fc243ca9246b3b150609a257 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Fri, 27 Jun 2025 23:18:17 +1000 Subject: [PATCH 44/46] tools: Let rubocop do autocorrect patches --- eris/tools.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/eris/tools.toml b/eris/tools.toml index a62aed8..7d4306e 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -256,6 +256,7 @@ tools_for_extensions = [ dependencies = ["rubocop"] url = "https://rubocop.org/" command = "rubocop --color --fail-level autocorrect --display-style-guide" + patch_command = "rubocop --autocorrect" has_color = true [rustfmt] From 699f808951e39fa1326746b192d28f0cb7fe7d93 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Fri, 11 Jul 2025 23:03:17 +1000 Subject: [PATCH 45/46] packaging: Just depend on ruby instead of ruby3.1 - Let debian bookworm and trixie both work. - Other distros are using ruby. --- eris/__main__.py | 11 +++++------ eris/tools.toml | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/eris/__main__.py b/eris/__main__.py index 0474f98..2190c89 100755 --- a/eris/__main__.py +++ b/eris/__main__.py @@ -1157,8 +1157,7 @@ def install_all_tools(): install_command = ["apt", "-y", "install"] # debian / ubuntu if "ID=fedora\n" in os_release_lines: tools_.remove("lua-check") - renames = {"lua5.3": "lua", "python3-bandit": "bandit", "ruby3.1": "ruby", - "xz-utils": "xz"} + renames = {"lua5.3": "lua", "python3-bandit": "bandit", "xz-utils": "xz"} tools_ = [renames.get(tool, tool) for tool in tools_] install_command = ["dnf", "-y", "install"] elif "ID=arch\n" in os_release_lines: @@ -1166,8 +1165,8 @@ def install_all_tools(): tools_.remove("python3-pdfminer") # pdf2txt is not in arch tools_.remove("perl-doc") # perldoc is in perl but not in the path tools_.remove("7zip") - renames = {"genisoimage": "cdrkit", "lua5.3": "lua", "ruby3.1": "ruby", "xz-utils": "xz", - "g++": "gcc", "golang-go": "go", "lua-check": "luacheck", "php-cli": "php", + renames = {"genisoimage": "cdrkit", "lua5.3": "lua", "xz-utils": "xz", "g++": "gcc", + "golang-go": "go", "lua-check": "luacheck", "php-cli": "php", "pylint": "python-pylint", "python3-bandit": "bandit", "python3-mypy": "mypy"} tools_ = [renames.get(tool, tool) for tool in tools_] tools_ = ["python-" + tool[len("python3-"):] if tool.startswith("python3-") else tool @@ -1176,8 +1175,8 @@ def install_all_tools(): elif "ID=alpine\n" in os_release_lines: tools_.remove("python3-bandit") tools_.remove("wabt") - renames = {"genisoimage": "cdrkit", "lua5.3": "lua", "ruby3.1": "ruby", "xz-utils": "xz", - "g++": "gcc", "golang-go": "go", "lua-check": "luacheck", "php-cli": "php", + renames = {"genisoimage": "cdrkit", "lua5.3": "lua", "xz-utils": "xz", "g++": "gcc", + "golang-go": "go", "lua-check": "luacheck", "php-cli": "php", "pylint": "py3-pylint", "tidy": "tidyhtml"} tools_ = [renames.get(tool, tool) for tool in tools_] tools_ = ["py3-" + tool[len("python3-"):] if tool.startswith("python3-") else tool diff --git a/eris/tools.toml b/eris/tools.toml index 7d4306e..06b624d 100644 --- a/eris/tools.toml +++ b/eris/tools.toml @@ -248,7 +248,7 @@ tools_for_extensions = [ command = "cppcheck --error-exitcode=1" [ruby_syntax] - dependencies = ["ruby3.1"] + dependencies = ["ruby"] url = "http://www.ruby-lang.org/" command = "ruby -c" From 9e24f7cb85f853e69f20d9d43e80e3fd47ff7d27 Mon Sep 17 00:00:00 2001 From: Andrew Hamilton Date: Fri, 11 Jul 2025 23:05:37 +1000 Subject: [PATCH 46/46] Update version to v2025.07.11 --- README.md | 4 ++-- eris/__init__.py | 2 +- fill3/fill3/__init__.py | 2 +- fill3/pyproject.toml | 2 +- lscolors/lscolors/__init__.py | 2 +- lscolors/pyproject.toml | 2 +- packaging/make-readme.py | 4 ++-- pyproject.toml | 8 ++++---- termstr/pyproject.toml | 2 +- termstr/termstr/__init__.py | 2 +- uv.lock | 8 ++++---- 11 files changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index d370231..af57efd 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.21 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.07.11 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.21 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.07.11 Then use eris to install all the tools it uses: diff --git a/eris/__init__.py b/eris/__init__.py index 28fc638..75276cc 100644 --- a/eris/__init__.py +++ b/eris/__init__.py @@ -1 +1 @@ -__version__ = "v2025.06.21" +__version__ = "v2025.07.11" diff --git a/fill3/fill3/__init__.py b/fill3/fill3/__init__.py index b29c624..3452145 100755 --- a/fill3/fill3/__init__.py +++ b/fill3/fill3/__init__.py @@ -15,7 +15,7 @@ import fill3.terminal as terminal import termstr -__version__ = "v2025.06.21" +__version__ = "v2025.07.11" ########################## diff --git a/fill3/pyproject.toml b/fill3/pyproject.toml index ba2a6ed..f792d5d 100644 --- a/fill3/pyproject.toml +++ b/fill3/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "fill3" -version = "v2025.06.21" +version = "v2025.07.11" description = "Fill3 provides basic widgets for a tui." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/lscolors/lscolors/__init__.py b/lscolors/lscolors/__init__.py index 3fbef6a..4c9785c 100644 --- a/lscolors/lscolors/__init__.py +++ b/lscolors/lscolors/__init__.py @@ -15,7 +15,7 @@ import lscolors import termstr -__version__ = "v2025.06.21" +__version__ = "v2025.07.11" FILE_KEY = "fi" diff --git a/lscolors/pyproject.toml b/lscolors/pyproject.toml index 676e8a7..86cd666 100644 --- a/lscolors/pyproject.toml +++ b/lscolors/pyproject.toml @@ -7,7 +7,7 @@ allow-direct-references = true [project] name = "lscolors" -version = "v2025.06.21" +version = "v2025.07.11" description = "Give coloring for file types as in the ls command." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/packaging/make-readme.py b/packaging/make-readme.py index 597f826..ba95c19 100755 --- a/packaging/make-readme.py +++ b/packaging/make-readme.py @@ -28,11 +28,11 @@ Eris can be installed by pipx or [uv](https://docs.astral.sh/uv/getting-started/ To install with pipx: - pipx install git+https://gitlab.com/ahamilton/eris@v2025.06.21 + pipx install git+https://gitlab.com/ahamilton/eris@v2025.07.11 or to install with uv: - uv tool install git+https://gitlab.com/ahamilton/eris@v2025.06.21 + uv tool install git+https://gitlab.com/ahamilton/eris@v2025.07.11 Then use eris to install all the tools it uses: diff --git a/pyproject.toml b/pyproject.toml index d3731e8..b0156f5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "eris" -version = "v2025.06.21" +version = "v2025.07.11" description = "Eris maintains an up-to-date set of reports for every file in a codebase." readme = "README.md" authors = [ @@ -11,13 +11,13 @@ authors = [ requires-python = ">=3.11" dependencies = [ "docopt-ng==0.9.0", - "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=fill3", - "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=lscolors", + "fill3 @ git+https://gitlab.com/ahamilton/eris@v2025.07.11#subdirectory=fill3", + "lscolors @ git+https://gitlab.com/ahamilton/eris@v2025.07.11#subdirectory=lscolors", "pexpect==4.9.0", "pillow==11.2.1", "pygments==2.19.1", "pyinotify-elephant-fork==0.0.1", - "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.06.21#subdirectory=termstr", + "termstr @ git+https://gitlab.com/ahamilton/eris@v2025.07.11#subdirectory=termstr", ] [tool.uv.sources] diff --git a/termstr/pyproject.toml b/termstr/pyproject.toml index 01157fb..c48307f 100644 --- a/termstr/pyproject.toml +++ b/termstr/pyproject.toml @@ -2,7 +2,7 @@ tool.uv.package = true [project] name = "termstr" -version = "v2025.06.21" +version = "v2025.07.11" description = "Termstr provides strings with extra terminal styling." authors = [ { name = "Andrew Hamilton", email = "and_hamilton@yahoo.com" }, diff --git a/termstr/termstr/__init__.py b/termstr/termstr/__init__.py index bae5cc7..4faf29e 100644 --- a/termstr/termstr/__init__.py +++ b/termstr/termstr/__init__.py @@ -10,7 +10,7 @@ import weakref import cwcwidth -__version__ = "v2025.06.21" +__version__ = "v2025.07.11" ESC = "\x1b" diff --git a/uv.lock b/uv.lock index fac5b3e..d548f02 100644 --- a/uv.lock +++ b/uv.lock @@ -27,7 +27,7 @@ wheels = [ [[package]] name = "eris" -version = "2025.6.21" +version = "2025.7.11" source = { editable = "." } dependencies = [ { name = "docopt-ng" }, @@ -54,7 +54,7 @@ requires-dist = [ [[package]] name = "fill3" -version = "2025.6.21" +version = "2025.7.11" source = { editable = "fill3" } dependencies = [ { name = "termstr" }, @@ -65,7 +65,7 @@ requires-dist = [{ name = "termstr", editable = "termstr" }] [[package]] name = "lscolors" -version = "2025.6.21" +version = "2025.7.11" source = { editable = "lscolors" } dependencies = [ { name = "termstr" }, @@ -171,7 +171,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/d6/b4/b44fccc7040b01449 [[package]] name = "termstr" -version = "2025.6.21" +version = "2025.7.11" source = { editable = "termstr" } dependencies = [ { name = "cwcwidth" },