skinfer package

Submodules

skinfer.draft4_generator module

class skinfer.draft4_generator.IncompleteDraft4SchemaGenerator(base_object)[source]

Bases: json_schema_generator.generator.SchemaGenerator

Patching json_schema_generator.SchemaGenerator to generate Draft4 valid schemas

See original at: https://github.com/perenecabuto/json_schema_generator/blob/master/json_schema_generator/generator.py

This is a hack, just a copy of the method from the base class with a few changes to generate a valid Draft4 schema.

We should implement a full Draft4SchemaGenerator – probably upstream.

generate()[source]
to_dict(base_object=None, object_id=None, first_level=True)[source]
skinfer.draft4_generator.JsonSchemaGenerator

alias of IncompleteDraft4SchemaGenerator

class skinfer.draft4_generator.Type[source]

Bases: json_schema_generator.schema_types.Type

schema_version = u'http://json-schema.org/draft-04/schema'

skinfer.json_schema_merger module

skinfer.json_schema_merger.copy_nonreserved_keys(first, second)[source]
skinfer.json_schema_merger.get_reserved_keys(schema_type)[source]
skinfer.json_schema_merger.max_or_none(val1, val2)[source]

Returns max(val1, val2) returning None only if both values are None

skinfer.json_schema_merger.merge_arrays(first, second)[source]
skinfer.json_schema_merger.merge_booleans(first, second)[source]
skinfer.json_schema_merger.merge_nulls(first, second)[source]
skinfer.json_schema_merger.merge_numbers(first, second)[source]
skinfer.json_schema_merger.merge_objects(first, second)[source]
skinfer.json_schema_merger.merge_property_list(first_properties, second_properties)[source]
skinfer.json_schema_merger.merge_schema(first, second)[source]

Returns the result of merging the two given schemas.

skinfer.json_schema_merger.merge_strings(first, second)[source]
skinfer.json_schema_merger.merge_with_any_of(first, second)[source]
skinfer.json_schema_merger.min_or_none(val1, val2)[source]

Returns min(val1, val2) returning None only if both values are None

skinfer.schema_inferer module

skinfer.schema_inferer.generate_and_merge_schemas(samples)[source]

Iterates through the given samples, generating schemas and merging them, returning the resulting merged schema.

skinfer.schema_inferer.generate_schema_for_sample(sample)[source]

Returns a schema generated for the given sample.

skinfer.schema_inferer.gzopen(filename)[source]
skinfer.schema_inferer.load_samples(samples, jsonlines=False)[source]
skinfer.schema_inferer.load_samples_from_json(file_list)[source]
skinfer.schema_inferer.load_samples_from_jsonlines(file_list)[source]

Module contents

Skinfer - tools for inferring and merging JSON schemas

Basic usage of inferring schemas:

>>> import skinfer, pprint
>>> sample1 = {'name': 'Claudio'}
>>> sample2 = {'name': 'Roberto', 'surname': 'Salazar'}
>>> merged_schema = skinfer.infer_schema([sample1, sample2])
>>> pprint.pprint(merged_schema)
{'$schema': u'http://json-schema.org/draft-04/schema',
  u'properties': {'name': {u'type': u'string'}, 'surname': {'type': 'string'}},
  u'required': ['name'],
  u'type': u'object'}

and merging schemas manually:

>>> schema1 = skinfer.generate_schema(sample1)
>>> schema2 = skinfer.generate_schema(sample2)
>>> final_schema = skinfer.merge_schema(schema1, schema2)
>>> assert merged_schema == final_schema