Skip to main content

jq for pythonista

Project description

jq is too difficult

jq is too difficult, at least for me.

For example, extracting key-name when use is true only, from below JSON data.

{
  "apps": {
    "foo": {
      "use": true
    },
    "bar": {
      "use": true
    },
    "boo": {
      "use": true
    },
    "bee": {
      "use": false
    }
  }
}

What is jq’s answer? (taking over 30 minutes, my past challenges).

$ cat data.json | jq '.apps | . as $$o | keys | map(select($$o[.].use))'
[
  "bar",
  "boo",
  "foo"
]

If you have python’s knowledge, this is tiny oneliner, isn’t it?

$ cat data.json | jqfpy '[k for k, opts in get("apps").items() if opts["use"]]'
[
  "foo",
  "bar",
  "boo"
]

(get() is special function, like a json.load(sys.stdin).get.)

install

pip install jqfpy

how to use

describe syntax

todo.

tutorial

this is jqfpy version of jq’s Tutorial.

alias jsonDATA="curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'"
# jq.
jsonDATA | jq '.'
# jqfpy.
jsonDATA | jqfpy 'get()'
# jq.
jsonDATA | jq '.[0]'
# jqfpy.
jsonDATA | jqfpy 'get()[0]'
# jq.
jsonDATA | jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
# jqfpy.
jsonDATA | jqfpy 'd = get()[0]; {"message": get("commit/message", d), "name": get("commit/committer/name", d)}'
# or
jsonDATA | jqfpy '{"message": get("0/commit/message"), "name": get("0/commit/committer/name")}'
# jq.
jsonDATA | jq '.[] | {message: .commit.message, name: .commit.committer.name}'
# jqfpy.
jsonDATA | jqfpy --squash 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d)} for d in L]'
# jq.
jsonDATA | jq '[.[] | {message: .commit.message, name: .commit.committer.name, parents: [.parents[].html_url]}]'
# jqfpy.
jsonDATA | 'L = get(); [{"message": get("commit/message", d), "name": get("commit/committer/name", d), "parents": [p["html_url"] for p in d["parents"]]} for d in L]'

0.2.0

  • correct behaviours of –slurp and –unbuffered

  • support accessing data by json pointer like format

  • compact output support

  • multiple files support

  • exec code only once

0.1.0

  • adding some options

  • nocode is same as jq . (js == jq .)

  • showing pycode when error is raised

0.0.1

  • first release

Project details


Download files

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

Source Distribution

jqfpy-0.2.0.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

jqfpy-0.2.0-py2.py3-none-any.whl (6.6 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: jqfpy-0.2.0.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jqfpy-0.2.0.tar.gz
Algorithm Hash digest
SHA256 a9ac24e74b0a3e0fc23c59e869e6b8762780570a3e99248bcf8bf660db258460
MD5 89c17b9edb6ed53603356a2249d510aa
BLAKE2b-256 a24b2693d8dee95c67e44b40e5b144d9554676506d359e38d8d7d40b065db44b

See more details on using hashes here.

File details

Details for the file jqfpy-0.2.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for jqfpy-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 24ec6db20b45f0d782227585cb82e3683e156409bfce859b43980ce58a2562d7
MD5 4744c7637b7d4e7c6dc32c61d0582a14
BLAKE2b-256 8c49c99eb3622ac747f577a6de3daba8bcf47e20ccd0140c0d79a9a637519de1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page