dataspecs.extras.naming module#

class Name(_name: ~typing.Annotated[~collections.abc.Hashable, <NameTag.NAME: 1>])[source]#

Bases: object

Annotation for namer specs.

Parameters:

_name (Annotated[Hashable, <NameTag.NAME: 1>]) – New name of the data spec to be replaced.

name(specs: Specs[TSpec], /, leave: bool = False) Specs[TSpec][source]#

Replace data spec names by corresponding namer specs.

Parameters:
  • specs (Specs[TSpec]) – Input data specs.

  • leave (bool) – Whether to leave the namer specs.

Returns:

Data specs whose names are replaced.

Return type:

Specs[TSpec]

Examples

from dataclasses import dataclass
from dataspecs import Name, name, from_dataclass
from typing import Annotated as Ann

@dataclass
class Weather:
    temp: Ann[float, Name("Ground temperature")]
    humid: Ann[float, Name("Relative humidity")]

name(from_dataclass(Weather(20.0, 50.0)))
Specs([
    Spec(
        path=Path('/temp'),
        name='Ground temperature', # <- named
        tags=(),
        type=<class 'float'>,
        data=20.0,
    ),
    Spec(
        path=Path('/humid'), # <- named
        name='Relative humidity',
        tags=(),
        type=<class 'float'>,
        data=50.0,
    ),
])