Skip to main content

Iterative JSON parser with a standard Python iterator interface

Project description

https://travis-ci.com/ICRAR/ijson.svg?branch=master https://ci.appveyor.com/api/projects/status/32wiho6ojw3eakp8/branch/master?svg=true https://coveralls.io/repos/github/ICRAR/ijson/badge.svg?branch=master https://badge.fury.io/py/ijson.svg https://img.shields.io/pypi/pyversions/ijson.svg https://img.shields.io/pypi/dd/ijson.svg https://img.shields.io/pypi/dw/ijson.svg https://img.shields.io/pypi/dm/ijson.svg

ijson

Ijson is an iterative JSON parser with standard Python iterator interfaces.

Usage

All usage example will be using a JSON document describing geographical objects:

{
  "earth": {
    "europe": [
      {"name": "Paris", "type": "city", "info": { ... }},
      {"name": "Thames", "type": "river", "info": { ... }},
      // ...
    ],
    "america": [
      {"name": "Texas", "type": "state", "info": { ... }},
      // ...
    ]
  }
}

High-level interfaces

Most common usage is having ijson yield native Python objects out of a JSON stream located under a prefix. This is done using the items function. Here’s how to process all European cities:

import ijson

f = urlopen('http://.../')
objects = ijson.items(f, 'earth.europe.item')
cities = (o for o in objects if o['type'] == 'city')
for city in cities:
    do_something_with(city)

For how to build a prefix see the prefix section below.

Other times it might be useful to iterate over object members rather than objects themselves (e.g., when objects are too big). In that case one can use the kvitems function instead:

import ijson

f = urlopen('http://.../')
european_places = ijson.kvitems(f, 'earth.europe.item')
names = (v for k, v in european_places if k == 'name')
for name in names:
    do_something_with(name)

Lower-level interfaces

Sometimes when dealing with a particularly large JSON payload it may worth to not even construct individual Python objects and react on individual events immediately producing some result. This is achieved using the parse function:

import ijson

parser = ijson.parse(urlopen('http://.../'))
stream.write('<geo>')
for prefix, event, value in parser:
    if (prefix, event) == ('earth', 'map_key'):
        stream.write('<%s>' % value)
        continent = value
    elif prefix.endswith('.name'):
        stream.write('<object name="%s"/>' % value)
    elif (prefix, event) == ('earth.%s' % continent, 'end_map'):
        stream.write('</%s>' % continent)
stream.write('</geo>')

Even more bare-bones is the ability to react on individual events without even calculating a prefix using the basic_parse function:

import ijson

events = ijson.basic_parse(urlopen('http://.../'))
num_names = sum(1 for event, value in events
                if event == 'map_key' and value == 'name')

asyncio support

In python 3.5+ all of the methods above have an *_async counterpart that works on file-like asynchronous objects, and that can be iterated asynchronously. In other words, something like this:

import asyncio
import ijson

async def run():
   f = await async_urlopen('http://..../')
   async for object in ijson.items_async(f, 'earth.europe.item'):
      if object['type'] == 'city':
         do_something_with(city)
asyncio.run(run())

Push interfaces

All examples above use a file-like object as the data input (both the normal case, and for asyncio support), and hence are “pull” interfaces, with the library reading data as necessary. If for whatever reason it’s not possible to use such method, you can still push data through yet a different interface: coroutines (via generators, not asyncio coroutines). Coroutines effectively allow users to send data to them at any point in time, with a final target coroutine-like object receiving the results.

In the following example the user is doing the reading instead of letting the library do it:

import ijson

@ijson.coroutine
def print_cities():
   while True:
      obj = (yield)
      if obj['type'] != 'city':
         continue
      print(obj)

coro = ijson.items_coro(print_cities(), 'earth.europe.item')
f = urlopen('http://.../')
for chunk in iter(functools.partial(f.read, buf_size)):
   coro.send(chunk)
coro.close()

All four ijson iterators have a *_coro counterpart that work by pushing data into them. Instead of receiving a file-like object and option buffer size as arguments, they receive a single target argument, which should be a coroutine-like object (anything implementing a send method) through which results will be published.

An alternative to providing a coroutine is to use ijson.sendable_list to accumulate results, providing the list is cleared after each parsing iteration, like this:

import ijson

events = ijson.sendable_list()
coro = ijson.items_coro(events, 'earth.europe.item')
f = urlopen('http://.../')
for chunk in iter(functools.partial(f.read, buf_size)):
   coro.send(chunk)
   process_accumulated_events(events)
   del events[:]
coro.close()
process_accumulated_events(events)

Options

Additional options are supported by all ijson functions to give users more fine-grained control over certain operations:

  • The multiple_values option (defaults to False) controls whether multiple top-level values are supported. JSON content should contain a single top-level value (see the JSON Grammar). However there are plenty of JSON files out in the wild that contain multiple top-level values, often separated by newlines. By default ijson will fail to process these with a parse error: trailing garbage error unless multiple_values=True is specified.

  • Similarly the allow_comments option (defaults to False) controls whether C-style comments (e.g., /* a comment */), which are not supported by the JSON standard, are allowed in the content or not.

  • For functions taking a file-like object, an additional buf_size option (defaults to 65536 or 64KB) specifies the amount of bytes the library should attempt to read each time.

  • The items and kvitems functions, and all their variants, have an optional map_type argument (defaults to dict) used to construct objects from the JSON stream. This should be a dict-like type supporting item assignment.

Events

When using the lower-level ijson.parse function, three-element tuples are generated containing a prefix, an event name, and a value. Events will be one of the following:

  • start_map and end_map indicate the beginning and end of a JSON object, respectively. They carry a None as their value.

  • start_array and end_array indicate the beginning and end of a JSON array, respectively. They also carry a None as their value.

  • map_key indicates the name of a field in a JSON object. Its associated value is the name itself.

  • null, boolean, integer, double, number and string all indicate actual content, which is stored in the associated value.

Prefix

A prefix represents the context within a JSON document where an event originates at. It works as follows:

  • It starts as an empty string.

  • A <name> part is appended when the parser starts parsing the contents of a JSON object member called name, and removed once the content finishes.

  • A literal item part is appended when the parser is parsing elements of a JSON array, and removed when the array ends.

  • Parts are separated by ..

When using the ijson.items function, the prefix works as the selection for which objects should be automatically built and returned by ijson.

Backends

Ijson provides several implementations of the actual parsing in the form of backends located in ijson/backends:

  • yajl2_c: a C extension using YAJL 2.x. This is the fastest, but might require a compiler and the YAJL development files to be present when installing this package. Binary wheel distributions exist for major platforms/architectures to spare users from having to compile the package.

  • yajl2_cffi: wrapper around YAJL 2.x using CFFI.

  • yajl2: wrapper around YAJL 2.x using ctypes, for when you can’t use CFFI for some reason.

  • yajl: deprecated YAJL 1.x + ctypes wrapper, for even older systems.

  • python: pure Python parser, good to use with PyPy

You can import a specific backend and use it in the same way as the top level library:

import ijson.backends.yajl2_cffi as ijson

for item in ijson.items(...):
    # ...

Importing the top level library as import ijson uses the first available backend in the same order of the list above. Its name is recorded under ijson.backend.

FAQ

  1. Q: Does ijson work with bytes or str objects?

    A: In short: both are accepted as input, outputs are only str.

    All ijson functions expecting a file-like object should ideally be given one that is opened in binary mode (i.e., its read function returns bytes objects, not str). However if a text-mode file object is given then the library will automatically encode the strings into UTF-8 bytes. A warning is currently issued (but not visible by default) alerting users about this automatic conversion.

    On the other hand ijson always returns text data (JSON string values, object member names, event names, etc) as str objects in python 3, and unicode objects in python 2.7. This mimics the behavior of the system json module.

  2. Q: How are numbers dealt with?

    A: ijson returns int values for integers and decimal.Decimal values for floating-point numbers. This is mostly because of historical reasons. In the future an option might be added to use a different type (e.g., float).

  3. Q: I’m getting an UnicodeDecodeError, or an IncompleteJSONError with no message

    A: This error is caused by byte sequences that are not valid in UTF-8. In other words, the data given to ijson is not really UTF-8 encoded, or at least not properly.

    Depending on where the data comes from you have different options:

    • If you have control over the source of the data, fix it.

    • If you have a way to intercept the data flow, do so and pass it through a “byte corrector”. For instance, if you have a shell pipeline feeding data through stdin into your process you can add something like ... | iconv -f utf8 -t utf8 -c | ... in between to correct invalid byte sequences.

    • If you are working purely in python, you can create a UTF-8 decoder using codecs’ incrementaldecoder to leniently decode your bytes into strings, and feed those strings (using a file-like class) into ijson (see our string_reader_async internal class for some inspiration).

    In the future ijson might offer something out of the box to deal with invalid UTF-8 byte sequences.

  4. Q: I’m getting parse error: trailing garbage or Additional data found errors

    A: This error signals that the input contains more data than the top-level JSON value it’s meant to contain. This is usually caused by JSON data sources containing multiple values, and is usually solved by passing the multiple_values=True to the ijson function in use. See the options section for details.

  5. Are there any differences between the backends?

    Apart from their performance, all backends are designed to support the same capabilities. There are however some small known differences:

    • The yajl backend doesn’t support multiple_values=True. It also doesn’t complain about additional data found after the end of the top-level JSON object.

    • The python backend doesn’t support allow_comments=True It also internally works with str objects, not bytes, but this is an internal detail that users shouldn’t need to worry about, and might change in the future.

Acknowledgements

ijson was originally developed and actively maintained until 2016 by Ivan Sagalaev. In 2019 he handed over the maintenance of the project and the PyPI ownership.

Python parser in ijson is relatively simple thanks to Douglas Crockford who invented a strict, easy to parse syntax.

The YAJL library by Lloyd Hilaiel is the most popular and efficient way to parse JSON in an iterative fashion.

Ijson was inspired by yajl-py wrapper by Hatem Nassrat. Though ijson borrows almost nothing from the actual yajl-py code it was used as an example of integration with yajl using ctypes.

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

ijson-3.0.1.tar.gz (47.3 kB view details)

Uploaded Source

Built Distributions

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

ijson-3.0.1-cp38-cp38-win_amd64.whl (45.8 kB view details)

Uploaded CPython 3.8Windows x86-64

ijson-3.0.1-cp38-cp38-win32.whl (43.3 kB view details)

Uploaded CPython 3.8Windows x86

ijson-3.0.1-cp38-cp38-manylinux1_x86_64.whl (101.2 kB view details)

Uploaded CPython 3.8

ijson-3.0.1-cp37-cp37m-win_amd64.whl (45.3 kB view details)

Uploaded CPython 3.7mWindows x86-64

ijson-3.0.1-cp37-cp37m-win32.whl (42.9 kB view details)

Uploaded CPython 3.7mWindows x86

ijson-3.0.1-cp37-cp37m-manylinux1_x86_64.whl (95.1 kB view details)

Uploaded CPython 3.7m

ijson-3.0.1-cp37-cp37m-macosx_10_6_x86_64.whl (50.7 kB view details)

Uploaded CPython 3.7mmacOS 10.6+ x86-64

ijson-3.0.1-cp36-cp36m-win_amd64.whl (45.3 kB view details)

Uploaded CPython 3.6mWindows x86-64

ijson-3.0.1-cp36-cp36m-win32.whl (42.9 kB view details)

Uploaded CPython 3.6mWindows x86

ijson-3.0.1-cp36-cp36m-manylinux1_x86_64.whl (95.1 kB view details)

Uploaded CPython 3.6m

ijson-3.0.1-cp36-cp36m-macosx_10_6_x86_64.whl (50.7 kB view details)

Uploaded CPython 3.6mmacOS 10.6+ x86-64

ijson-3.0.1-cp35-cp35m-win_amd64.whl (45.3 kB view details)

Uploaded CPython 3.5mWindows x86-64

ijson-3.0.1-cp35-cp35m-win32.whl (42.9 kB view details)

Uploaded CPython 3.5mWindows x86

ijson-3.0.1-cp35-cp35m-manylinux1_x86_64.whl (95.1 kB view details)

Uploaded CPython 3.5m

ijson-3.0.1-cp35-cp35m-macosx_10_6_x86_64.whl (50.7 kB view details)

Uploaded CPython 3.5mmacOS 10.6+ x86-64

ijson-3.0.1-cp34-cp34m-manylinux1_x86_64.whl (88.3 kB view details)

Uploaded CPython 3.4m

ijson-3.0.1-cp34-cp34m-macosx_10_6_x86_64.whl (48.2 kB view details)

Uploaded CPython 3.4mmacOS 10.6+ x86-64

ijson-3.0.1-cp27-cp27mu-manylinux1_x86_64.whl (84.8 kB view details)

Uploaded CPython 2.7mu

ijson-3.0.1-cp27-cp27m-manylinux1_x86_64.whl (84.8 kB view details)

Uploaded CPython 2.7m

ijson-3.0.1-cp27-cp27m-macosx_10_6_x86_64.whl (48.1 kB view details)

Uploaded CPython 2.7mmacOS 10.6+ x86-64

File details

Details for the file ijson-3.0.1.tar.gz.

File metadata

  • Download URL: ijson-3.0.1.tar.gz
  • Upload date:
  • Size: 47.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1.tar.gz
Algorithm Hash digest
SHA256 ad15f915d847f0391deea3b07fcb7248e8574603569d5fe62b7ab21c856c4d98
MD5 4cc6c607323a314ba55ebd4f7dda9e91
BLAKE2b-256 e46861cbd684070fa302b5e95297a36e9641a3b50537adab7d9786959f9eed58

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 45.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 131bff60ad9ce46eb5fbfb7dd82dce6d41bbc713bfd71ff3b50da93321e30223
MD5 1b2fecc47e78fcd7a0e72e8efb37022b
BLAKE2b-256 961e96f848d9d5b0528fbfad121377580d92db1a8eb42fd3fa73be4b8856cfd5

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp38-cp38-win32.whl.

File metadata

  • Download URL: ijson-3.0.1-cp38-cp38-win32.whl
  • Upload date:
  • Size: 43.3 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 609ac8d28333f373d330fe62639b0ffc1a6213bc5daa089272b6fe2c4a0976dc
MD5 af1ade626fad6772bb4880b53dd0950d
BLAKE2b-256 1524259bd84177b5d66737b3aa5c46e33ca6268ed77a85835047b4239c6942b3

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 101.2 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 479909ff56e4ed2a5e66f9c86828d981f275b908d1a19bb657a30a457aa91ad4
MD5 6fd79dc48f71c950a1009ef3318b76f9
BLAKE2b-256 994d31b1c7b48915b46c76ee98c984df1f3ea6c49133cfd8a0c45d8beac1710a

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b6a9041e21ec9bcc069be4ca17ee460fbdc26831d57ea7e567de1fa572ca8753
MD5 03e24f240a2b07ff09e86ebc407118b6
BLAKE2b-256 76ac51437097a1f6ee611bdd775c192759aaf1b6dcac142db09f187c6d27dab2

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp37-cp37m-win32.whl.

File metadata

  • Download URL: ijson-3.0.1-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 7a6c3d679b3a8ad5029a19edd2b8a66204be5ddd32db2fbf8bc83d0b63e92d5b
MD5 68c86a8c2cb2b17a3ba564fd8fcb9cd3
BLAKE2b-256 386b8e4d29e02d4758030801e9dc0f3e91ec728c83cf895e78ac8bc0b100ae2b

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 95.1 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e213725cfbfd982795e2e66dfb74a2dff070bd6ad1fa2fc4512934b6b9b0f3b7
MD5 2428c76eedfbb2eadaf7907438040492
BLAKE2b-256 249158b6264f99ba7e9f620812c345e36c190fdfbe52f81866f769628157b768

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp37-cp37m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp37-cp37m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 50.7 kB
  • Tags: CPython 3.7m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp37-cp37m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 a4a4e5a98baf751937a5d2bc78c65c3e0f1d36574dceaf740fc621256572d6bd
MD5 15176e30aaa5cf6f5a3e6970f37a96a4
BLAKE2b-256 25163d09a7c5d07230a3cdfd0d4781d5f096b95f0d2538de5d77f456fdbd5240

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 0facb58d2131e8d56ab72b95af44f45a62d8e47c391ce9778ae846c22eaf7c30
MD5 4c857c7f1b205b515c5a05f72b006a0a
BLAKE2b-256 bf3e05579cbaa65d5b685d46cafa2a251d8f1a3986da9cb7fbb3033e414e04a4

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp36-cp36m-win32.whl.

File metadata

  • Download URL: ijson-3.0.1-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 4ca8ff6fcc702db993e223632ed8d1424e2dc13299b4863564f6f4ee4f85c68c
MD5 4f6273bb14cd78505583aecf0babf337
BLAKE2b-256 193cd2f825cef7b66080bbdff221608b7ff4f514ee31a2ceda68db0026033eae

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 95.1 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4c58c52ec3f8b8a3f618707af42a21bcd0e2a3ac8afef72720b69886e96d0b3b
MD5 42dc8308192bc078743b37852b6ce84d
BLAKE2b-256 21dda71708dc0687aa9682be5497bc93176140a33611d3f3c923bc7910d070a1

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp36-cp36m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp36-cp36m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 50.7 kB
  • Tags: CPython 3.6m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp36-cp36m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 dd29c718d04bd71441cff8a8e1b9c12a4677b148e5ec52cbda6c1001457b3104
MD5 558b85f98aa74f2c57b90a0a761df740
BLAKE2b-256 5d17243d8b32e22bc5cbcf8ae756f2ce89fdc667bd852751ab44396a04c0bbd0

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 45.3 kB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 a5293955513e4841f132f927f79fee8fc3b0a93ecee5c58f03195b53e02ffc18
MD5 d3d902369ac6446404dbed8a20bbabeb
BLAKE2b-256 4ddb5ad31a09b787a838a99a839bb0d14223af253f6d3d67d80da5bca3d7d74d

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp35-cp35m-win32.whl.

File metadata

  • Download URL: ijson-3.0.1-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 42.9 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 343b13aa0e4a9de28361401dc8861bc2d4a9724e2ab02347e83bf50e7c48638a
MD5 da607d168ba63bad2a1d5d32964e22d5
BLAKE2b-256 cb9741eb42a639dfc40f68e256d5f210bfffb521090746237689522e845b1399

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 95.1 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b96e43fd50882431cc44eb7f92ec0561f2ece8b788334839cbcf45756559e2b4
MD5 aeab9d4373e0579a5affc44176f96bf2
BLAKE2b-256 776c5f57db389606da08a39f23b52e4c8cc0382d0a06d9ae789a2e1cb9c09ca4

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp35-cp35m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp35-cp35m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 50.7 kB
  • Tags: CPython 3.5m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp35-cp35m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 43d2253e21c8e4fc8458acb86143b479e362046d4ad6cde5de1a19eddbcb28a8
MD5 d7ae9693780261116c0d6099f87d5760
BLAKE2b-256 c7b4ce5d59389add7b5ac97e82afe71cb14f814a25667f689acdbc6a60688ac2

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 88.3 kB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1c7b9aec036a8c9a08f211aa0f64bae8d01c706fa384dd46a86ef3aefaaebd74
MD5 c8e125c90bdc6b007d21a9627e4f8048
BLAKE2b-256 d3c3efcc82545cf40ebf9b861a924d384a141c147c410173af2efa15aa50ba5b

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp34-cp34m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp34-cp34m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 48.2 kB
  • Tags: CPython 3.4m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp34-cp34m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 e6410df11d84e86464b977f5a5fdc863d852407e9279611093692ec3a816adab
MD5 a997f366f0e7bce77f5b4d5a8f1bdd56
BLAKE2b-256 f273179e6e597b8663491a78494a7d8de05379af4cc28db922366c6a02641b4e

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 84.8 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f5b7b7edf2c507004b5be538c9e0a241e0160a72877d4b78cd68d1e45014ff72
MD5 085b0500fb732b3a837fb802491174be
BLAKE2b-256 401af3e74273a6155640ae1c1063442b25a7ba1b9fbbacf28570fa158d855c22

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 84.8 kB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 042d06c5ff253d54180f551411c30348e4edd832711529b920cae8406508984e
MD5 fd6d9f19f26e5b7b679688dce24c55d9
BLAKE2b-256 eeaf01dfae9eeaf46fff0d8cc9dc573ada40219aa028cf818924e3352035ce65

See more details on using hashes here.

File details

Details for the file ijson-3.0.1-cp27-cp27m-macosx_10_6_x86_64.whl.

File metadata

  • Download URL: ijson-3.0.1-cp27-cp27m-macosx_10_6_x86_64.whl
  • Upload date:
  • Size: 48.1 kB
  • Tags: CPython 2.7m, macOS 10.6+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.5

File hashes

Hashes for ijson-3.0.1-cp27-cp27m-macosx_10_6_x86_64.whl
Algorithm Hash digest
SHA256 ed6f5bcd674b9eeec73fd75d0e3750ea8660869e248f9d7c70c709d6643ca57a
MD5 caf9c62363155babdb3261191b630727
BLAKE2b-256 d295044bf65f5c9f41f1caa8807f5a585f981ac19064e8e51570fef0802389ad

See more details on using hashes here.

Supported by

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