Skip to content

Working with Inline Data tables in Python

Inline data handling for tables embedded directly in resource definitions.

Terminal window
pip install fairspec

The Inline plugin provides:

  • load_inline_table - Load tables from inline data
  • InlinePlugin - Plugin for framework integration

For example:

from fairspec import load_inline_table, Resource
table = load_inline_table(Resource(data=[
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
]))

The most common format is an array of objects:

from fairspec import load_inline_table, Resource
table = load_inline_table(Resource(data=[
{"id": 1, "name": "english", "native": "English"},
{"id": 2, "name": "chinese", "native": "\u4e2d\u6587"},
{"id": 3, "name": "spanish", "native": "Espa\u00f1ol"},
]))

You can also use array-of-arrays format with the first row as headers:

from fairspec import load_inline_table, Resource
table = load_inline_table(Resource(data=[
["id", "name", "native"],
[1, "english", "English"],
[2, "chinese", "\u4e2d\u6587"],
[3, "spanish", "Espa\u00f1ol"],
]))

Provide a Table Schema for type validation and conversion:

from fairspec import load_inline_table, Resource
from fairspec_metadata import TableSchema, IntegerColumnProperty, StringColumnProperty, BooleanColumnProperty
table = load_inline_table(Resource(
data=[
{"id": 1, "name": "english", "active": True},
{"id": 2, "name": "chinese", "active": False},
],
tableSchema=TableSchema(properties={
"id": IntegerColumnProperty(),
"name": StringColumnProperty(),
"active": BooleanColumnProperty(),
}),
))

Inline data can be used alongside file-based resources in datasets:

from fairspec import load_inline_table, load_csv_table, Resource
# Load inline reference data
languages = load_inline_table(Resource(
name="languages",
data=[
{"id": 1, "name": "english"},
{"id": 2, "name": "chinese"},
],
))
# Load main data from file
users = load_csv_table(Resource(name="users", data="users.csv"))

You can include metadata with inline data resources:

from fairspec import load_inline_table, Resource
from fairspec_metadata import TableSchema, StringColumnProperty
table = load_inline_table(Resource(
name="countries",
title="Country Reference Data",
description="ISO country codes and names",
data=[
{"code": "US", "name": "United States"},
{"code": "CN", "name": "China"},
{"code": "ES", "name": "Spain"},
],
tableSchema=TableSchema(properties={
"code": StringColumnProperty(),
"name": StringColumnProperty(),
}),
))