Metadata-Version: 2.1
Name: data_snack_dynamic_entity
Version: 0.3.3
Home-page: https://github.com/webinterpret-ds/data-snack-dynamic-entity
Author: webinterpret-datascience
Author-email: data-science@webinterpret.com
Project-URL: Bug Tracker, https://github.com/webinterpret-ds/data-snack-dynamic-entity/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: data-snack>=1.0.6
Requires-Dist: jsonschema>=4.17.3

# Data Snack - Dynamic entity 

# About
Used to dynamically load `data-snack` `Entity` objects from json schema.
Especially useful for complex dataset with many fields.

## Install
Data Snack can be easily installed using pypi repository.
```bash
pip install data_snack_dynamic_entity
```

## Usage
### 1. Define Entity template 
First you need to define a dictionary containing the template - a configuration for your Entity type.
Template should contain:
- the name of the new Entity type and its properties
- each property should have:
  - `type` - type of the field
  - `default` - default value (optional property) 
  - `optional` - true if the field is optional (optional property)

Notice that your template can be saved in any file of your choosing.
Just make sure it's later parsed to a dictionary in the right format.

The template is defined using following schema: `src/data_snack_dynamic_entity/entityTemplates.schema.json`.

#### Example
```python
{
    "Car": {
        "properties": {
            "name": {
                "type": "str"
            },
            "cost": {
                "type": "float",
                "default": 10.0,
                "optional": True
            }
        }
    }
}
```

### 2. Load the template and create new types
Now you are ready to create entities based on your template:
```python
from data_snack_dynamic_entity.factory import load_entities

entities = load_entities(templates=your_config)
```

After that `entities` will contain a dictionary in the following format:
```python
{
    "entity_name": EntityType
}
```

# Contact
Plugin was created by the Data Science team from [Webinterpret](https://www.webinterpret.com/).
