finam.Adapter#
- class finam.Adapter[source]#
Bases:
IAdapter,Input,Output,ABCAbstract adapter implementation.
Extend this class for adapters. See Writing adapters.
Simple derived classes overwrite
_get_data().Adapters that alter the metadata can intercept it in
_get_info()For time-dependent adapters with push-functionality, also overwrite the following:
- Attributes:
has_sourceFlag if this input instance has a source.
has_targetsFlag if this output instance has any targets.
in_infoInfo from connected source.
infoInfo: The input’s data info.
is_staticWhether the input is static
loggerLogger for this component.
logger_nameLogger name derived from source logger name and class name.
memory_limitThe memory limit for this slot
memory_locationThe memory-mapping location for this slot
metadataThe adapter’s metadata.
nameInput name.
needs_pullbool: if the adapter needs pull.
needs_pushbool: if the adapter needs push.
sourceGet the input’s source output or adapter
targetsGet target inputs and adapters for this output.
timeThe output’s time of the latest available data
uses_base_logger_nameWhether this class has a
base_logger_nameattribute.
Methods
add_target(target)Add a target input or adapter for this output.
chain(other)Chain outputs and adapters.
exchange_info([info])Exchange the data info with the input's source.
finalize()Called at the end of each run.
get_data(time, target)Get the transformed data of this adapter.
get_info(info)Exchange and get the output's data info.
has_info()Returns if the output has a data info.
notify_targets(time)Notify all targets by calling their
source_updated(time)method.ping()Pings upstream to inform outputs about the number of connected inputs.
pinged(source)Called when receiving a ping from a downstream input.
pull_data(time[, target])Retrieve the data from the input's source.
push_data(data, time)Push data into the output.
push_info(info)Push data info into the output.
source_updated(time)Informs the input that a new output is available.
with_name(name)Renames the adapter and returns self.
- property time#
The output’s time of the latest available data
- property is_static#
Whether the input is static
- property in_info#
Info from connected source.
- property metadata#
The adapter’s metadata. Will only be called after the connect phase from
Composition.metadata.Adapters can overwrite this property to add their own specific metadata:
import finam as fm class MyAdapter(fm.Adapter): @property def metadata(self): # Get the default metadata md = super().metadata # Add your own metadata md["my_field"] = "some value" # Return the dictionary return md
- Returns:
- A
dictwith the following default metadata: name- the component’s nameclass- the component’s class
- A
- Return type:
- final push_data(data, time)[source]#
Push data into the output.
Should notify targets, and can handle the provided date.
- Parameters:
data (array_like) – Data set to push.
time (
datetime) – Simulation time of the data set.
- final source_updated(time)[source]#
Informs the input that a new output is available.
- Parameters:
time (
datetime) – Simulation time of the notification.
- notify_targets(time)[source]#
Notify all targets by calling their
source_updated(time)method.- Parameters:
time (
datetime) – Simulation time of the simulation.
- _source_updated(time)[source]#
Informs the input that a new output is available.
Adapters can overwrite this method to handle incoming data.
Adapters that make use of this method to accumulate data should also overwrite
needs_pushto returnTrue.- Parameters:
time (
datetime) – Simulation time of the notification.
- get_data(time, target)[source]#
Get the transformed data of this adapter.
Internally calls
_get_data().- Parameters:
- Returns:
Transformed data-set for the requested time.
- Return type:
- _get_data(time, target)[source]#
Get the transformed data of this adapter.
Adapters must overwrite this method.
- Parameters:
- Returns:
Transformed data-set for the requested time.
- Return type:
- get_info(info)[source]#
Exchange and get the output’s data info.
- Parameters:
info (
Info) – Requested data info- Returns:
Delivered data info
- Return type:
- Raises:
FinamNoDataError – Raises the error if no info is available
- _get_info(info)[source]#
Exchange and get the output’s data info.
Adapters can overwrite this method to manipulate the metadata for the output.
- property source#
Get the input’s source output or adapter
- Returns:
The input’s source.
- Return type:
- property logger_name#
Logger name derived from source logger name and class name.
- finalize()[source]#
Called at the end of each run. Calls
_finalize().
- add_target(target)#
Add a target input or adapter for this output.
- Parameters:
target (
IInput) – The target to add.
- chain(other)#
Chain outputs and adapters.
- has_info()#
Returns if the output has a data info.
The info is not required to be validly exchanged.
- property has_source#
Flag if this input instance has a source.
- property has_targets#
Flag if this output instance has any targets.
- property logger#
Logger for this component.
- property memory_limit#
The memory limit for this slot
- property memory_location#
The memory-mapping location for this slot
- property name#
Input name.
- ping()#
Pings upstream to inform outputs about the number of connected inputs.
Must be called after linking and before the connect phase.
- pull_data(time, target=None)#
Retrieve the data from the input’s source.
- Parameters:
time (
datetime) – Simulation time to get the data for.target (
IInputor None) – Requesting end point of this pull. Should beNonefor normal input pulls in components. Simple adapters should forward the source inAdapter._get_data(). Push-based adapters should useselfinAdapter._source_updated().
- Returns:
Data set for the given simulation time.
- Return type:
- property targets#
Get target inputs and adapters for this output.
- Returns:
List of targets.
- Return type:
- property uses_base_logger_name#
Whether this class has a
base_logger_nameattribute. True.