HistorySchema Documentation#
The HistorySchema class defines the structure of a dataset, including its index and column names,
each mapped to their respective data types. This schema is often used in data storage, retrieval, and
serialization processes.
Class Overview#
class HistorySchema(Serializable, metaclass=RegistryBase):
    """
    A schema is the structure of a data set.
    It contains the index names mapped to their respective types and levels,
    as well as the column names mapped to their types.
    """
Usage#
Creating a Schema#
You can create a HistorySchema object by specifying the index and columns:
schema = HistorySchema(
    index={"security": str, "date": pd.Timestamp},
    columns={"open": float, "close": float}
)
Accessing Schema Properties#
- index_names: A list of the index names.- schema.index_names # ['security', 'date'] 
- column_names: A list of the column names.- schema.column_names # ['open', 'close'] 
Copying a Schema#
You can create a copy of the schema:
schema_copy = schema.copy()
Checking Index and Column Membership#
You can check if an index or column name exists in the schema:
schema.in_index('security')  # True
schema.in_column('open')     # True
Attributes#
- index (Dict[str, Type]): A dictionary where keys are index names (e.g.,- security,- date) and values are the respective types (e.g.,- str,- Timestamp).
- columns (Dict[str, Type]): A dictionary where keys are column names (e.g.,- open,- close) and values are the respective types (e.g.,- float).
Serialization#
HistorySchema supports serialization to and from dictionaries and JSON.
Converting to a Dictionary#
You can convert the schema to a dictionary representation:
schema_dict = schema.to_dict()
# Output: {'index': {'security': 'str', 'date': 'Timestamp'}, 'columns': {'open': 'float', 'close': 'float'}}
Deserializing from a Dictionary#
You can reconstruct the schema from a dictionary:
schema_from_dict = HistorySchema.from_dict(schema_dict)
Converting to JSON#
You can serialize the schema to a JSON string:
schema_json = schema.__json__()
# Output: '{"index": {"security": "str", "date": "Timestamp"}, "columns": {"open": "float", "close": "float"}}'
Saving and Loading from File#
The schema can be saved to a file and loaded back.
- Save to File: 
schema.store('/path/to/save', 'schema_key')
- Load from File: 
loaded_schema = HistorySchema.load('/path/to/save', 'schema_key')