Skip to main content

JqON

The jqon package was developed to provide a simple way to define queries in JSON format, which can later be run in Python. It can be utilized in testing automations, where expected output of a system can be submitted a predefined set of tests.

Installation

This package is fully implemented in Python. No additional compiler is necessary. After downloading the source code just run the following command from the main package folder:

$ python setup.py install

or simply by using pip

$ pip install jqson

Available Queries

Getter Queries

  • attr - {"attr": NAME} is equivalent to getattr(input_data, NAME)
  • item - {"item": KEY} is equivalent to input_data[KEY]

Expression Query

  • expr -

Value Queries

  • value - {"value": VALUE}
  • variable - {"var": [NAME, EXPR]}

Functional Queries

  • bool - {"bool": null} is equivalent to bool(input_data)
  • len - {"len": null} is equivalent to len(input_data)
  • min - {"min": KEY} is equivalent to min(input_data, key=KEY)
  • max - {"max": KEY} is equivalent to max(input_data, key=KEY)

Logical Queries

  • AND - {"AND": [EXPR, ...]} is equivalent to all(EXPR(input_data), ...)
  • OR - {"OR": [EXPR, ...]} is equivalent to any(EXPR(input_data), ...)
  • NOT - {"NOT": [EXPR, ...]} is equivalent to not any(EXPR(input_data), ...)

Unary Queries

  • true - {"true": EXPR} is equivalent to bool(EXPR(input_data)) is True
  • false - {"false": EXPR} is equivalent to bool(EXPR(input_data)) is False
  • null - {"null": EXPR} is equivalent to EXPR(input_data) is None
  • not_null - {"not_null": EXPR} is equivalent to EXPR(input_data) is not None
  • empty - {"empty": EXPR} is equivalent to EXPR(input_data) in (None, "", [], (), {})
  • not_empty - {"not_empty": EXPR}} is equivalent to EXPR(input_data) not in (None, "", [], (), {})

Binary Queries

  • == - {"==": [LEFT, RIGHT]} is equivalent to LEFT == RIGHT
  • != - {"!=": [LEFT, RIGHT]} is equivalent to LEFT != RIGHT
  • > - {">": [LEFT, RIGHT]} is equivalent to LEFT > RIGHT
  • < - {"<": [LEFT, RIGHT]} is equivalent to LEFT < RIGHT
  • >= - {">=": [LEFT, RIGHT]} is equivalent to LEFT >= RIGHT
  • <= - {"<=": [LEFT, RIGHT]} is equivalent to LEFT <= RIGHT
  • in - {"in": [LEFT, RIGHT]} is equivalent to LEFT in RIGHT
  • not_in - {"not_in": [LEFT, RIGHT]} is equivalent to LEFT not in RIGHT
  • contains - {"contains": [LEFT, RIGHT]} is equivalent to RIGHT in LEFT

Enumerable Queries

  • take - {"take": COUNT} is equivalent to input_data[:COUNT]
  • skip - {"skip": COUNT} is equivalent to input_data[COUNT:]
  • slice - {"slice": [START:STOP:END]} is equivalent to input_data[START:STOP:END]
  • any - {"any": EXPR} is equivalent to any(EXPR(item) for item in input_data)
  • all - {"all": EXPR} is equivalent to all(EXPR(item) for item in input_data)
  • select - {"select": EXPR} is equivalent to [EXPR(item) for item in input_data]
  • many - {"many": EXPR} is equivalent to [child for item in input_data for child in EXPR(child)]
  • where - {"where": EXPR} is equivalent to [item for item in input_data if EXPR(item)]
  • distinct - {"distinct": EXPR}
  • single - {"single": EXPR}
  • first - {"first": EXPR} is equivalent to next(item for item in input_data if EXPR(item))
  • last - {"last": EXPR}} is equivalent to next(item for item in reversed(input_data) if EXPR(item))
  • count - {"count": EXPR} is equivalent to sum(1 for item in input_data if EXPR(item)
  • sum - {"sum": EXPR} is equivalent to sum(EXPR(item) for item in input_data)
  • avg - {"avg": EXPR} is equivalent to sum(EXPR(item) for item in input_data) / len(input_data)

Requirements

Disclaimer

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jqon-0.2.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jqon-0.2.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file jqon-0.2.0.tar.gz.

File metadata

  • Download URL: jqon-0.2.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for jqon-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ec5c4db2c5586d7cf3f46db5c31a9eb1653d59c444b8b72fd4c5a407487ecce7
MD5 3524fa39cbaa8528dcbb40ca26da5943
BLAKE2b-256 947c5b38cae6470a199e724b4e66d0fa2f083fc9cf1e58096fa69e58c22c674b

See more details on using hashes here.

File details

Details for the file jqon-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: jqon-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for jqon-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 87f112b02a32e5a15a016212c9bc33f07c4b6dbd16fb874e82aaef5fd49c13af
MD5 54ce004917781f78511702a1a68c3437
BLAKE2b-256 0213a58810fc008a975b8275336a6a7885550f59f8e1da230de04ab1de8bde9c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page