Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

jsl

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jsl

A Python DSL for defining JSON schemas

  • 0.2.4
  • PyPI
  • Socket score

Maintainers
1

JSL

.. image:: https://travis-ci.org/aromanovich/jsl.svg?branch=master :target: https://travis-ci.org/aromanovich/jsl :alt: Build Status

.. image:: https://coveralls.io/repos/aromanovich/jsl/badge.svg?branch=master :target: https://coveralls.io/r/aromanovich/jsl?branch=master :alt: Coverage

.. image:: https://readthedocs.org/projects/jsl/badge/?version=latest :target: https://readthedocs.org/projects/jsl/ :alt: Documentation

.. image:: http://img.shields.io/pypi/v/jsl.svg :target: https://pypi.python.org/pypi/jsl :alt: PyPI Version

.. image:: http://img.shields.io/pypi/dm/jsl.svg :target: https://pypi.python.org/pypi/jsl :alt: PyPI Downloads

Documentation_ | GitHub_ | PyPI_

JSL is a Python DSL for defining JSON Schemas.

Example

::

import jsl

class Entry(jsl.Document):
    name = jsl.StringField(required=True)

class File(Entry):
    content = jsl.StringField(required=True)

class Directory(Entry):
    content = jsl.ArrayField(jsl.OneOfField([
        jsl.DocumentField(File, as_ref=True),
        jsl.DocumentField(jsl.RECURSIVE_REFERENCE_CONSTANT)
    ]), required=True)

Directory.get_schema(ordered=True) will return the following JSON schema:

::

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "definitions": {
        "directory": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "content": {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {"$ref": "#/definitions/file"},
                            {"$ref": "#/definitions/directory"}
                        ]
                    }
                }
            },
            "required": ["name", "content"],
            "additionalProperties": false
        },
        "file": {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "content": {"type": "string"}
            },
            "required": ["name", "content"],
            "additionalProperties": false
        }
    },
    "$ref": "#/definitions/directory"
}

Installing

::

pip install jsl

License

BSD license_

.. _Documentation: http://jsl.readthedocs.org/ .. _GitHub: https://github.com/aromanovich/jsl .. _PyPI: https://pypi.python.org/pypi/jsl .. _BSD license: https://github.com/aromanovich/jsl/blob/master/LICENSE

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc