From 4b397731dbd86c7936a76726ee4709db0faae818 Mon Sep 17 00:00:00 2001 From: Nightknight3000 Date: Tue, 3 Mar 2026 13:16:47 +0100 Subject: [PATCH 1/4] refactor: specify literal in type hint of get_role Co-authored-by: antidodo --- flamesdk/flame_core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flamesdk/flame_core.py b/flamesdk/flame_core.py index d631903..fd2c87c 100644 --- a/flamesdk/flame_core.py +++ b/flamesdk/flame_core.py @@ -143,7 +143,7 @@ def get_id(self) -> str: """ return self.config.node_id - def get_role(self) -> str: + def get_role(self) -> Literal['default', 'aggregator']: """ Returns the role of the node. "aggregator" means that the node can submit final results using "submit_final_result", else "default" (this may change with further permission settings). From 06cc88f682c07a14c5960f872434e28267a6c784 Mon Sep 17 00:00:00 2001 From: Nightknight3000 Date: Tue, 3 Mar 2026 13:17:59 +0100 Subject: [PATCH 2/4] fix: request_path in storage_client Co-authored-by: antidodo --- flamesdk/resources/client_apis/clients/storage_client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flamesdk/resources/client_apis/clients/storage_client.py b/flamesdk/resources/client_apis/clients/storage_client.py index b64f385..872fef5 100644 --- a/flamesdk/resources/client_apis/clients/storage_client.py +++ b/flamesdk/resources/client_apis/clients/storage_client.py @@ -111,11 +111,11 @@ def push_result(self, else: data = {} - request_path = f"/{type}/" + request_path = f"/{type}" if use_local_dp: # append to request path - request_path += "localdp" + request_path += "/localdp" # local_dp is guaranteed to not be None, so remap values to string and update request data mapping data.update({k: str(v) for k, v in local_dp.items()}) From de49fc803c3cde957b44509138bd3b14443b2af0 Mon Sep 17 00:00:00 2001 From: Nightknight3000 Date: Tue, 3 Mar 2026 13:19:52 +0100 Subject: [PATCH 3/4] feat: bump version to 0.4.2 Co-authored-by: antidodo --- poetry.lock | 64 ++++++++++++++++++++++++++++++-------------------- pyproject.toml | 2 +- 2 files changed, 39 insertions(+), 27 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8f1e653..3d61c34 100644 --- a/poetry.lock +++ b/poetry.lock @@ -34,14 +34,14 @@ trio = ["trio (>=0.31.0) ; python_version < \"3.10\"", "trio (>=0.32.0) ; python [[package]] name = "certifi" -version = "2026.1.4" +version = "2026.2.25" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.7" groups = ["main"] files = [ - {file = "certifi-2026.1.4-py3-none-any.whl", hash = "sha256:9943707519e4add1115f44c2bc244f782c0249876bf51b6599fee1ffbedd685c"}, - {file = "certifi-2026.1.4.tar.gz", hash = "sha256:ac726dd470482006e014ad384921ed6438c457018f4b3d204aea4281258b2120"}, + {file = "certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa"}, + {file = "certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7"}, ] [[package]] @@ -181,15 +181,15 @@ files = [ [[package]] name = "filelock" -version = "3.20.3" +version = "3.25.0" description = "A platform independent file lock." optional = false python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.10\"" files = [ - {file = "filelock-3.20.3-py3-none-any.whl", hash = "sha256:4b0dda527ee31078689fc205ec4f1c1bf7d56cf88b6dc9426c4f230e46c2dce1"}, - {file = "filelock-3.20.3.tar.gz", hash = "sha256:18c57ee915c7ec61cff0ecf7f0f869936c7c30191bb0cf406f1341778d0834e1"}, + {file = "filelock-3.25.0-py3-none-any.whl", hash = "sha256:5ccf8069f7948f494968fc0713c10e5c182a9c9d9eef3a636307a20c2490f047"}, + {file = "filelock-3.25.0.tar.gz", hash = "sha256:8f00faf3abf9dc730a1ffe9c354ae5c04e079ab7d3a683b7c32da5dd05f26af3"}, ] [[package]] @@ -270,15 +270,15 @@ license = ["ukkonen"] [[package]] name = "identify" -version = "2.6.16" +version = "2.6.17" description = "File identification library for Python" optional = false python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.10\"" files = [ - {file = "identify-2.6.16-py2.py3-none-any.whl", hash = "sha256:391ee4d77741d994189522896270b787aed8670389bfd60f326d677d64a6dfb0"}, - {file = "identify-2.6.16.tar.gz", hash = "sha256:846857203b5511bbe94d5a352a48ef2359532bc8f6727b5544077a0dcfb24980"}, + {file = "identify-2.6.17-py2.py3-none-any.whl", hash = "sha256:be5f8412d5ed4b20f2bd41a65f920990bdccaa6a4a18a08f1eefdcd0bdd885f0"}, + {file = "identify-2.6.17.tar.gz", hash = "sha256:f816b0b596b204c9fdf076ded172322f2723cf958d02f9c3587504834c8ff04d"}, ] [package.extras] @@ -369,22 +369,17 @@ type = ["mypy (>=1.14.1)"] [[package]] name = "platformdirs" -version = "4.5.1" +version = "4.9.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.10" groups = ["dev"] markers = "python_version >= \"3.10\"" files = [ - {file = "platformdirs-4.5.1-py3-none-any.whl", hash = "sha256:d03afa3963c806a9bed9d5125c8f4cb2fdaf74a55ab60e5d59b3fde758104d31"}, - {file = "platformdirs-4.5.1.tar.gz", hash = "sha256:61d5cdcc6065745cdd94f0f878977f8de9437be93de97c1c12f853c9c0cdcbda"}, + {file = "platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd"}, + {file = "platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291"}, ] -[package.extras] -docs = ["furo (>=2025.9.25)", "proselint (>=0.14)", "sphinx (>=8.2.3)", "sphinx-autodoc-typehints (>=3.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.4.2)", "pytest-cov (>=7)", "pytest-mock (>=3.15.1)"] -type = ["mypy (>=1.18.2)"] - [[package]] name = "pluggy" version = "1.6.0" @@ -599,6 +594,26 @@ tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +[[package]] +name = "python-discovery" +version = "1.1.0" +description = "Python interpreter discovery" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "python_discovery-1.1.0-py3-none-any.whl", hash = "sha256:a162893b8809727f54594a99ad2179d2ede4bf953e12d4c7abc3cc9cdbd1437b"}, + {file = "python_discovery-1.1.0.tar.gz", hash = "sha256:447941ba1aed8cc2ab7ee3cb91be5fc137c5bdbb05b7e6ea62fbdcb66e50b268"}, +] + +[package.dependencies] +filelock = ">=3.15.4" +platformdirs = ">=4.3.6,<5" + +[package.extras] +docs = ["furo (>=2025.12.19)", "sphinx (>=9.1)", "sphinx-autodoc-typehints (>=3.6.3)", "sphinxcontrib-mermaid (>=2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.5.4)", "pytest (>=8.3.5)", "pytest-mock (>=3.14)", "setuptools (>=75.1)"] + [[package]] name = "pyyaml" version = "6.0.3" @@ -848,29 +863,26 @@ standard = ["colorama (>=0.4) ; sys_platform == \"win32\"", "httptools (>=0.5.0) [[package]] name = "virtualenv" -version = "20.36.1" +version = "21.1.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "virtualenv-20.36.1-py3-none-any.whl", hash = "sha256:575a8d6b124ef88f6f51d56d656132389f961062a9177016a50e4f507bbcc19f"}, - {file = "virtualenv-20.36.1.tar.gz", hash = "sha256:8befb5c81842c641f8ee658481e42641c68b5eab3521d8e092d18320902466ba"}, + {file = "virtualenv-21.1.0-py3-none-any.whl", hash = "sha256:164f5e14c5587d170cf98e60378eb91ea35bf037be313811905d3a24ea33cc07"}, + {file = "virtualenv-21.1.0.tar.gz", hash = "sha256:1990a0188c8f16b6b9cf65c9183049007375b26aad415514d377ccacf1e4fb44"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = [ - {version = ">=3.16.1,<4", markers = "python_version < \"3.10\""}, - {version = ">=3.20.1,<4", markers = "python_version >= \"3.10\""}, + {version = ">=3.24.2,<4", markers = "python_version >= \"3.10\""}, + {version = ">=3.16.1,<=3.19.1", markers = "python_version < \"3.10\""}, ] platformdirs = ">=3.9.1,<5" +python-discovery = ">=1" typing-extensions = {version = ">=4.13.2", markers = "python_version < \"3.11\""} -[package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] -test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8) ; platform_python_implementation == \"PyPy\" or platform_python_implementation == \"GraalVM\" or platform_python_implementation == \"CPython\" and sys_platform == \"win32\" and python_version >= \"3.13\"", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10) ; platform_python_implementation == \"CPython\""] - [metadata] lock-version = "2.1" python-versions = "^3.9" diff --git a/pyproject.toml b/pyproject.toml index f95e0dd..a7a9a71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "flamesdk" -version = "0.4.0" +version = "0.4.2" description = "" authors = ["Alexander Röhl ", "David Hieber "] readme = "README.md" From 8564f42c2fb8cf9da84b382c7cc591bf82df67b8 Mon Sep 17 00:00:00 2001 From: Nightknight3000 Date: Tue, 3 Mar 2026 13:44:41 +0100 Subject: [PATCH 4/4] feat: enable progress forwarding Co-authored-by: antidodo --- flamesdk/resources/client_apis/clients/po_client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flamesdk/resources/client_apis/clients/po_client.py b/flamesdk/resources/client_apis/clients/po_client.py index 5f00b1d..90db090 100644 --- a/flamesdk/resources/client_apis/clients/po_client.py +++ b/flamesdk/resources/client_apis/clients/po_client.py @@ -24,7 +24,7 @@ def stream_logs(self, log: str, log_type: str, analysis_id: str, status: str, pr "log_type": log_type, "analysis_id": analysis_id, "status": status, - #"progress": progress #TODO: Uncomment this! + "progress": progress } response = self.client.post("/stream_logs", json=log_dict,