The modern declarative data flow pipeline and data graph framework for the AI empowered generation.
Project description
🌎 JSONClasses
JSONClasses is a declarative data flow pipeline and data graph framework.
Official Website: https://www.jsonclasses.com
Official Documentation: https://docs.jsonclasses.com
🚗 Features
Features | |
---|---|
🛠 | Data Modeling Declarative data model with Python type hints |
🍸 | Data Sanitization Two strictness modes |
🩺 | Data Validation Descriptive data validation rules without even a line of code |
🧬 | Data Transformation Intuitive with modifier pipelines |
🦖 | Data Presentation Custom key encoding & decoding strategies |
🌍 | Data Graphing Models are linked with each other on the same graph |
🏄♂️ | Data Querying Well-designed protocols and implementations for databases |
🚀 | Synthesized CRUD Only with a line of code |
👮♀️ | Session & Authorization Builtin support for session and authorization |
🔐 | Permission System Supports both object level and field level |
📁 | File Uploading A configuration is enough for file uploading |
📦 | Data Seeder Declarative named graph relationship |
🍎 Getting Started
Prerequisites
Python >= 3.10 is required. You can download it here.
Install JSONClasses
Install JSONClasses is simple with pip
.
pip install jsonclasses
Install Components
Depends on your need, you can install ORM integration and HTTP library integration with the following commands.
pip install jsonclasses-pymongo jsonclasses-server
🎹 Examples
Business Logic Examples
Example 1: Dating App Users
Let's say, you are building the base user functionality for a cross-platform dating app.
The product requirements are:
- Unique phone number is required
- Password should be secure, encrypted, hidden from response
- Gender cannot be changed after set
- This product is adult only
- User intro should be brief
Let's transform the requirements into code.
from jsonclasses import jsonclass, types
from jsonclasses_pymongo import pymongo
from jsonclasses_server import api
@api
@pymongo
@jsonclass
class User:
id: str = types.readonly.str.primary.mongoid.required
phone_no: str = types.str.unique.index.match(local_phone_no_regex).required #1
email: str = types.str.match(email_regex)
password: str = types.str.writeonly.length(8, 16).match(secure_password_regex).transform(salt).required #2
nickname: str = types.str.required
gender: str = types.str.writeonce.oneof(['male', 'female']) #3
age: int = types.int.min(18).max(100) #4
intro: str = types.str.truncate(500) #5
created_at: datetime = types.readonly.datetime.tscreated.required
updated_at: datetime = types.readonly.datetime.tsupdated.required
⚽️ Database & HTTP Library Integrations
-
JSON Classes Pymongo The mongodb integration through pymongo driver.
-
JSON Classes Server The server integration.
🦸 Contributing
- File a bug report. Be sure to include information like what version of YoMo you are using, what your operating system is, and steps to recreate the bug.
- Suggest a new feature.
🤹🏻♀️ Feedback
Any questions or good ideas, please feel free to come to our Discussion. Any feedback would be greatly appreciated!
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for jsonclasses-3.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1a42c97c9728717d6dff8aaee044848c79c4bcde69d9bb936be9c0945a732549 |
|
MD5 | 83841ca42a51c06ecccaf57cfd112ab8 |
|
BLAKE2b-256 | 09f9b08faca2a5a203f9ead97f0ab42d60d8e60575eb135cf4f2a208c9cbec83 |