added functionality for CLI app

This commit is contained in:
Florian Förster 2025-12-17 16:32:54 +01:00
parent 3598519a78
commit 156f967a64
5 changed files with 1480 additions and 1155 deletions

File diff suppressed because one or more lines are too long

View File

@ -12,6 +12,7 @@ class PyBlock:
def __init__(self) -> None: ...
def __repr__(self) -> str: ...
def __str__(self) -> str: ...
def as_dataclass(self) -> t.PyBlockData: ...
def serialize_dict(self) -> t.SerializedPyBlock: ...
@property
def index(self) -> int: ...

View File

@ -11,6 +11,7 @@ import dopt_basics.datetime
import sqlalchemy as sql
from dopt_pollublock_blockchain import db
from dopt_pollublock_blockchain import types
from dopt_pollublock_blockchain.block cimport Block
from libcpp.unordered_map cimport unordered_map
@ -135,13 +136,23 @@ cdef class PyBlock:
def __repr__(self):
return (
f"PyBlock(\n\tIndex:\t\t{self.index}\n\ttimestamp:\t{self.timestamp}\n\tnonce:\t\t{self.nonce}\n\t"
f"PyBlock(\n\tIndex:\t\t{self.index}\n\tTimestamp:\t{self.timestamp}\n\tNonce:\t\t{self.nonce}\n\t"
f"Prev Hash:\t{self.prev_hash}\n\tHash:\t\t{self.hash}\n\tData:\t\t{self.data}\n)"
)
def __str__(self):
return self.__repr__()
def as_dataclass(self):
return types.PyBlockData(
Index=self.index,
Timestamp=self.timestamp,
Nonce=self.nonce,
PrevHash=self.prev_hash,
Hash=self.hash,
Data=self.data,
)
def serialize_dict(self):
contents = {}

View File

@ -1,5 +1,19 @@
from __future__ import annotations
import random
from typing import Final
# ** blockchain
BLOCKCHAIN_LOADING_BATCH_SIZE: Final[int] = 256
BLOCKCHAIN_DIFFICULTY: Final[int] = 24
# ** data sampling
RNG_SEED_RANGE: Final[frozenset[str]] = frozenset(str(seed) for seed in range(1, 101))
RNG_DEFAULT_SEED: Final[int | None] = 42
RNG: Final[random.Random] = random.Random(RNG_DEFAULT_SEED)
TEMPERATURE_MEAN: Final[float] = 344.224456
TEMPERATURE_STD: Final[float] = 46.478794
PRESSURE_MIN: Final[int] = 15587
PRESSURE_MAX: Final[int] = 15602
AIRQTY_MEAN: Final[float] = -22.958655
AIRQTY_STD: Final[float] = 2.101152

View File

@ -1,8 +1,28 @@
from __future__ import annotations
import dataclasses as dc
import datetime
import enum
from typing import TypeAlias, TypedDict
BlockIndex: TypeAlias = int
class ApplicationScenarios(enum.IntEnum):
DATA_VALIDATION = 1
DATA_GENERATION = 2
@dc.dataclass(slots=True, kw_only=True, eq=False)
class PyBlockData:
Index: int
Timestamp: datetime.datetime
Nonce: int
PrevHash: str
Hash: str
Data: str
class SerializedPyBlock(TypedDict):
index: int
timestamp: int
@ -10,3 +30,15 @@ class SerializedPyBlock(TypedDict):
previous_hash: str
hash: str
data: str
RandomSampleEntry = TypedDict(
"RandomSampleEntry",
{
"Datetime": datetime.datetime,
"Temperature_(Celsius)": float,
"Pressure_(Pa)": int,
"Air_Quantity_(Percent)": float,
"Blockchain_Block_Number": int | None,
},
)