Metadata-Version: 2.4
Name: aloeschema
Version: 0.2.3
Summary: Aloeschema is a simple schema.org accessor and validator that allows custom types and properties
Author-email: michael@aloecraft.org
Maintainer-email: michael@aloecraft.org
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/Aloecraft-org/aloeschema
Project-URL: Repository, https://github.com/Aloecraft-org/aloeschema
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: coverage; extra == "test"
Dynamic: license-file

# aloeschema

<div align="center">

<img src="https://raw.githubusercontent.com/Aloecraft-org/AloeSchema/refs/heads/main/doc/icon.png" style="height:96px; width:96px;">

**A Schema.org Multitool**

[![PyPI Version](https://img.shields.io/pypi/v/aloeschema.svg)](https://pypi.org/project/aloeschema/)
[![Python Versions](https://img.shields.io/pypi/pyversions/aloeschema.svg)](https://pypi.org/project/aloeschema/)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

[![CI Status](https://github.com/Aloecraft-org/aloeschema/actions/workflows/main.yml/badge.svg)](https://github.com/Aloecraft-org/aloeschema/actions/workflows/main.yml)
[![Downloads](https://static.pepy.tech/badge/aloeschema)](https://pepy.tech/project/aloeschema)


</div>

## Getting Started

See **quickstart.ipynb** for more detailed usage examples

**Installation**:
```sh
pip install aloeschema
```

**Initialization**: Loads schema.org and a validator

``` py
from aloeschema import load_schema_org
from aloeschema.validator import AloeSchemaValidator
schema_org = load_schema_org()
schema_validator =  AloeSchemaValidator(schema_org)
```

**Validating schema.org**
- Input case is ignored by default (`ignore_case=True`)
- Detailed errors raised by default (`quiet=False`)
    + Set `quiet=True` to return a truthy result instead

``` py
from aloeschema.validator import AloeSchemaValidator
from aloeschema import load_schema_org

schema_org = load_schema_org()
schema_validator = AloeSchemaValidator(schema_org)

schema_validator.Validate(subject_type_name="person", property_type_name="potentialaction", object_type_name="planaction")
schema_validator._getType("schedule")
```

**Extending Schema.org With Custom Types, Properties, and Enumerations**

use `registerCustomType`, `registerCustomProperty`, `registerCustomEnumeration`, and `registerCustomEnumerationValue` to extend Schema.org

``` py
from aloeschema.validator import AloeSchemaValidator
from aloeschema import load_schema_org, registerCustomProperty, registerCustomType, registerCustomEnumeration, registerCustomEnumerationValue

schema_org = load_schema_org()

schema_org = registerCustomType(schema_org, name="User", parent="Person", properties=[])
schema_org = registerCustomProperty(schema_org, name="userName", domain=["Person", "User"], range=["Text"])

schema_org = registerCustomEnumeration(schema_org, name="TaskStatus")
schema_org = registerCustomEnumerationValue(schema_org, enum_type="TaskStatus", value="TaskStatusActive")
schema_org = registerCustomProperty(schema_org, name="taskStatus", domain=["User"], range=["TaskStatus"])

schema_validator = AloeSchemaValidator(schema_org)

schema_validator.IsEnumerationType("TaskStatus")                                           # True
schema_validator.EnumerationValueIsOfType("TaskStatus", "TaskStatusActive")               # True
schema_validator.Validate(subject_type_name="User", property_type_name="taskStatus", enumeration_value_name="TaskStatusActive")  # True
```
