Typing

These types and helper functions available in pf.typing can be used to annotate Parametric Components and Models to improve documentation by adding metaddata with constraints, units, etc.

photonforge.typing.PositiveInt

alias of Annotated[int, exclusiveMinimum=0]

photonforge.typing.NonNegativeInt

alias of Annotated[int, minimum=0]

photonforge.typing.NegativeInt

alias of Annotated[int, exclusiveMaximum=0]

photonforge.typing.NonPositiveInt

alias of Annotated[int, maximum=0]

photonforge.typing.PositiveFloat

alias of Annotated[float, exclusiveMinimum=0]

photonforge.typing.NonNegativeFloat

alias of Annotated[float, minimum=0]

photonforge.typing.NegativeFloat

alias of Annotated[float, exclusiveMaximum=0]

photonforge.typing.NonPositiveFloat

alias of Annotated[float, maximum=0]

photonforge.typing.Fraction

alias of Annotated[float, maximum=1, minimum=0]

photonforge.typing.Coordinate

alias of Annotated[float, units=’μm’]

photonforge.typing.Dimension

alias of Annotated[float, minimum=0, units=’μm’]

photonforge.typing.PositiveDimension

alias of Annotated[float, exclusiveMinimum=0, units=’μm’]

photonforge.typing.Coordinate2D

alias of Annotated[Sequence[Annotated[float, units=’μm’]], maxItems=2, minItems=2]

photonforge.typing.Dimension2D

alias of Annotated[Sequence[Annotated[float, minimum=0, units=’μm’]], maxItems=2, minItems=2]

photonforge.typing.PositiveDimension2D

alias of Annotated[Sequence[Annotated[float, exclusiveMinimum=0, units=’μm’]], maxItems=2, minItems=2]

photonforge.typing.Angle

alias of Annotated[float, units=’°’]

photonforge.typing.Frequency

alias of Annotated[float, minimum=0, units=’Hz’]

photonforge.typing.Time

alias of Annotated[float, units=’s’]

photonforge.typing.TimeDelay

alias of Annotated[float, minimum=0, units=’s’]

photonforge.typing.Velocity

alias of Annotated[float, exclusiveMinimum=0, units=’μm/s’]

photonforge.typing.Temperature

alias of Annotated[float, minimum=0, units=’K’]

photonforge.typing.Voltage

alias of Annotated[float, units=’V’]

photonforge.typing.Impedance

alias of Annotated[complex, units=’Ω’]

photonforge.typing.Resistance

alias of Annotated[float, exclusiveMinimum=0, units=’Ω’]

photonforge.typing.Inductance

alias of Annotated[float, minimum=0, units=’H’]

photonforge.typing.Capacitance

alias of Annotated[float, exclusiveMinimum=0, units=’F’]

photonforge.typing.Power

alias of Annotated[float, minimum=0, units=’W’]

photonforge.typing.Power_dBm

alias of Annotated[float, units=’dBm’]

photonforge.typing.FieldAmplitude

alias of Annotated[float, units=’√W’]

photonforge.typing.ComplexFieldAmplitude

alias of Annotated[complex, units=’√W’]

photonforge.typing.Gain

alias of Annotated[float, units=’dB’]

photonforge.typing.Loss

alias of Annotated[float, minimum=0, units=’dB’]

photonforge.typing.PropagationLoss

alias of Annotated[float, minimum=0, units=’dB/μm’]

photonforge.typing.Dispersion

alias of Annotated[float, units=’s/μm²’]

photonforge.typing.DispersionSlope

alias of Annotated[float, units=’s/μm³’]

photonforge.typing.Layer

alias of Annotated[str | tuple[int, int], _]

photonforge.typing.Medium

alias of Annotated[Medium | AnisotropicMedium | PECMedium | PMCMedium | PoleResidue | Sellmeier | Lorentz | Debye | Drude | FullyAnisotropicMedium | CustomMedium | CustomPoleResidue | CustomSellmeier | CustomLorentz | CustomDebye | CustomDrude | CustomAnisotropicMedium | PerturbationMedium | PerturbationPoleResidue | LossyMetalMedium, _]

Helper functions

annotate(field, **kwargs)

Annotate a type with metadata.

kwargs_for(fn_or_cls, **annotations)

Type that represents keyword arguments for a function or class.

array(dtype, ndims[, ndims_max])

Type for arrays with specified number of dimensions.

expression(num_variables, min_expressions)

Type for Expression with a minimal number of values.