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.

Metadata

Release files for jqon 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jqon 0.2.0
File Size Uploaded
jqon-0.2.0.tar.gz 14.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jqon 0.2.0
File Interpreter ABI Platform
jqon-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 36.4 kB

Release files / jqon-0.2.0.tar.gz

Download URL jqon-0.2.0.tar.gz
Size 14.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ec5c4db2c5586d7cf3f46db5c31a9eb1653d59c444b8b72fd4c5a407487ecce7
BLAKE2b-256 checksum
How to use checksums
947c5b38cae6470a199e724b4e66d0fa2f083fc9cf1e58096fa69e58c22c674b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / jqon-0.2.0-py3-none-any.whl

Download URL jqon-0.2.0-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87f112b02a32e5a15a016212c9bc33f07c4b6dbd16fb874e82aaef5fd49c13af
BLAKE2b-256 checksum
How to use checksums
0213a58810fc008a975b8275336a6a7885550f59f8e1da230de04ab1de8bde9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page