From c260fef8ededd9d42e230f6d58fd6a7b62d76ed1 Mon Sep 17 00:00:00 2001 From: Christian Vetter Date: Tue, 26 May 2026 09:33:08 +0200 Subject: [PATCH 1/5] Support Python 3.7 Signed-off-by: Christian Vetter --- .github/workflows/generator.yml | 13 +++++++++---- .github/workflows/py.yml | 9 ++++++++- flatdata-generator/flatdata/generator/engine.py | 2 ++ .../flatdata/generator/generators/__init__.py | 2 ++ .../flatdata/generator/generators/cpp.py | 2 ++ .../flatdata/generator/generators/dot.py | 2 ++ .../flatdata/generator/generators/flatdata.py | 2 ++ .../flatdata/generator/generators/python.py | 2 ++ .../flatdata/generator/generators/rust.py | 2 ++ .../flatdata/generator/tree/builder.py | 2 ++ .../flatdata/generator/tree/helpers/basictype.py | 2 ++ .../flatdata/generator/tree/nodes/archive.py | 2 ++ .../generator/tree/nodes/explicit_reference.py | 2 ++ .../flatdata/generator/tree/nodes/references.py | 2 ++ .../generator/tree/nodes/resources/archive.py | 2 ++ .../flatdata/generator/tree/nodes/resources/base.py | 2 ++ .../tree/nodes/resources/bound_resource.py | 2 ++ .../generator/tree/nodes/resources/instance.py | 2 ++ .../generator/tree/nodes/resources/multivector.py | 2 ++ .../generator/tree/nodes/resources/rawdata.py | 2 ++ .../generator/tree/nodes/resources/vector.py | 2 ++ .../generator/tree/nodes/trivial/constant.py | 2 ++ .../generator/tree/nodes/trivial/enumeration.py | 2 ++ .../tree/nodes/trivial/enumeration_value.py | 2 ++ .../flatdata/generator/tree/nodes/trivial/field.py | 2 ++ .../generator/tree/nodes/trivial/namespace.py | 2 ++ .../generator/tree/nodes/trivial/structure.py | 2 ++ .../flatdata/generator/tree/resolver.py | 2 ++ .../flatdata/generator/tree/traversal.py | 2 ++ flatdata-generator/pyproject.toml | 2 +- flatdata-generator/tests/tree/test_importer.py | 2 ++ flatdata-py/flatdata/lib/errors.py | 2 ++ flatdata-py/flatdata/lib/file_resource_writer.py | 2 ++ flatdata-py/flatdata/lib/inspector.py | 2 ++ flatdata-py/flatdata/lib/structure.py | 2 ++ flatdata-py/pyproject.toml | 2 +- 36 files changed, 83 insertions(+), 7 deletions(-) diff --git a/.github/workflows/generator.yml b/.github/workflows/generator.yml index 51a39e8c..d238c14a 100644 --- a/.github/workflows/generator.yml +++ b/.github/workflows/generator.yml @@ -12,17 +12,22 @@ env: jobs: Build: runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + name: Build (Python ${{ matrix.python-version }}) steps: - uses: actions/checkout@v2 - name: Dependencies uses: astral-sh/setup-uv@v6 + - name: Install Python ${{ matrix.python-version }} + run: uv python install ${{ matrix.python-version }} - name: Run tests run: | cd flatdata-generator - uv run --with pytest pytest -v - pip install . - flatdata-generator --help + uv run --python ${{ matrix.python-version }} --with pytest pytest -v - name: Type check + if: contains(fromJSON('["3.10", "3.11", "3.12"]'), matrix.python-version) run: | cd flatdata-generator - uv run --with mypy mypy flatdata/ + uv run --python ${{ matrix.python-version }} --with mypy mypy flatdata/ diff --git a/.github/workflows/py.yml b/.github/workflows/py.yml index 0303cbaa..b26d97d6 100644 --- a/.github/workflows/py.yml +++ b/.github/workflows/py.yml @@ -12,19 +12,26 @@ env: jobs: Build: runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + name: Build (Python ${{ matrix.python-version }}) steps: - uses: actions/checkout@v2 - name: Dependencies uses: astral-sh/setup-uv@v6 + - name: Install Python ${{ matrix.python-version }} + run: uv python install ${{ matrix.python-version }} - name: Run tests run: | cd flatdata-py - uv venv + uv venv --python ${{ matrix.python-version }} uv pip install ../flatdata-generator uv pip install ".[inspector]" pytest mypy .venv/bin/pytest -v .venv/bin/flatdata-inspector --help - name: Type check + if: contains(fromJSON('["3.10", "3.11", "3.12"]'), matrix.python-version) run: | cd flatdata-py .venv/bin/mypy flatdata/ diff --git a/flatdata-generator/flatdata/generator/engine.py b/flatdata-generator/flatdata/generator/engine.py index fdac6acb..78c777d9 100644 --- a/flatdata-generator/flatdata/generator/engine.py +++ b/flatdata-generator/flatdata/generator/engine.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import types from typing import overload diff --git a/flatdata-generator/flatdata/generator/generators/__init__.py b/flatdata-generator/flatdata/generator/generators/__init__.py index 6ea11ef2..67bbaf9f 100644 --- a/flatdata-generator/flatdata/generator/generators/__init__.py +++ b/flatdata-generator/flatdata/generator/generators/__init__.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + from abc import ABCMeta, abstractmethod from typing import NoReturn diff --git a/flatdata-generator/flatdata/generator/generators/cpp.py b/flatdata-generator/flatdata/generator/generators/cpp.py index ea41dcab..6219fa3d 100644 --- a/flatdata-generator/flatdata/generator/generators/cpp.py +++ b/flatdata-generator/flatdata/generator/generators/cpp.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import posixpath from jinja2 import Environment diff --git a/flatdata-generator/flatdata/generator/generators/dot.py b/flatdata-generator/flatdata/generator/generators/dot.py index a7ab00e1..681a1931 100644 --- a/flatdata-generator/flatdata/generator/generators/dot.py +++ b/flatdata-generator/flatdata/generator/generators/dot.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + from flatdata.generator.tree.nodes.archive import Archive from flatdata.generator.tree.nodes.trivial import Field from flatdata.generator.tree.syntax_tree import SyntaxTree diff --git a/flatdata-generator/flatdata/generator/generators/flatdata.py b/flatdata-generator/flatdata/generator/generators/flatdata.py index a089b2be..8852493c 100644 --- a/flatdata-generator/flatdata/generator/generators/flatdata.py +++ b/flatdata-generator/flatdata/generator/generators/flatdata.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + from jinja2 import Environment from flatdata.generator.tree.nodes.node import Node diff --git a/flatdata-generator/flatdata/generator/generators/python.py b/flatdata-generator/flatdata/generator/generators/python.py index f19e732e..554800f8 100644 --- a/flatdata-generator/flatdata/generator/generators/python.py +++ b/flatdata-generator/flatdata/generator/generators/python.py @@ -2,6 +2,8 @@ Copyright (c) 2017 HERE Europe B.V. See the LICENSE file in the root of this project for license details. ''' + +from __future__ import annotations from jinja2 import Environment from flatdata.generator.tree.nodes.resources import Instance, Vector, Multivector, RawData diff --git a/flatdata-generator/flatdata/generator/generators/rust.py b/flatdata-generator/flatdata/generator/generators/rust.py index 4088f181..e7326c60 100644 --- a/flatdata-generator/flatdata/generator/generators/rust.py +++ b/flatdata-generator/flatdata/generator/generators/rust.py @@ -2,6 +2,8 @@ Copyright (c) 2018 HERE Europe B.V. See the LICENSE file in the root of this project for license details. ''' + +from __future__ import annotations import posixpath import re diff --git a/flatdata-generator/flatdata/generator/tree/builder.py b/flatdata-generator/flatdata/generator/tree/builder.py index 12b23fe6..b319e201 100644 --- a/flatdata-generator/flatdata/generator/tree/builder.py +++ b/flatdata-generator/flatdata/generator/tree/builder.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import os from typing import Any diff --git a/flatdata-generator/flatdata/generator/tree/helpers/basictype.py b/flatdata-generator/flatdata/generator/tree/helpers/basictype.py index 646763ee..72063ec4 100644 --- a/flatdata-generator/flatdata/generator/tree/helpers/basictype.py +++ b/flatdata-generator/flatdata/generator/tree/helpers/basictype.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator import grammar from flatdata.generator.tree.errors import InvalidWidthError from flatdata.generator.tree.errors import InvalidSignError diff --git a/flatdata-generator/flatdata/generator/tree/nodes/archive.py b/flatdata-generator/flatdata/generator/tree/nodes/archive.py index 171718b5..8eb44639 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/archive.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/archive.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.errors import UnexpectedResourceType from flatdata.generator.tree.nodes.node import Node import flatdata.generator.tree.nodes.resources as resources diff --git a/flatdata-generator/flatdata/generator/tree/nodes/explicit_reference.py b/flatdata-generator/flatdata/generator/tree/nodes/explicit_reference.py index 480bd610..481f0f7b 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/explicit_reference.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/explicit_reference.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import ResourceReference, FieldReference, StructureReference diff --git a/flatdata-generator/flatdata/generator/tree/nodes/references.py b/flatdata-generator/flatdata/generator/tree/nodes/references.py index d7462042..cd5466a8 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/references.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/references.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from .node import Node class Reference(Node): diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/archive.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/archive.py index 9da6cb17..be57f2fc 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/archive.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/archive.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import ArchiveReference from .base import ResourceBase diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/base.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/base.py index b45475c4..4bbc9b41 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/base.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/base.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from abc import ABC, abstractmethod diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/bound_resource.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/bound_resource.py index 2267dcbd..472d39c0 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/bound_resource.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/bound_resource.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import BuiltinStructureReference, ResourceReference, StructureReference from .base import ResourceBase diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/instance.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/instance.py index 64b7cb0f..d3272850 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/instance.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/instance.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import StructureReference from .base import ResourceBase diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py index 7ad4afa7..dbcba545 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import StructureReference, BuiltinStructureReference from flatdata.generator.tree.nodes.trivial import Structure diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/rawdata.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/rawdata.py index b473de01..b14790ba 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/rawdata.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/rawdata.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from .base import ResourceBase diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/vector.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/vector.py index 09b79788..2b6827b8 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/vector.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/vector.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import StructureReference from .base import ResourceBase diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/constant.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/constant.py index 03a33192..868a504c 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/constant.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/constant.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.helpers.basictype import BasicType from flatdata.generator.tree.errors import InvalidConstantValueError diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration.py index 57da4ff8..b072bf1f 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.errors import DuplicateEnumValueError, InvalidEnumValueError, SparseEnumError from flatdata.generator.tree.helpers.basictype import BasicType from flatdata.generator.tree.nodes.node import Node diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration_value.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration_value.py index 7c99c779..399eb3fb 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration_value.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/enumeration_value.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from pyparsing import ParseResults diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/field.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/field.py index 5af85fcb..97d2be71 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/field.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/field.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from flatdata.generator.tree.nodes.references import EnumerationReference, ConstantValueReference, InvalidValueReference from flatdata.generator.tree.helpers.basictype import BasicType diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/namespace.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/namespace.py index 86eda200..ad416fd2 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/namespace.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/namespace.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + from pyparsing import ParseResults from flatdata.generator.tree.nodes.node import Node diff --git a/flatdata-generator/flatdata/generator/tree/nodes/trivial/structure.py b/flatdata-generator/flatdata/generator/tree/nodes/trivial/structure.py index a5588518..ed9d22b8 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/trivial/structure.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/trivial/structure.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from flatdata.generator.tree.nodes.node import Node from .field import Field diff --git a/flatdata-generator/flatdata/generator/tree/resolver.py b/flatdata-generator/flatdata/generator/tree/resolver.py index 9a9fe25f..adfe7d68 100644 --- a/flatdata-generator/flatdata/generator/tree/resolver.py +++ b/flatdata-generator/flatdata/generator/tree/resolver.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from collections.abc import Iterable import flatdata.generator.tree.nodes.references as refs diff --git a/flatdata-generator/flatdata/generator/tree/traversal.py b/flatdata-generator/flatdata/generator/tree/traversal.py index 4671ce20..ab6f6ea6 100644 --- a/flatdata-generator/flatdata/generator/tree/traversal.py +++ b/flatdata-generator/flatdata/generator/tree/traversal.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from abc import ABCMeta, abstractmethod from collections import deque diff --git a/flatdata-generator/pyproject.toml b/flatdata-generator/pyproject.toml index 9dae5185..87cf6d94 100644 --- a/flatdata-generator/pyproject.toml +++ b/flatdata-generator/pyproject.toml @@ -7,7 +7,7 @@ name = "flatdata-generator" version = "0.4.11" description = "Generate source code for C++, Rust, or Python from a Flatdata schema file" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.7" authors = [ { name = "Flatdata Developers" }, ] diff --git a/flatdata-generator/tests/tree/test_importer.py b/flatdata-generator/tests/tree/test_importer.py index 7382b76e..a9cb1969 100644 --- a/flatdata-generator/tests/tree/test_importer.py +++ b/flatdata-generator/tests/tree/test_importer.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import os import tempfile diff --git a/flatdata-py/flatdata/lib/errors.py b/flatdata-py/flatdata/lib/errors.py index 4284d2fb..989e214a 100644 --- a/flatdata-py/flatdata/lib/errors.py +++ b/flatdata-py/flatdata/lib/errors.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. """ +from __future__ import annotations + import difflib diff --git a/flatdata-py/flatdata/lib/file_resource_writer.py b/flatdata-py/flatdata/lib/file_resource_writer.py index 046aea19..eaf2ef86 100644 --- a/flatdata-py/flatdata/lib/file_resource_writer.py +++ b/flatdata-py/flatdata/lib/file_resource_writer.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import os from typing import IO diff --git a/flatdata-py/flatdata/lib/inspector.py b/flatdata-py/flatdata/lib/inspector.py index d1214cba..9348bc33 100755 --- a/flatdata-py/flatdata/lib/inspector.py +++ b/flatdata-py/flatdata/lib/inspector.py @@ -3,6 +3,8 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import argparse import fnmatch import os diff --git a/flatdata-py/flatdata/lib/structure.py b/flatdata-py/flatdata/lib/structure.py index c8bc7de3..d9d978ce 100644 --- a/flatdata-py/flatdata/lib/structure.py +++ b/flatdata-py/flatdata/lib/structure.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from collections import namedtuple from collections.abc import Callable, Iterator import json diff --git a/flatdata-py/pyproject.toml b/flatdata-py/pyproject.toml index 4e98206f..1508ac94 100644 --- a/flatdata-py/pyproject.toml +++ b/flatdata-py/pyproject.toml @@ -7,7 +7,7 @@ name = "flatdata-py" version = "0.4.11" description = "Python 3 implementation of Flatdata" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">=3.7" authors = [ { name = "Flatdata Developers" }, ] From 7e3e75cdd781fbe01b59cc8d07a2e7a3e73d06d8 Mon Sep 17 00:00:00 2001 From: Christian Vetter Date: Tue, 26 May 2026 09:36:33 +0200 Subject: [PATCH 2/5] Drop 3.7 Signed-off-by: Christian Vetter --- .github/workflows/generator.yml | 2 +- .github/workflows/py.yml | 2 +- flatdata-generator/pyproject.toml | 2 +- flatdata-py/pyproject.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/generator.yml b/.github/workflows/generator.yml index d238c14a..74b20e1a 100644 --- a/.github/workflows/generator.yml +++ b/.github/workflows/generator.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] name: Build (Python ${{ matrix.python-version }}) steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/py.yml b/.github/workflows/py.yml index b26d97d6..aafae22e 100644 --- a/.github/workflows/py.yml +++ b/.github/workflows/py.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] name: Build (Python ${{ matrix.python-version }}) steps: - uses: actions/checkout@v2 diff --git a/flatdata-generator/pyproject.toml b/flatdata-generator/pyproject.toml index 87cf6d94..dc89a370 100644 --- a/flatdata-generator/pyproject.toml +++ b/flatdata-generator/pyproject.toml @@ -7,7 +7,7 @@ name = "flatdata-generator" version = "0.4.11" description = "Generate source code for C++, Rust, or Python from a Flatdata schema file" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.8" authors = [ { name = "Flatdata Developers" }, ] diff --git a/flatdata-py/pyproject.toml b/flatdata-py/pyproject.toml index 1508ac94..01fa3be9 100644 --- a/flatdata-py/pyproject.toml +++ b/flatdata-py/pyproject.toml @@ -7,7 +7,7 @@ name = "flatdata-py" version = "0.4.11" description = "Python 3 implementation of Flatdata" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.8" authors = [ { name = "Flatdata Developers" }, ] From 88b19a69aed2355d4acb0d677ef51c97fc00757a Mon Sep 17 00:00:00 2001 From: Christian Vetter Date: Tue, 26 May 2026 09:41:15 +0200 Subject: [PATCH 3/5] Fix build Signed-off-by: Christian Vetter --- .../flatdata/generator/tree/nodes/resources/multivector.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py b/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py index dbcba545..84d46acc 100644 --- a/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py +++ b/flatdata-generator/flatdata/generator/tree/nodes/resources/multivector.py @@ -5,7 +5,7 @@ from flatdata.generator.tree.nodes.trivial import Structure from .base import ResourceBase -from typing import Any +from typing import Any, Dict from pyparsing import ParseResults @@ -44,7 +44,7 @@ def index_reference(self) -> BuiltinStructureReference: @property def builtins(self) -> list[Structure]: - class MemberDict(dict[str, Any]): + class MemberDict(Dict[str, Any]): def __getattr__(self, attr: str) -> Any: return self.get(attr) decorations = [MemberDict({"range" : MemberDict({"name":"range"})})] From d9de7817608f6cb3121add04bfbdf226d0f52007 Mon Sep 17 00:00:00 2001 From: Christian Vetter Date: Tue, 26 May 2026 09:46:37 +0200 Subject: [PATCH 4/5] Fix build Signed-off-by: Christian Vetter --- flatdata-py/flatdata/lib/data_access.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/flatdata-py/flatdata/lib/data_access.py b/flatdata-py/flatdata/lib/data_access.py index b369e122..4d448d04 100644 --- a/flatdata-py/flatdata/lib/data_access.py +++ b/flatdata-py/flatdata/lib/data_access.py @@ -3,13 +3,16 @@ See the LICENSE file in the root of this project for license details. ''' +from __future__ import annotations + import mmap from collections.abc import Callable +from typing import Union import numpy as np from numpy.typing import NDArray -ReadableBuffer = bytes | bytearray | memoryview | mmap.mmap +ReadableBuffer = Union[bytes, bytearray, memoryview, mmap.mmap] # Sign bits cache for the value reading. _SIGN_BITS = [0] + [(1 << (bits - 1)) for bits in range(1, 65)] From 65769d871aeb6964d650d6e288b3aa264ce959d3 Mon Sep 17 00:00:00 2001 From: Christian Vetter Date: Tue, 26 May 2026 09:54:47 +0200 Subject: [PATCH 5/5] Fix build Signed-off-by: Christian Vetter --- flatdata-py/flatdata/lib/data_access.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flatdata-py/flatdata/lib/data_access.py b/flatdata-py/flatdata/lib/data_access.py index 4d448d04..f60d1133 100644 --- a/flatdata-py/flatdata/lib/data_access.py +++ b/flatdata-py/flatdata/lib/data_access.py @@ -126,7 +126,7 @@ def read_field_vectorized(raw_bytes_2d: NDArray[np.uint8], field_offset_bits: in sign_bit = np.uint64(1 << (field_width_bits - 1)) offset = -(1 << field_width_bits) signed = result.astype(np.int64) + np.int64(offset) - result = np.where(result & sign_bit, signed, result.astype(np.int64)) + result = np.where(result & sign_bit, signed, result.astype(np.int64)) # type: ignore[assignment, unused-ignore] return result