From 7cafa11a83ca04caf4c1cfbf5cd0a091c5780f28 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 6 Jun 2026 21:57:27 +0100 Subject: [PATCH 1/3] Fix CI --- great_ai/deploy/great_ai.py | 18 +++++++++--------- tests/external/test_internals.py | 26 +++++++++++++++----------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/great_ai/deploy/great_ai.py b/great_ai/deploy/great_ai.py index 55b2125..a6ea818 100644 --- a/great_ai/deploy/great_ai.py +++ b/great_ai/deploy/great_ai.py @@ -230,17 +230,17 @@ class GreatAI(Generic[T, V]): ), ) + # inner/inner_async return the class' T (bound to Trace | Awaitable[Trace]); + # in this method T resolves to Trace[V], but that is not provable to mypy, so + # cast to the concrete shape parallel_map expects. + map_function = cast( + Callable[[Any], Union[Trace[V], Awaitable[Trace[V]]]], + inner_async if get_function_metadata_store(self).is_asynchronous else inner, + ) + return list( tqdm( - parallel_map( - ( - inner_async - if get_function_metadata_store(self).is_asynchronous - else inner - ), - batch, - concurrency=concurrency, - ), + parallel_map(map_function, batch, concurrency=concurrency), total=len(batch), ) ) diff --git a/tests/external/test_internals.py b/tests/external/test_internals.py index d858c17..142c1fa 100644 --- a/tests/external/test_internals.py +++ b/tests/external/test_internals.py @@ -242,7 +242,7 @@ async def test_wait_closed(): return_exceptions=True, ) assert ret == [] - assert mocked.called_once() + mocked.assert_called_once() asyncio.set_event_loop(loop) with mock.patch("great_ai.external.async_lru._close_waited") as mocked: @@ -251,7 +251,7 @@ async def test_wait_closed(): return_exceptions=True, ) assert ret == [] - assert mocked.called_once() + mocked.assert_called_once() asyncio.set_event_loop(None) fut = loop.create_future() @@ -263,7 +263,7 @@ async def test_wait_closed(): return_exceptions=True, ) assert ret == [None] - assert mocked.called_once() + mocked.assert_called_once() exc = ZeroDivisionError() fut = loop.create_future() @@ -275,7 +275,7 @@ async def test_wait_closed(): return_exceptions=True, ) assert ret == [exc] - assert mocked.called_once() + mocked.assert_called_once() fut = loop.create_future() fut.set_exception(ZeroDivisionError) @@ -286,17 +286,21 @@ async def test_wait_closed(): wrapped, return_exceptions=False, ) - assert mocked.called_once() + # the awaited result raised before _wait_closed could flush its done + # callback, so yield once to let the scheduled _close_waited run + await asyncio.sleep(0) + mocked.assert_called_once() def test_close_waited(): wrapped = Wrapped() - wrapped.cache_clear = partial(_cache_clear, wrapped) + # _close_waited calls wrapped.cache_clear(); mock that directly (patching the + # module-level _cache_clear would not affect the already-bound partial). + wrapped.cache_clear = mock.Mock() - with mock.patch("great_ai.external.async_lru._cache_clear") as mocked: - _close_waited(wrapped, None) + _close_waited(wrapped, None) - assert mocked.called_once() + wrapped.cache_clear.assert_called_once() def test_cache_info(): @@ -343,7 +347,7 @@ def test_cache_hit(): with mock.patch("great_ai.external.async_lru.__cache_touch") as mocked: _cache_hit(wrapped, 1) - assert mocked.called_once() + mocked.assert_called_once() assert wrapped.hits == 2 @@ -361,7 +365,7 @@ def test_cache_miss(): with mock.patch("great_ai.external.async_lru.__cache_touch") as mocked: _cache_miss(wrapped, 1) - assert mocked.called_once() + mocked.assert_called_once() assert wrapped.misses == 2 From 7eb507d3c3d678a0534d76cecbb786f95aa4cb41 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 6 Jun 2026 21:57:34 +0100 Subject: [PATCH 2/3] Run on modern python --- .forgejo/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml index bc632df..a76c206 100644 --- a/.forgejo/workflows/test.yml +++ b/.forgejo/workflows/test.yml @@ -47,10 +47,10 @@ jobs: matrix: # pyproject declares >= 3.7, but uv's standalone CPython and the current # dependency floors (scikit-learn/numpy now require >= 3.9) no longer - # build on 3.7/3.8. Re-add those rows if the constraints are relaxed. + # build on the older interpreters, so we test the current supported set. # The windows leg of the old GitHub matrix is dropped: this Forgejo # instance only has a Linux `docker` runner. - python-version: ['3.9', '3.10'] + python-version: ['3.10', '3.11', '3.12', '3.13'] steps: - uses: actions/checkout@v4 From 2403a20ed04b1816205c3ca470b49dba2339abe8 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sat, 6 Jun 2026 21:57:41 +0100 Subject: [PATCH 3/3] Update cycle --- docs/thesis/figures/design-cycle2.drawio.png | Bin 0 -> 50579 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/thesis/figures/design-cycle2.drawio.png diff --git a/docs/thesis/figures/design-cycle2.drawio.png b/docs/thesis/figures/design-cycle2.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6cbf5fcb4e7c8eeb13e8c4061b3682bac37d24 GIT binary patch literal 50579 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 W<+XMLD{*nakE){Pvr+|%(EkFGT6ZV_ literal 0 HcmV?d00001