%global _empty_manifest_terminate_build 0 Name: python-marshmallow-jsonschema Version: 0.13.0 Release: 1 Summary: JSON Schema Draft v7 (http://json-schema.org/) formatting with marshmallow License: MIT License URL: https://github.com/fuhrysteve/marshmallow-jsonschema Source0: https://mirrors.nju.edu.cn/pypi/web/packages/2f/53/109d80013b70b6140d05e521ad31e3014680007b51c3dfac72ad20a2d6ee/marshmallow-jsonschema-0.13.0.tar.gz BuildArch: noarch Requires: python3-marshmallow Requires: python3-marshmallow-enum Requires: python3-marshmallow-union %description ## marshmallow-jsonschema: JSON Schema formatting with marshmallow ![Build Status](https://github.com/fuhrysteve/marshmallow-jsonschema/workflows/build/badge.svg) [![Coverage Status](https://coveralls.io/repos/github/fuhrysteve/marshmallow-jsonschema/badge.svg?branch=master)](https://coveralls.io/github/fuhrysteve/marshmallow-jsonschema?branch=master) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black) marshmallow-jsonschema translates marshmallow schemas into JSON Schema Draft v7 compliant jsonschema. See http://json-schema.org/ #### Why would I want my schema translated to JSON? What are the use cases for this? Let's say you have a marshmallow schema in python, but you want to render your schema as a form in another system (for example: a web browser or mobile device). #### Installation Requires python>=3.6 and marshmallow>=3.11. (For python 2 & marshmallow 2 support, please use marshmallow-jsonschema<0.11) ``` pip install marshmallow-jsonschema ``` #### Some Client tools can render forms using JSON Schema * [react-jsonschema-form](https://github.com/mozilla-services/react-jsonschema-form) (recommended) * See below extension for this excellent library! * https://github.com/brutusin/json-forms * https://github.com/jdorn/json-editor * https://github.com/ulion/jsonform ### Examples #### Simple Example ```python from marshmallow import Schema, fields from marshmallow_jsonschema import JSONSchema class UserSchema(Schema): username = fields.String() age = fields.Integer() birthday = fields.Date() user_schema = UserSchema() json_schema = JSONSchema() json_schema.dump(user_schema) ``` Yields: ```python {'properties': {'age': {'format': 'integer', 'title': 'age', 'type': 'number'}, 'birthday': {'format': 'date', 'title': 'birthday', 'type': 'string'}, 'username': {'title': 'username', 'type': 'string'}}, 'required': [], 'type': 'object'} ``` #### Nested Example ```python from marshmallow import Schema, fields from marshmallow_jsonschema import JSONSchema from tests import UserSchema class Athlete(object): user_schema = UserSchema() def __init__(self): self.name = 'sam' class AthleteSchema(Schema): user_schema = fields.Nested(JSONSchema) name = fields.String() athlete = Athlete() athlete_schema = AthleteSchema() athlete_schema.dump(athlete) ``` #### Complete example Flask application using brutisin/json-forms ![Screenshot](http://i.imgur.com/jJv1wFk.png) This example renders a form not dissimilar to how [wtforms](https://github.com/wtforms/wtforms) might render a form. However rather than rendering the form in python, the JSON Schema is rendered using the javascript library [brutusin/json-forms](https://github.com/brutusin/json-forms). ```python from flask import Flask, jsonify from marshmallow import Schema, fields from marshmallow_jsonschema import JSONSchema app = Flask(__name__) class UserSchema(Schema): name = fields.String() address = fields.String() @app.route('/schema') def schema(): schema = UserSchema() return jsonify(JSONSchema().dump(schema)) @app.route('/') def home(): return '''