<h1 align="center">
<strong>jsf</strong><img src="docs/assets/imgs/index.png" width="50" style="position: absolute; padding-left:10px;">
</h1>
<p align="center">
<a href="https://codecov.io/gh/ghandic/jsf" target="_blank">
<img src="https://img.shields.io/codecov/c/github/ghandic/jsf?color=%2334D058" alt="Coverage">
</a>
<a href="https://ghandic.github.io/jsf/index.html" target="_blank">
<img src="https://img.shields.io/badge/docs-mkdocs%20material-blue.svg?style=flat" alt="Docs">
</a>
<a href="https://pypi.org/project/jsf/" target="_blank">
<img src="https://img.shields.io/pypi/v/jsf.svg" alt="PyPI Latest Release">
</a>
<br />
<a href="https://github.com/ghandic/jsf/blob/main/LICENSE" target="_blank">
<img src="https://img.shields.io/github/license/ghandic/jsf.svg" alt="License">
</a>
<a href="https://github.com/psf/black" target="_blank">
<img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
</a>
</p>
Use **jsf** along with fake data generators to provide consistent and meaningful fake data for your system.
## Main Features
- Provides out of the box data generation from any JSON schema 📦
* Extendable custom data providers using any lambda functions 🔗
* Multi level state for dependant data (eg multiple objects sharing value, such as children with same surname) 🤓
* Inbuilt validation of fake JSON produced ✅
* In memory conversion from JSON Schema to Pydantic Models with generated examples 🤯
* Seamless integration with [FastAPI](https://fastapi.tiangolo.com/) 🚀
## Installation
<div class="termy">
```console
$ pip install jsf
---> 100%
```
</div>
## Usage
### Basic 😊
```python
from jsf import JSF
faker = JSF(
{
"type": "object",
"properties": {
"name": {"type": "string", "$provider": "faker.name"},
"email": {"type": "string", "$provider": "faker.email"},
},
"required": ["name", "email"],
}
)
fake_json = faker.generate()
```
Results in ...
```python
{
'name': 'Jesse Phillips',
'email': 'xroberson@hotmail.com'
}
```
### From JSON file 📁
```python
from jsf import JSF
faker = JSF.from_json("demo-schema.json")
fake_json = faker.generate()
```
<details markdown="1">
<summary>Or run stright from the <code>commandline</code>...</summary>
#### Native install
```bash
jsf --schema src/tests/data/custom.json --instance wow.json
```
#### Docker
```bash
docker run -v $PWD:/data challisa/jsf jsf --schema /data/custom.json --instance /data/example.json
```
</details>
### FastAPI Integration 🚀
Create a file main.py with:
```python
from jsf import JSF
from fastapi import FastAPI
app = FastAPI(docs_url="/")
generator = JSF.from_json("custom.json")
@app.get("/generate", response_model=generator.pydantic())
def read_root():
return generator.generate()
```
Run the server with:
<div class="termy">
```console
$ uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
```
Navigate to [http://127.0.0.1:8000](http://127.0.0.1:8000) and check out your endpoint. Notice the following are all automatically created:
- Schema with descriptions and examples
- Example response
- Data generation by clicking "try it out"




</div>
## Credits
- This repository is a Python port of [json-schema-faker](https://github.com/json-schema-faker/json-schema-faker) with some minor differences in implementation.
## License
* [MIT License](/LICENSE)
Raw data
{
"_id": null,
"home_page": "https://github.com/ghandic/jsf",
"name": "jsf",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "JSON Schema,Fake data,Test data,Schema,JSON,Faker,Hypothesis,Rapid Prototype,Data contract",
"author": "ghandic",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/9a/2b/94a19d7d7cd7db8e53f0dcc4ae2463b7343a4b0ce94ac670181ace8c5e2d/jsf-0.4.0.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">\n <strong>jsf</strong><img src=\"docs/assets/imgs/index.png\" width=\"50\" style=\"position: absolute; padding-left:10px;\">\n</h1>\n\n<p align=\"center\">\n <a href=\"https://codecov.io/gh/ghandic/jsf\" target=\"_blank\">\n <img src=\"https://img.shields.io/codecov/c/github/ghandic/jsf?color=%2334D058\" alt=\"Coverage\">\n </a>\n <a href=\"https://ghandic.github.io/jsf/index.html\" target=\"_blank\">\n <img src=\"https://img.shields.io/badge/docs-mkdocs%20material-blue.svg?style=flat\" alt=\"Docs\">\n </a>\n <a href=\"https://pypi.org/project/jsf/\" target=\"_blank\">\n <img src=\"https://img.shields.io/pypi/v/jsf.svg\" alt=\"PyPI Latest Release\">\n </a>\n <br />\n <a href=\"https://github.com/ghandic/jsf/blob/main/LICENSE\" target=\"_blank\">\n <img src=\"https://img.shields.io/github/license/ghandic/jsf.svg\" alt=\"License\">\n </a>\n <a href=\"https://github.com/psf/black\" target=\"_blank\">\n <img src=\"https://img.shields.io/badge/code%20style-black-000000.svg\" alt=\"Code style: black\">\n </a>\n</p>\n\n\nUse **jsf** along with fake data generators to provide consistent and meaningful fake data for your system.\n\n## Main Features\n\n- Provides out of the box data generation from any JSON schema \ud83d\udce6 \n* Extendable custom data providers using any lambda functions \ud83d\udd17\n* Multi level state for dependant data (eg multiple objects sharing value, such as children with same surname) \ud83e\udd13 \n* Inbuilt validation of fake JSON produced \u2705\n* In memory conversion from JSON Schema to Pydantic Models with generated examples \ud83e\udd2f\n* Seamless integration with [FastAPI](https://fastapi.tiangolo.com/) \ud83d\ude80\n\n## Installation\n\n<div class=\"termy\">\n\n```console\n$ pip install jsf\n\n---> 100%\n```\n\n</div>\n\n## Usage\n\n### Basic \ud83d\ude0a\n\n```python\nfrom jsf import JSF\n\nfaker = JSF(\n {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\"type\": \"string\", \"$provider\": \"faker.name\"},\n \"email\": {\"type\": \"string\", \"$provider\": \"faker.email\"},\n },\n \"required\": [\"name\", \"email\"],\n }\n)\n\nfake_json = faker.generate()\n```\n\nResults in ...\n\n```python\n{\n 'name': 'Jesse Phillips', \n 'email': 'xroberson@hotmail.com'\n}\n```\n\n### From JSON file \ud83d\udcc1\n\n```python\nfrom jsf import JSF\n\nfaker = JSF.from_json(\"demo-schema.json\")\nfake_json = faker.generate()\n```\n\n<details markdown=\"1\">\n<summary>Or run stright from the <code>commandline</code>...</summary>\n\n#### Native install\n\n```bash\njsf --schema src/tests/data/custom.json --instance wow.json\n```\n\n#### Docker\n\n```bash\ndocker run -v $PWD:/data challisa/jsf jsf --schema /data/custom.json --instance /data/example.json\n```\n\n</details>\n\n\n### FastAPI Integration \ud83d\ude80\n\nCreate a file main.py with:\n\n```python\nfrom jsf import JSF\nfrom fastapi import FastAPI\n\napp = FastAPI(docs_url=\"/\")\ngenerator = JSF.from_json(\"custom.json\")\n\n\n@app.get(\"/generate\", response_model=generator.pydantic())\ndef read_root():\n return generator.generate()\n\n```\n\nRun the server with:\n\n<div class=\"termy\">\n\n```console\n$ uvicorn main:app --reload\n\nINFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)\nINFO: Started reloader process [28720]\nINFO: Started server process [28722]\nINFO: Waiting for application startup.\nINFO: Application startup complete.\n```\n\nNavigate to [http://127.0.0.1:8000](http://127.0.0.1:8000) and check out your endpoint. Notice the following are all automatically created:\n\n- Schema with descriptions and examples\n- Example response\n- Data generation by clicking \"try it out\"\n\n\n\n\n\n\n</div>\n\n## Credits\n\n- This repository is a Python port of [json-schema-faker](https://github.com/json-schema-faker/json-schema-faker) with some minor differences in implementation.\n\n## License\n\n* [MIT License](/LICENSE)\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "Creates fake JSON files from a JSON schema",
"version": "0.4.0",
"split_keywords": [
"json schema",
"fake data",
"test data",
"schema",
"json",
"faker",
"hypothesis",
"rapid prototype",
"data contract"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "e531583324a5b70a48ba9d14427a015a",
"sha256": "05238c4a9da0b288f7ad4c5ca32a5df9326c939cb307cb9aa2ffd694ecf0d293"
},
"downloads": -1,
"filename": "jsf-0.4.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e531583324a5b70a48ba9d14427a015a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 14977,
"upload_time": "2022-06-30T03:53:06",
"upload_time_iso_8601": "2022-06-30T03:53:06.464711Z",
"url": "https://files.pythonhosted.org/packages/fb/6b/b010ef43c7ccd280251ac7f65a8caf6ea5fea0b68461513560a25aaf68fc/jsf-0.4.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "6a6515ffd5c92d8d56eb645a3c4e378d",
"sha256": "81fc0f3fb8deec47688ce9057296bc2c20bed31bb4876e122c0d8c0e88958f5e"
},
"downloads": -1,
"filename": "jsf-0.4.0.tar.gz",
"has_sig": false,
"md5_digest": "6a6515ffd5c92d8d56eb645a3c4e378d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 12561,
"upload_time": "2022-06-30T03:53:07",
"upload_time_iso_8601": "2022-06-30T03:53:07.998879Z",
"url": "https://files.pythonhosted.org/packages/9a/2b/94a19d7d7cd7db8e53f0dcc4ae2463b7343a4b0ce94ac670181ace8c5e2d/jsf-0.4.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-06-30 03:53:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "ghandic",
"github_project": "jsf",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "jsf"
}