Source code for pycalphad.property_framework.types
from dataclasses import dataclass
from pint._typing import UnitLike
import numpy.typing as npt
from typing import Any, Dict, List, Optional, Tuple
try:
from typing import Protocol, runtime_checkable
except ImportError:
from typing_extensions import Protocol, runtime_checkable
from pycalphad.core.composition_set import CompositionSet
[docs]
@dataclass
class JanssonDerivativeDeltas:
delta_chemical_potentials: Optional[Any]
delta_statevars: Optional[Any]
delta_parameters: Optional[Any]
delta_phase_amounts: Optional[Any]
delta_sitefracs: Optional[Any]
[docs]
@runtime_checkable
class ComputableProperty(Protocol):
implementation_units: UnitLike
display_units: UnitLike
[docs]
def compute_property(self, compsets: List[CompositionSet], cur_conds: Dict[str, float], chemical_potentials: npt.ArrayLike) -> npt.ArrayLike:
...
@property
def shape(self) -> Tuple[int]:
...
[docs]
@runtime_checkable
class DifferentiableComputableProperty(ComputableProperty, Protocol):
"Can be in the numerator of a Jansson derivative"
[docs]
def jansson_derivative(self, compsets: List[CompositionSet], cur_conds: Dict[str, float], chemical_potentials: npt.ArrayLike,
deltas: JanssonDerivativeDeltas) -> npt.ArrayLike:
...
[docs]
@runtime_checkable
class ConditionableComputableProperty(ComputableProperty, Protocol):
"Can be in the denominator of a Jansson derivative"
[docs]
def jansson_deltas(self, spec, state) -> JanssonDerivativeDeltas:
...