Persistence¶
- class BarDataWrangler¶
Bases:
object- bar_type¶
- price_precision¶
- process_record_batch_bytes(data)¶
- size_precision¶
- class DataBackendSession¶
Bases:
objectProvides a DataFusion session and registers DataFusion queries.
The session is used to register data sources and make queries on them. A query returns a Chunk of Arrow records. It is decoded and converted into a Vec of data by types that implement [DecodeDataFromRecordBatch].
- add_custom_file(type_name, table_name, file_path, sql_query=None)¶
Registers a Parquet file for a custom data type identified by type_name.
The custom data type must have been registered via ensure_custom_data_registered::<T>() before calling this method.
- add_file(data_type, table_name, file_path, sql_query=None)¶
Registers a Parquet file and adds a batch stream for decoding.
The caller must specify T to indicate the kind of data expected. table_name is the logical name for queries; file_path is the Parquet path; sql_query defaults to SELECT * FROM {table_name} ORDER BY ts_init if None.
When custom_type_name is Some, it is merged into each batch’s schema metadata before decoding (as type_name). Use this for custom data when Parquet/DataFusion does not preserve schema metadata so the decoder can look up the type in the registry.
The file data must be ordered by the ts_init in ascending order for this to work correctly.
# Errors
Returns an error if parquet registration, SQL planning, stream execution, or data decoding setup fails.
- register_object_store_from_uri(uri, storage_options=None)¶
Register an object store with the session context from a URI with optional storage options.
# Errors
Returns an error if the object store URI cannot be normalized or the backend cannot be created.
- to_query_result()¶
- class DataQueryResult¶
Bases:
object- to_list()¶
Collects the remaining query records as native Python objects.
# Errors
Returns an error if a query stream fails or a record batch cannot be decoded.
- class MacroYieldCurveData¶
Bases:
objectYieldCurveData-equivalent custom data type using the macro with Vec<f64> fields.
Tests Vec<f64> / ListFloat64 support. Exposed to Python for roundtrip tests.
- curve_name¶
- classmethod decode_record_batch_py(metadata, py_batch)¶
Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).
- encode_record_batch_py(items)¶
Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.
- classmethod from_json(data)¶
Class method for JSON deserialization. Used by register_custom_data_class.
- interest_rates¶
- tenors¶
- to_json()¶
Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.
- ts_event¶
- ts_init¶
- class NautilusDataType¶
Bases:
object- Bar = NautilusDataType.Bar¶
- InstrumentStatus = NautilusDataType.InstrumentStatus¶
- MarkPriceUpdate = NautilusDataType.MarkPriceUpdate¶
- OptionGreeks = NautilusDataType.OptionGreeks¶
- OrderBookDelta = NautilusDataType.OrderBookDelta¶
- OrderBookDepth10 = NautilusDataType.OrderBookDepth10¶
- QuoteTick = NautilusDataType.QuoteTick¶
- TradeTick = NautilusDataType.TradeTick¶
- class OrderBookDeltaDataWrangler¶
Bases:
object- instrument_id¶
- price_precision¶
- process_record_batch_bytes(data)¶
- size_precision¶
- class OrderBookDepth10DataWrangler¶
Bases:
object- instrument_id¶
- price_precision¶
- process_record_batch_bytes(data)¶
- size_precision¶
- class ParquetDataCatalog¶
Bases:
objectA catalog for writing data to Parquet files.
- consolidate_catalog(start=None, end=None, ensure_contiguous_files=None, deduplicate=None)¶
Consolidate all data files in the catalog within the specified time range.
# Parameters
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
ensure_contiguous_files: Optional flag to ensure files are contiguous
deduplicate: Optional flag to deduplicate rows when combining files
- consolidate_catalog_by_period(period_nanos=None, start=None, end=None, ensure_contiguous_files=None)¶
Consolidate all data files in the catalog by splitting them into fixed time periods.
This method identifies all leaf directories in the catalog that contain parquet files and consolidates them by period. A leaf directory is one that contains files but no subdirectories. This is a convenience method that effectively calls consolidate_data_by_period for all data types and instrument IDs in the catalog.
# Parameters
period_nanos: Optional period duration for consolidation in nanoseconds. Default is 1 day (86400000000000). Examples: 3600000000000 (1 hour), 604800000000000 (7 days), 1800000000000 (30 minutes)
start: Optional start timestamp for the consolidation range (nanoseconds since Unix epoch)
end: Optional end timestamp for the consolidation range (nanoseconds since Unix epoch)
ensure_contiguous_files: Optional flag to control file naming strategy
- consolidate_data(type_name, instrument_id=None, start=None, end=None, ensure_contiguous_files=None, deduplicate=None)¶
Consolidate data files for a specific data type within the specified time range.
# Parameters
type_name: The data type name to consolidate
instrument_id: Optional instrument ID filter
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
ensure_contiguous_files: Optional flag to ensure files are contiguous
deduplicate: Optional flag to deduplicate rows when combining files
- consolidate_data_by_period(type_name, identifier=None, period_nanos=None, start=None, end=None, ensure_contiguous_files=None)¶
Consolidate data files by splitting them into fixed time periods.
This method queries data by period and writes consolidated files immediately, using efficient period-based consolidation logic. When start/end boundaries intersect existing files, the function automatically splits those files to preserve all data.
# Parameters
type_name: The data type directory name (e.g., “quotes”, “trades”, “bars”)
identifier: Optional instrument ID to consolidate. If None, consolidates all instruments
period_nanos: Optional period duration for consolidation in nanoseconds. Default is 1 day (86400000000000). Examples: 3600000000000 (1 hour), 604800000000000 (7 days), 1800000000000 (30 minutes)
start: Optional start timestamp for consolidation range (nanoseconds since Unix epoch)
end: Optional end timestamp for consolidation range (nanoseconds since Unix epoch)
ensure_contiguous_files: Optional flag to control file naming strategy
- convert_stream_to_data(instance_id, data_cls, subdirectory=None, identifiers=None, use_ts_event_for_ts_init=False)¶
Convert stream data from feather files to parquet files.
This method reads data from feather files generated during a backtest or live run and writes it to the catalog in parquet format. It’s useful for converting temporary stream data into a more permanent and queryable format.
# Parameters
instance_id: The ID of the backtest or live run instance
data_cls: The data class name (e.g., “quotes”, “trades”, “bars”)
subdirectory: Optional subdirectory containing the feather files. Either “backtest” or “live” (default: “backtest”)
identifiers: Optional list of identifiers to filter by (instrument IDs or bar types)
use_ts_event_for_ts_init: If true, replaces the ts_init column with ts_event column values before deserializing
# Returns
Returns nothing on success.
# Examples
```python # Convert backtest stream data to parquet catalog.convert_stream_to_data(
“instance-123”, “quotes”, subdirectory=”backtest”
)
# Convert live run data with identifier filtering catalog.convert_stream_to_data(
“instance-456”, “trades”, subdirectory=”live”, identifiers=[“EUR/USD.SIM”]
)¶
- delete_catalog_range(start=None, end=None)¶
Delete data within a specified time range across the entire catalog.
This method identifies all leaf directories in the catalog that contain parquet files and deletes data within the specified time range from each directory. A leaf directory is one that contains files but no subdirectories. This is a convenience method that effectively calls delete_data_range for all data types and instrument IDs in the catalog.
# Parameters
start: Optional start timestamp for the deletion range (nanoseconds since Unix epoch)
end: Optional end timestamp for the deletion range (nanoseconds since Unix epoch)
# Notes
This operation permanently removes data and cannot be undone
The deletion process handles file intersections intelligently by splitting files when they partially overlap with the deletion range
Files completely within the deletion range are removed entirely
Files partially overlapping the deletion range are split to preserve data outside the range
This method is useful for bulk data cleanup operations across the entire catalog
Empty directories are not automatically removed after deletion
- delete_data_range(type_name, instrument_id=None, start=None, end=None)¶
Delete data within a specified time range for a specific data type and instrument.
This method identifies all parquet files that intersect with the specified time range and handles them appropriately: - Files completely within the range are deleted - Files partially overlapping the range are split to preserve data outside the range - The original intersecting files are removed after processing
# Parameters
type_name: The data type directory name (e.g., “quotes”, “trades”, “bars”)
instrument_id: Optional instrument ID to delete data for. If None, deletes data across all instruments
start: Optional start timestamp for the deletion range (nanoseconds since Unix epoch)
end: Optional end timestamp for the deletion range (nanoseconds since Unix epoch)
# Notes
This operation permanently removes data and cannot be undone
Files that partially overlap the deletion range are split to preserve data outside the range
The method ensures data integrity by using atomic operations where possible
Empty directories are not automatically removed after deletion
- extend_file_name(data_cls, instrument_id=None, *, start, end)¶
Extend file names in the catalog with additional timestamp information.
# Parameters
data_cls: The data class name
instrument_id: Optional instrument ID filter
start: Start timestamp (nanoseconds since Unix epoch)
end: End timestamp (nanoseconds since Unix epoch)
- get_intervals(data_cls, instrument_id=None)¶
Get time intervals covered by data for a specific data class and instrument.
# Parameters
data_cls: The data class name
instrument_id: Optional instrument ID filter
# Returns
Returns a list of (start, end) timestamp tuples representing covered intervals.
- get_missing_intervals_for_request(start, end, data_cls, instrument_id=None)¶
Get missing time intervals for a data request.
# Parameters
start: Start timestamp (nanoseconds since Unix epoch)
end: End timestamp (nanoseconds since Unix epoch)
data_cls: The data class name
instrument_id: Optional instrument ID filter
# Returns
Returns a list of (start, end) timestamp tuples representing missing intervals.
- instruments(instrument_ids=None, start=None, end=None)¶
Query instruments from the catalog.
# Parameters
instrument_ids: Optional list of instrument IDs to filter by. If None, returns all instruments.
start: Optional inclusive lower bound for ts_init filtering.
end: Optional inclusive upper bound for ts_init filtering.
# Returns
Returns a list of instrument objects (e.g. CurrencyPair, Equity).
- list_backtest_runs()¶
List all backtest run IDs available in the catalog.
# Returns
Returns a list of backtest run IDs (as directory stems) in the catalog.
- list_backtests()¶
List all backtest run instances available in the catalog.
- list_data_types()¶
List all data types available in the catalog.
# Returns
Returns a list of data type names (as directory stems) in the catalog.
- list_instruments(data_type)¶
List all instrument IDs available in the catalog for a given data type.
- list_live_runs()¶
List all live run IDs available in the catalog.
# Returns
Returns a list of live run IDs (as directory stems) in the catalog.
- list_parquet_files(data_type, instrument_id)¶
List all Parquet files in the catalog for a given data type and instrument.
- query(data_type, identifiers=None, start=None, end=None, where_clause=None, files=None, optimize_file_loading=True)¶
Query Parquet files for data matching the given criteria.
- query_bars(identifiers=None, start=None, end=None, where_clause=None)¶
Query bar data from Parquet files.
# Parameters
identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported (e.g., “EUR/USD.SIM” will match all bar types for that instrument).
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of Bar objects matching the query criteria.
- query_custom_data(type_name, identifiers=None, start=None, end=None, where_clause=None)¶
Query custom data from Parquet files.
- query_files(data_cls, identifiers=None, start=None, end=None)¶
Query files in the catalog matching the specified criteria.
# Parameters
data_cls: The data class name to query
identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
# Returns
Returns a list of file paths matching the criteria.
- query_first_timestamp(data_cls, instrument_id=None)¶
Query the first timestamp for a specific data class and instrument.
# Parameters
data_cls: The data class name
instrument_id: Optional instrument ID filter
# Returns
Returns the first timestamp as nanoseconds since Unix epoch, or None if no data exists.
- query_index_price_updates(instrument_ids=None, start=None, end=None, where_clause=None)¶
Query index price update data from Parquet files.
# Parameters
instrument_ids: Optional list of instrument IDs to filter by
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of IndexPriceUpdate objects matching the query criteria.
- query_last_timestamp(data_cls, instrument_id=None)¶
Query the last timestamp for a specific data class and instrument.
# Parameters
data_cls: The data class name
instrument_id: Optional instrument ID filter
# Returns
Returns the last timestamp as nanoseconds since Unix epoch, or None if no data exists.
- query_mark_price_updates(instrument_ids=None, start=None, end=None, where_clause=None)¶
Query mark price update data from Parquet files.
# Parameters
instrument_ids: Optional list of instrument IDs to filter by
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of MarkPriceUpdate objects matching the query criteria.
- query_option_greeks(instrument_ids=None, start=None, end=None, where_clause=None)¶
Query option greeks data from Parquet files.
- query_order_book_deltas(identifiers=None, start=None, end=None, where_clause=None)¶
Query order book delta data from Parquet files.
# Parameters
identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of OrderBookDelta objects matching the query criteria.
- query_order_book_depths(instrument_ids=None, start=None, end=None, where_clause=None)¶
Query order book depth data from Parquet files.
# Parameters
instrument_ids: Optional list of instrument IDs to filter by
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of OrderBookDepth10 objects matching the query criteria.
- query_quote_ticks(identifiers=None, start=None, end=None, where_clause=None)¶
Query quote tick data from Parquet files.
# Parameters
identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of QuoteTick objects matching the query criteria.
- query_trade_ticks(identifiers=None, start=None, end=None, where_clause=None)¶
Query trade tick data from Parquet files.
# Parameters
identifiers: Optional list of identifiers to filter by. Can be instrument_id strings (e.g., “EUR/USD.SIM”) or bar_type strings (e.g., “EUR/USD.SIM-1-MINUTE-LAST-EXTERNAL”). For bars, partial matching is supported.
start: Optional start timestamp (nanoseconds since Unix epoch)
end: Optional end timestamp (nanoseconds since Unix epoch)
where_clause: Optional SQL WHERE clause for additional filtering
# Returns
Returns a vector of TradeTick objects matching the query criteria.
- read_backtest(instance_id)¶
Read data from a backtest run instance.
# Parameters
instance_id: The ID of the backtest run instance
# Returns
Returns a list of data objects from the backtest run, sorted by timestamp.
- read_live_run(instance_id)¶
Read data from a live run instance.
# Parameters
instance_id: The ID of the live run instance
# Returns
Returns a list of data objects from the live run, sorted by timestamp.
- reset_all_file_names()¶
Reset all catalog file names to their canonical form.
- reset_data_file_names(data_cls, instrument_id=None)¶
Reset data file names for a specific data class to their canonical form.
# Parameters
data_cls: The data class name
instrument_id: Optional instrument ID filter
- write_bars(data, start=None, end=None, skip_disjoint_check=False)¶
Write bar data to Parquet files.
# Parameters
data: Vector of bars to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_custom_data(data, start=None, end=None, skip_disjoint_check=False)¶
Write custom data to Parquet files.
Requires CustomData wrappers. Callers must wrap raw custom objects in CustomData(data_type=DataType(cls, metadata=…), data=…) before writing.
- write_index_price_updates(data, start=None, end=None, skip_disjoint_check=False)¶
Write index price update data to Parquet files.
# Parameters
data: Vector of index price updates to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_instruments(data)¶
Write instruments to Parquet files in the catalog.
Instruments are stored under data/instruments/{instrument_id}/ using timestamp-ranged parquet file names, allowing multiple historical versions of the same instrument to be written across separate calls.
# Parameters
data: A Python list of instrument objects (e.g. CurrencyPair, Equity).
# Returns
Returns a list of written file paths.
- write_mark_price_updates(data, start=None, end=None, skip_disjoint_check=False)¶
Write mark price update data to Parquet files.
# Parameters
data: Vector of mark price updates to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_option_greeks(data, start=None, end=None, skip_disjoint_check=False)¶
Write option greeks data to Parquet files.
# Parameters
data: Vector of option greeks to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_order_book_deltas(data, start=None, end=None, skip_disjoint_check=False)¶
Write order book delta data to Parquet files.
# Parameters
data: Vector of order book deltas to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_order_book_depths(data, start=None, end=None, skip_disjoint_check=False)¶
Write order book depth data to Parquet files.
# Parameters
data: Vector of order book depths to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_quote_ticks(data, start=None, end=None, skip_disjoint_check=False)¶
Write quote tick data to Parquet files.
# Parameters
data: Vector of quote ticks to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- write_trade_ticks(data, start=None, end=None, skip_disjoint_check=False)¶
Write trade tick data to Parquet files.
# Parameters
data: Vector of trade ticks to write
start: Optional start timestamp override (nanoseconds since Unix epoch)
end: Optional end timestamp override (nanoseconds since Unix epoch)
# Returns
Returns the path of the created file as a string.
- class QuoteTickDataWrangler¶
Bases:
object- instrument_id¶
- price_precision¶
- process_record_batch_bytes(data)¶
- size_precision¶
- class RustTestCustomData¶
Bases:
objectA simple Rust custom data type for roundtrip testing.
Used in persistence integration tests (test_catalog.rs) and Python roundtrip tests. Tests call ensure_custom_data_registered::<RustTestCustomData>() before using the catalog.
- classmethod decode_record_batch_py(metadata, py_batch)¶
Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).
- encode_record_batch_py(items)¶
Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.
- flag¶
- classmethod from_json(data)¶
Class method for JSON deserialization. Used by register_custom_data_class.
- instrument_id¶
- to_json()¶
Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.
- ts_event¶
- ts_init¶
- value¶
- class RustTestParamsCustomData¶
Bases:
objectRust custom data type that exercises Params field support in the macro.
- classmethod decode_record_batch_py(metadata, py_batch)¶
Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).
- encode_record_batch_py(items)¶
Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.
- classmethod from_json(data)¶
Class method for JSON deserialization. Used by register_custom_data_class.
- name¶
- params¶
- to_json()¶
Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.
- ts_event¶
- ts_init¶
- class RustTestPriceMapCustomData¶
Bases:
objectRust custom data type that exercises typed map field support in the macro.
- classmethod decode_record_batch_py(metadata, py_batch)¶
Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).
- encode_record_batch_py(items)¶
Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.
- classmethod from_json(data)¶
Class method for JSON deserialization. Used by register_custom_data_class.
- name¶
- prices¶
- to_json()¶
Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.
- ts_event¶
- ts_init¶
- class RustTestTypedMapCustomData¶
Bases:
objectRust custom data type that exercises typed JSON map values across PyO3-supported types.
- account_ids¶
- bar_types¶
- booleans¶
- currencies¶
- classmethod decode_record_batch_py(metadata, py_batch)¶
Decodes a RecordBatch from a PyArrow batch into a list of instances. Class method: call via MarketTickData.decode_record_batch_py(metadata, batch).
- encode_record_batch_py(items)¶
Encodes a batch of items to an Arrow RecordBatch. Returns a PyArrow RecordBatch using zero-copy C Data interface.
- floats_32¶
- floats_64¶
- classmethod from_json(data)¶
Class method for JSON deserialization. Used by register_custom_data_class.
- hash_prices_by_instrument¶
- instrument_ids¶
- integers_i32¶
- integers_i64¶
- integers_u32¶
- integers_u64¶
- monies¶
- monies_by_currency¶
- name¶
- prices¶
- prices_by_bar_type¶
- prices_by_instrument¶
- quantities¶
- quantities_by_account¶
- strings¶
- to_json()¶
Serializes to JSON string. Used by CustomData.to_json_bytes and PythonCustomDataWrapper.
- ts_event¶
- ts_init¶
- class StreamingFeatherWriter¶
Bases:
objectPython binding for the Rust FeatherWriter.
This provides a streaming writer of Nautilus objects into feather files with rotation capabilities, matching the interface of Python’s StreamingFeatherWriter.
- close()¶
Closes all writers by flushing and removing them.
After calling this, no further writes should be performed.
- flush()¶
Flushes all active buffers by writing any remaining buffered bytes to the object store.
This is called automatically based on flush_interval_ms if configured, but can also be called manually by the client.
- get_current_file_info()¶
Returns information about the current files being written.
Returns a dictionary mapping writer keys to (size, path) tuples.
- get_next_rotation_time(type_str, instrument_id=None)¶
Returns the next rotation time for a writer, or None if not set.
- is_closed¶
Returns whether the writer has been closed (no active writers).
- subscribe()¶
Subscribes to all messages on the message bus (pattern “*”).
This matches the behavior of Python’s StreamingFeatherWriter when subscribed via trader.subscribe(“*”, writer.write).
- unsubscribe()¶
Unsubscribes from the message bus.
- write(data)¶
Writes a data object to the stream.
# Parameters
data: The data object to write (must be a Nautilus data type from pyo3).