arjuna.tpi.parser.json module

Classes to assist in JSON Parsing.

class arjuna.tpi.parser.json.Json

Bases: object

Helper class to create Arjuna’s Json elements.

classmethod assert_dict_type(obj, *, msg)

Assert that the provided object is a Python dict or JsonDict object.

Keyword Arguments:
 msg – Purpose of this assertion.
classmethod assert_list_type(obj, *, msg)

Assert that the provided object is a Python list or JsonList object.

Keyword Arguments:
 msg – Purpose of this assertion.
classmethod extract_schema(jobj_or_str) → arjuna.tpi.parser.json.JsonSchema

Extracts schema from provide Json object or string to create a JsonSchema object.

Parameters:jobj_or_str – JsonDict/JsonList or a Python list/dict or a string representing a Python object
classmethod from_file(file_path: str, *, allow_any: bool = False) → JsonDictOrList

Creates a Json object from file.

Parameters:file_path – Absolute path of the json file.
Keyword Arguments:
 allow_any – If True, if the object can not be coverted to a JsonDict/JsonList, same object is returned, else an Exception is raised.
Returns:Arjuna’s JsonDict or JsonList object or the same object for allow_any = True
classmethod from_iter(iter) → arjuna.tpi.parser.json.JsonList

Creates a Json object from Python iterator.

Parameters:iter – Python iterable
Returns:Arjuna’s JsonList object
classmethod from_map(map: dict) → arjuna.tpi.parser.json.JsonDict

Creates a JsonDict object from Python dictionary.

Parameters:map – Python dict
Returns:Arjuna’s JsonDict object
classmethod from_object(jobj, *, allow_any=False)

Convert a Python object to a JsonDict/JsonList object if applicable.

Any iterable which is not a dict is converted to a JsonList.

Parameters:jobj – dict/list/tuple/set or a compatible Python object.
Keyword Arguments:
 allow_any – If True, if the object can not be coverted, same object is returned, else an Exception is raised.
classmethod from_str(jstr: str, *, allow_any: bool = False) → JsonDictOrList

Creates a Json object from a JSON string.

Parameters:jstr – A string representing a compatible Python object.
Keyword Arguments:
 allow_any – If True, if the object can not be coverted to a JsonDict/JsonList, same object is returned, else an Exception is raised.
Returns:Arjuna’s JsonDict or JsonList object or the same object for allow_any = True
classmethod reset_auto_id_key()

Set Auto ID Key for jsonpath lib to None. Has global impact.

classmethod set_auto_id_key(key='id')

Set Auto ID Key for jsonpath lib to provided key.

Parameters:key – Name of key. Default is id
class arjuna.tpi.parser.json.JsonDict(pydict: dict = None)

Bases: arjuna.tpi.helper.arjtype._ArDict, arjuna.tpi.parser.json.JsonElement

Encapsulates Dictionary object in Json.

Parameters:pydict – Python dict.

Note

Supports dictionary methods as well as . access for key.

Also supports == operator. Right operand can be a Python dict or a JsonDict object.

assert_contents(*, msg, **key_values)

Assert that the values of provided keys match in the root of this dict.

Parameters:
  • msg – Purpose of this assertion.
  • **key_values – Arbitrary key-value pairs to match in the root of this dict.
assert_keys_present(*keys, msg)

Assert that the provided keys are present in the root of this dict.

Parameters:
  • msg – Purpose of this assertion.
  • **keys – Key names to assert
assert_match(jobj, *, msg, ignore_keys=None)

Assert that this JsonDict matches the provided object.

Parameters:

jobj – Python dict/JsonDict

Keyword Arguments:
 
  • msg – Purpose of this assertion.
  • ignore_keys – Keys to be ignored while matching
assert_match_schema(jobj, *, msg)

Assert that this JsonDict matches the schema of provided object.

Parameters:jobj – Json string or Python dict/JsonDict
Keyword Arguments:
 msg – Purpose of this assertion.
assert_schema(schema, *, msg)

Assert that this JsonDict matches the provided schema.

Parameters:schema – Python dict schema or JsonSchema object.
Keyword Arguments:
 msg – Purpose of this assertion.
matches_schema(schema)

Check if this JsonDict matches the provided schema

Parameters:schema – Python dict schema or JsonSchema object.
Returns:A 2-element tuple (True/False, List of error strings in matching)
raw_object

A copy of the Python dict that this object wraps.

schema

Schema of this object.

size

Number of key-value pairs in this object.

class arjuna.tpi.parser.json.JsonElement(container)

Bases: arjuna.tpi.engine.asserter.AsserterMixIn, arjuna.tpi.engine.asserter.IterableAsserterMixin

Abstract Json Element. Base class for JsonList and JsonDict.

find(query) → Any

Find first element with JsonPath.

Parameters:query – JsonPath Query string
Returns:A Json element.
findall(query) → list

Find all elements with JsonPath query.

Parameters:query – JsonPath Query string
Returns:python list of found Json elements.
class arjuna.tpi.parser.json.JsonList(pylist: list)

Bases: arjuna.tpi.parser.json.JsonElement

Encapsulates a list object in Json.

Parameters:pylist – Python list

Note

Supports indexing just like a Python list.

Also supports == operator. Right operand can be a Python list or a JsonList object.

raw_object

A copy of the Python list that this object wraps.

size

Number of objects in this list.

class arjuna.tpi.parser.json.JsonSchema(schema_dict)

Bases: object

Encapsulates Json Schema which can be used to validate Json objects.

allow_null(*keys)

Allow None as a value type for the provided keys in the root of Json Schema.

Parameters:*keys – Arbitrary key names
as_dict() → dict

Get this object as a Python dict.

classmethod builder(*, schema_uri=None)

Create a JsonSchemaBuilder.

Keyword Arguments:
 schema_uri – URI to be set for ‘$schema’ key.
mark_optional(*keys)

Mark the provided keys as optional in the root of Json Schema.

Parameters:*keys – Arbitrary key names
set_allowed_values(*values)

Set allowed values.

Parameters:*values – Arbitrary allowed values.
set_maximum(number)

Set maximum occurances.

Parameters:number – Upper limit for occurances.
class arjuna.tpi.parser.json.JsonSchemaBuilder(*, schema_uri=None)

Bases: object

JsonSchema builder class.

Keyword Arguments:
 schema_uri – URI to be set for ‘$schema’ key.
build()

Create JsonSchema based on the building constructs provided till this point.

object(jobj)

Add schema based on an object to the overall schema.

Call multiple times to add more objects.

Parameters:jobj_or_str – JsonDict/JsonList or a Python str/list/dict.
schema(schema)

Add schema to the overall schema.

Call multiple times to add more schema.

Parameters:schema – Json schema dict
string(jstr)

Add schema based on an object string to the overall schema.

Call multiple times to add more objects.

Parameters:jstr – A string representing a Python object.