Hyperiso
1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
SymbolId.py
Go to the documentation of this file.
1
"""Symbolic identifiers used by dynamic mappers and registries."""
2
3
from
dataclasses
import
dataclass
4
from
pyhyperiso.phyperiso.pyhyperiso.common
import
_CppObservableId
5
from
pyhyperiso.phyperiso.pyhyperiso.common
import
_CppDecayId
6
from
pyhyperiso.phyperiso.pyhyperiso.common
import
_CppWGroupId
7
from
pyhyperiso.phyperiso.pyhyperiso.common
import
_CppWCoefId
8
9
10
@dataclass(frozen=True)
11
class
_SymbolId
:
12
"""Small Python wrapper around Hyperiso's dynamic symbol identifiers.
13
14
Dynamic identifiers are string-backed, strongly typed C++ ids. They allow
15
runtime observables, decays, Wilson groups and Wilson coefficients to live
16
next to the legacy static enums without forcing a conversion back to an enum.
17
"""
18
19
_name: str
20
_cpp_type =
None
21
22
def
__str__
(self) -> str:
23
return
self.
_name
_name
24
25
@property
26
def
name
(self) -> str:
27
"""Canonical name stored by the C++ id."""
28
return
self.
_name
_name
29
30
def
_to_cpp
(self):
31
"""Return the bound C++ id object."""
32
return
self.
_cpp_type
(self.
_name
_name
)
33
34
def
to_cpp
(self):
35
"""Public alias for :meth:`_to_cpp`."""
36
return
self.
_to_cpp
()
37
38
39
class
ObservableId
(
_SymbolId
):
40
"""Dynamic id for builtin or runtime observables."""
41
42
_cpp_type = _CppObservableId
43
44
45
class
DecayId
(
_SymbolId
):
46
"""Dynamic id for builtin or runtime decays."""
47
48
_cpp_type = _CppDecayId
49
50
51
class
WGroupId
(
_SymbolId
):
52
"""Dynamic id for builtin or runtime Wilson groups."""
53
54
_cpp_type = _CppWGroupId
55
56
57
class
WCoefId
(
_SymbolId
):
58
"""Dynamic id for builtin or runtime Wilson coefficients."""
59
60
_cpp_type = _CppWCoefId
61
62
63
def
_unwrap_optional(x, what="value"):
64
if
x
is
None
:
65
raise
KeyError(f
"{what} not found"
)
66
return
x
pyhyperiso.core.Common.SymbolId.DecayId
Definition
SymbolId.py:45
pyhyperiso.core.Common.SymbolId.ObservableId
Definition
SymbolId.py:39
pyhyperiso.core.Common.SymbolId.WCoefId
Definition
SymbolId.py:57
pyhyperiso.core.Common.SymbolId.WGroupId
Definition
SymbolId.py:51
pyhyperiso.core.Common.SymbolId._SymbolId
Definition
SymbolId.py:11
pyhyperiso.core.Common.SymbolId._SymbolId._cpp_type
_cpp_type
Definition
SymbolId.py:20
pyhyperiso.core.Common.SymbolId._SymbolId.to_cpp
to_cpp(self)
Definition
SymbolId.py:34
pyhyperiso.core.Common.SymbolId._SymbolId.__str__
str __str__(self)
Definition
SymbolId.py:22
pyhyperiso.core.Common.SymbolId._SymbolId.name
str name(self)
Definition
SymbolId.py:26
pyhyperiso.core.Common.SymbolId._SymbolId._name
_name
Definition
SymbolId.py:32
pyhyperiso.core.Common.SymbolId._SymbolId._name
str _name
Definition
SymbolId.py:19
pyhyperiso.core.Common.SymbolId._SymbolId._to_cpp
_to_cpp(self)
Definition
SymbolId.py:30
Hyperiso
pyhyperiso
core
Common
SymbolId.py
Generated by
1.9.8