trailpack.packing.datapackage_schema

DataPackage metadata schema and interactive builder classes using Pydantic. Provides structured definitions and UI-friendly methods for creating Frictionless Data Package metadata with automatic validation.

Attributes

COMMON_LICENSES

FIELD_TEMPLATES

Classes

Contributor

Contributor information with validation.

ContributorRole

Standard contributor roles.

DataPackageSchema

DataPackage metadata schema definition with UI-friendly methods.

Field

Data field schema definition with validation.

FieldConstraints

Field validation constraints with validation.

FieldType

Supported field types in data packages.

License

License information with automatic validation.

MetaDataBuilder

Interactive builder for creating DataPackage metadata.

Resource

Data resource (file) definition with validation.

Source

Data source information with validation.

Unit

Unit of measurement with QUDT vocabulary support.

Module Contents

class trailpack.packing.datapackage_schema.Contributor[source]

Bases: pydantic.BaseModel

Contributor information with validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format, excluding None values.

classmethod validate_email(v)[source]

Basic email validation.

classmethod validate_role(v)[source]

Validate role is from accepted list.

email: str | None[source]
name: str[source]
organization: str | None[source]
role: str[source]
class trailpack.packing.datapackage_schema.ContributorRole[source]

Bases: enum.Enum

Standard contributor roles.

AUTHOR = 'author'[source]
CONTRIBUTOR = 'contributor'[source]
MAINTAINER = 'maintainer'[source]
PUBLISHER = 'publisher'[source]
WRANGLER = 'wrangler'[source]
class trailpack.packing.datapackage_schema.DataPackageSchema[source]

DataPackage metadata schema definition with UI-friendly methods. Provides structure and validation for Frictionless Data Package metadata.

Initialize the schema definition.

_create_field_definitions() Dict[str, Dict[str, Any]][source]

Create field definitions for UI generation.

get_all_fields() List[str][source]

Get list of all possible field names.

get_field_definition(field_name: str) Dict[str, Any][source]

Get UI field definition for a specific field.

Get list of recommended field names.

get_required_fields() List[str][source]

Get list of required field names.

validate_package_name(name: str) tuple[bool, str][source]

Validate package name format.

validate_url(url: str) tuple[bool, str][source]

Validate URL format.

validate_version(version: str) tuple[bool, str][source]

Validate semantic version format.

OPTIONAL_FIELDS = ['profile', 'keywords', 'homepage', 'repository', 'image', 'id'][source]
RECOMMENDED_FIELDS = ['description', 'version'][source]
REQUIRED_FIELDS = ['name', 'title', 'resources', 'licenses', 'created', 'contributors', 'sources'][source]
field_definitions[source]
class trailpack.packing.datapackage_schema.Field[source]

Bases: pydantic.BaseModel

Data field schema definition with validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format.

classmethod validate_field_type(v)[source]

Validate field type is from accepted list.

validate_numeric_has_unit()[source]

Validate that numeric fields have a unit.

constraints: FieldConstraints | None[source]
description: str | None[source]
name: str[source]
rdf_type: str | None[source]
taxonomy_url: str | None[source]
type: str[source]
unit: Unit | None[source]
class trailpack.packing.datapackage_schema.FieldConstraints[source]

Bases: pydantic.BaseModel

Field validation constraints with validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format, excluding None values.

classmethod validate_numeric_constraints(v, info)[source]

Validate numeric constraints.

classmethod validate_pattern(v)[source]

Validate regex pattern.

enum: List[str] | None[source]
maximum: int | float | None[source]
minimum: int | float | None[source]
pattern: str | None[source]
required: bool | None[source]
unique: bool | None[source]
class trailpack.packing.datapackage_schema.FieldType[source]

Bases: enum.Enum

Supported field types in data packages.

BOOLEAN = 'boolean'[source]
DATE = 'date'[source]
DATETIME = 'datetime'[source]
DURATION = 'duration'[source]
INTEGER = 'integer'[source]
NUMBER = 'number'[source]
STRING = 'string'[source]
TIME = 'time'[source]
class trailpack.packing.datapackage_schema.License[source]

Bases: pydantic.BaseModel

License information with automatic validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format, excluding None values.

classmethod validate_path_url(v)[source]

Validate URL format.

name: str[source]
path: str | None[source]
title: str | None[source]
class trailpack.packing.datapackage_schema.MetaDataBuilder[source]

Interactive builder for creating DataPackage metadata. Can be used with UI frameworks to collect user input.

Initialize the builder.

add_contributor(name: str, role: str = 'author', email: str | None = None, organization: str | None = None) MetaDataBuilder[source]

Add contributor information.

add_license(name: str | None = None, title: str | None = None, path: str | None = None) MetaDataBuilder[source]

Add license information. Defaults to CC-BY-4.0 if no name provided. License name should be a valid SPDX identifier. path should be a valid URL to SPDX license page. See https://spdx.org/licenses/ for common licenses.

add_resource(resource: Resource) MetaDataBuilder[source]

Add a data resource.

add_source(title: str, path: str | None = None, description: str | None = None) MetaDataBuilder[source]

Add data source information.

build() Dict[str, Any][source]

Build the complete metadata dictionary.

get_current_state() Dict[str, Any][source]

Get current builder state for UI display.

get_ui_fields() Dict[str, Dict[str, Any]][source]

Get field definitions for UI generation.

set_basic_info(name: str, title: str | None = None, description: str | None = None, version: str | None = None) MetaDataBuilder[source]

Set basic package information.

set_dates() MetaDataBuilder[source]

Set creation date to current time

set_keywords(keywords: List[str]) MetaDataBuilder[source]

Set keywords/tags.

Set homepage and repository URLs.

set_profile(profile: str) MetaDataBuilder[source]

Set package profile.

contributors = [][source]
licenses = [][source]
metadata[source]
resources = [][source]
schema[source]
sources = [][source]
class trailpack.packing.datapackage_schema.Resource[source]

Bases: pydantic.BaseModel

Data resource (file) definition with validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format.

classmethod validate_encoding(v)[source]

Validate encoding is valid.

classmethod validate_format(v)[source]

Validate format is recognized.

description: str | None[source]
encoding: str[source]
fields: List[Field][source]
format: str | None[source]
mediatype: str | None[source]
name: str[source]
path: str[source]
primary_key: List[str][source]
profile: str | None[source]
title: str | None[source]
class trailpack.packing.datapackage_schema.Source[source]

Bases: pydantic.BaseModel

Data source information with validation.

to_dict() Dict[str, Any][source]

Convert to dictionary format, excluding None values.

classmethod validate_path(v)[source]

Basic path validation.

description: str | None[source]
path: str | None[source]
title: str[source]
class trailpack.packing.datapackage_schema.Unit[source]

Bases: pydantic.BaseModel

Unit of measurement with QUDT vocabulary support.

to_dict() Dict[str, Any][source]

Convert to dictionary format for metadata.

classmethod validate_path_url(v)[source]

Validate URI format.

long_name: str | None[source]
name: str[source]
path: str | None[source]
trailpack.packing.datapackage_schema.COMMON_LICENSES[source]
trailpack.packing.datapackage_schema.FIELD_TEMPLATES[source]