From 307f7c322c5540fc61bf1f8451292717516052ac Mon Sep 17 00:00:00 2001 From: Tiara Rodney Date: Sat, 6 Jun 2026 14:14:13 +0200 Subject: [PATCH] todo(18): open --- TODO | 63 ++++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/TODO b/TODO index 920b16c..f0ae4ab 100644 --- a/TODO +++ b/TODO @@ -10,7 +10,7 @@ Title: implement KMP algorithm for string searching Status: hold Priority: high Created: 2025-05-03 -Relationships: +Relationships: Description: Implement the Knuth-Morris-Pratt algorithm for string searching. I require this for matching RFC 9112 boundaries of entities against a circular buffer. @@ -23,7 +23,7 @@ Title: implement circular buffer Status: done Priority: high Created: 2025-05-04 -Relationships: +Relationships: Description: implement a simple circular buffer --ISSUE @@ -34,7 +34,7 @@ Title: move unit tests to subdirectory Status: done Priority: high Created: 2025-05-04 -Relationships: +Relationships: Description: move the unit test suites to a unit/ subdirectory so that integration tests and benchmarks can be cleanly separated @@ -46,7 +46,7 @@ Title: implement Rabin-Karp rolling hash algorithm Status: done Priority: high Created: 2025-05-05 -Relationships: +Relationships: Description: After testing a couple of string search algorithms, I've ditched the idea of using KMP as my use-case gives no advantage compared to naive searching. In addition I've came upon the challenge that many @@ -66,7 +66,7 @@ Title: implement chunked rolling hash algorithm Status: in-progress Priority: high Created: 2025-05-05 -Relationships: +Relationships: Description: Implement my custom algorithm for doing rolling hash string search against a fixed length ring buffer @@ -78,7 +78,7 @@ Title: implement importlib.resources handler for urllib Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: A handler that can be registered with an urllib.request OpenerDirector to open importlib.resources package files. @@ -90,7 +90,7 @@ Title: setup advanced testing environment Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: copy the testing environment setup from byteb4rb1e.sphinxcontrib.ext @@ -102,7 +102,7 @@ Title: rename package Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: use dot namespaces to make the package a little more elegant --ISSUE @@ -113,7 +113,7 @@ Title: fix LICENSE reference Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: license specification is no longer a trove classifier in pyproject.toml, hence the reference to LICENSE must be changed @@ -125,7 +125,7 @@ Title: pytest current test context fixtures Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: add fixtures for doing things in relation to the active testing context @@ -137,7 +137,7 @@ Title: move testing utils out of utils Status: done Priority: high Created: 2025-06-20 -Relationships: +Relationships: Description: to shorten the namespace and also indicate that testing utilities are different from regular utilities @@ -149,7 +149,7 @@ Title: simplify testing.fixtures.mock_pkg Status: done Priority: high Created: 2025-06-21 -Relationships: +Relationships: Description: Only bootstrap a package mock with the minimum requirements for a Python module and let the consumer handle the directory layout. @@ -161,7 +161,7 @@ Title: fix unit tests for urllib PkgHandler Status: done Priority: high Created: 2025-06-21 -Relationships: +Relationships: Description: change of issue 12 wasn't properly reflected in urllib PkgHandler unit tests @@ -173,7 +173,7 @@ Title: add compression support for urllib PkgHandler Status: done Priority: high Created: 2025-06-21 -Relationships: +Relationships: Description: with a proper content-type of the PkgHandler addinfourl object, a consumer can determine whether the file is compressed or not. @@ -185,7 +185,7 @@ Title: modularize module containers Status: open Priority: high Created: 2025-06-28 -Relationships: +Relationships: Description: Even though importlib can find submodules through traversing paths instead of relying on __init__.py for every ancestor module, this is not supported by some modules like sphinx.ext.autosummary @@ -198,7 +198,7 @@ Title: SQL-aware dataclass Status: in-progress Priority: low Created: 2025-12-31 -Relationships: +Relationships: Description: A dataclass that transparently maps onto an SQL datastore, with command generation for syncing data between data class and store @@ -210,6 +210,35 @@ Title: recursive-descent HTML (DOM) parser Status: in-progress Priority: high Created: 2025-12-31 -Relationships: +Relationships: Description: Extend the built-in event-driven parser to be modeled after DOM recursive-descent HTML parser + +--ISSUE +Content-Type: application/issue +ID: 18 +Type: feature +Title: implement saas wrapper for Forgejo +Status: open +Priority: medium +Created: 2026-06-06 +Relationships: +Description: Add a new sub-package byteb4rb1e.utils.saas.forgejo, supporting the + same/similar operations as the Bitbucket wrapper + (byteb4rb1e.utils.saas.bitbucket) against the Forgejo REST API: + token-based authentication headers, repository existence checks, + repository creation within an owner/organization, and clone URL + construction. Implement as a thin layer over + byteb4rb1e.utils.http.client, consistent with the existing + Bitbucket and GitHub modules. + Unlike Bitbucket (one global SaaS instance, hence the hardcoded + api.bitbucket.org), Forgejo is self-hosted (e.g. + git.code.tiararodney.com). The wrapper MUST take a host/instance + URL parameter (or read one from config) rather than baking any + specific instance in. This is the biggest API-surface difference + from the bitbucket module. + Bitbucket's clone_url constructs SSH only. Forgejo's repository + API returns both clone_url (HTTPS) and ssh_url, and HTTPS is + needed in CI (no SSH host keys on the Woodpecker runner). The + wrapper SHOULD expose both, either as ssh_clone_url and + https_clone_url, or a single clone_url(..., scheme="ssh"|"https").