… create a basic DataFile

from r2x_core import DataFile
from pathlib import Path

# Basic CSV file
data_file = DataFile(
    name="generators",
    fpath="generators.csv",
    description="Generator capacity data"
)

… map column names during loading

# Map column names during loading
data_file = DataFile(
    name="capacity_data",
    fpath="capacity.csv",
    column_mapping={"old_tech": "technology", "cap_mw": "capacity"}
)

… filter data during loading

# Filter rows by specific values
data_file = DataFile(
    name="regional_data",
    fpath="data.csv",
    filter_by={"year": 2030, "region": ["CA", "TX"]}
)

… work with different file types

# CSV files
csv_file = DataFile(name="data", fpath="data.csv")

# HDF5 files
h5_file = DataFile(name="timeseries", fpath="timeseries.h5")

# JSON configuration
json_file = DataFile(name="config", fpath="config.json")

# XML data
xml_file = DataFile(name="model", fpath="model.xml")

… use custom reader functions

# Custom reader function
def custom_reader(file_path):
    # Custom loading logic
    return file_path.read_text().strip().split("\n")

data_file = DataFile(
    name="custom_data",
    fpath="data.txt",
    reader_function=custom_reader
)