Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions .github/workflows/generator.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,22 @@ env:
jobs:
Build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["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/
9 changes: 8 additions & 1 deletion .github/workflows/py.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,26 @@ env:
jobs:
Build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["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/
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/cpp.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/dot.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/flatdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/generators/rust.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/tree/builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/tree/nodes/archive.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from .node import Node

class Reference(Node):
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations


from abc import ABC, abstractmethod

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
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
from .base import ResourceBase

from typing import Any
from typing import Any, Dict

from pyparsing import ParseResults

Expand Down Expand Up @@ -42,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"})})]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from flatdata.generator.tree.nodes.node import Node
from .base import ResourceBase

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from flatdata.generator.tree.nodes.node import Node

from pyparsing import ParseResults
Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from flatdata.generator.tree.nodes.node import Node
from .field import Field

Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/tree/resolver.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from collections.abc import Iterable

import flatdata.generator.tree.nodes.references as refs
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/flatdata/generator/tree/traversal.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from abc import ABCMeta, abstractmethod

from collections import deque
Expand Down
2 changes: 1 addition & 1 deletion flatdata-generator/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.8"
authors = [
{ name = "Flatdata Developers" },
]
Expand Down
2 changes: 2 additions & 0 deletions flatdata-generator/tests/tree/test_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
7 changes: 5 additions & 2 deletions flatdata-py/flatdata/lib/data_access.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down Expand Up @@ -123,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

Expand Down
2 changes: 2 additions & 0 deletions flatdata-py/flatdata/lib/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
See the LICENSE file in the root of this project for license details.
"""

from __future__ import annotations

import difflib


Expand Down
2 changes: 2 additions & 0 deletions flatdata-py/flatdata/lib/file_resource_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 2 additions & 0 deletions flatdata-py/flatdata/lib/inspector.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions flatdata-py/flatdata/lib/structure.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

from collections import namedtuple
from collections.abc import Callable, Iterator
import json
Expand Down
2 changes: 1 addition & 1 deletion flatdata-py/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.8"
authors = [
{ name = "Flatdata Developers" },
]
Expand Down
Loading