{"id":642,"library":"ijson","title":"ijson","description":"Ijson is an iterative JSON parser for Python that provides standard iterator interfaces. It enables efficient processing of large JSON data streams without loading the entire document into memory, making it ideal for handling massive JSON files, streaming APIs, and memory-constrained environments. The library is currently at version 3.5.0 and maintains an active release cadence with regular updates and binary wheel support for major platforms.","status":"active","version":"3.5.0","language":"python","source_language":"en","source_url":"https://github.com/ICRAR/ijson","tags":["json","streaming","parser","iterative","large-files","memory-efficient","yajl"],"install":[{"cmd":"pip install ijson","lang":"bash","label":"Basic Installation"},{"cmd":"pip install ijson[yajl2_c]","lang":"bash","label":"With C-backend for performance (requires YAJL dev libraries)"},{"cmd":"pip install ijson[yajl2_cffi]","lang":"bash","label":"With CFFI-backend for performance"}],"dependencies":[{"reason":"Used by the faster `yajl2_c` backend. Requires `libyajl-dev` on Debian/Ubuntu systems for compilation.","package":"yajl","optional":true},{"reason":"Used by the `yajl2_cffi` backend, which offers C-level performance without direct C compilation.","package":"cffi"}],"imports":[{"note":"While `import ijson` is correct, for performance-critical applications, it's often better to explicitly import a faster C-based backend if available, as the default might fall back to the pure Python parser.","wrong":"import ijson # (implicitly uses slower Python backend if no C backend is available or configured)","symbol":"ijson","correct":"import ijson"},{"note":"The `items` function is a high-level interface for extracting Python objects from a JSON stream under a specified prefix.","symbol":"items","correct":"from ijson import items"},{"note":"The `parse` function provides a lower-level event-driven interface, yielding (prefix, event, value) tuples.","symbol":"parse","correct":"from ijson import parse"},{"note":"Explicitly imports the `yajl2_cffi` backend for optimal performance, aliasing it as `ijson` for consistent API usage.","symbol":"yajl2_cffi","correct":"import ijson.backends.yajl2_cffi as ijson"}],"quickstart":{"code":"import ijson\nimport os\nfrom io import BytesIO\n\n# Example JSON data (simulating a file-like object)\njson_data = b'{\"earth\": {\"europe\": [{\"name\": \"Paris\", \"type\": \"city\"}, {\"name\": \"Rome\", \"type\": \"city\"}]}, \"america\": [{\"name\": \"New York\", \"type\": \"city\"}]}'\n\n# For demonstration, you might use BytesIO or a real file opened in binary mode\nwith BytesIO(json_data) as f:\n    # Using the 'items' function to extract objects under a specific path\n    # 'earth.europe.item' means: 'earth' object, then 'europe' array, then each 'item' in the array\n    print(\"European cities:\")\n    for city in ijson.items(f, 'earth.europe.item'):\n        print(city)\n\n# Reset stream for another parse, or open a new file\nwith BytesIO(json_data) as f:\n    print(\"\\nAll cities:\")\n    # Using 'item' for a top-level array or '.item' for nested array items without specific object keys\n    # Or a more general path if structure is less strict\n    for city_or_state in ijson.items(f, 'earth..item'): # Matches any item within 'earth' object (e.g., europe.item, america.item)\n        if isinstance(city_or_state, dict) and city_or_state.get('type') == 'city':\n            print(city_or_state)\n\n# Example with explicit backend selection (recommended for production)\n# Ensure 'ijson[yajl2_cffi]' is installed for this to be effective\ntry:\n    import ijson.backends.yajl2_cffi as ijson_fast\n    with BytesIO(json_data) as f:\n        print(\"\\nEuropean cities (with yajl2_cffi backend):\")\n        for city in ijson_fast.items(f, 'earth.europe.item'):\n            print(city)\nexcept ImportError:\n    print(\"\\n'yajl2_cffi' backend not available. Install with 'pip install ijson[yajl2_cffi]'.\")\n","lang":"python","description":"This quickstart demonstrates how to use `ijson.items` to iteratively parse JSON data, extracting Python objects from specified paths. It also shows how to explicitly select a backend for improved performance. `ijson` expects file-like objects opened in binary mode (`'rb'`). The path syntax uses `.` for object keys and `.item` for elements within arrays."},"warnings":[{"fix":"For performance-critical applications, explicitly import the fastest available backend (e.g., `import ijson.backends.yajl2_cffi as ijson`) or ensure the `IJSON_BACKEND` environment variable is set. Install the necessary C libraries if using `yajl2_c`.","message":"Default backend choice can impact performance significantly. By default, `import ijson` will attempt to use available C-based backends (`yajl2_c`, `yajl2_cffi`, `yajl2`) in order, falling back to the pure Python backend if none are found or can be compiled. The pure Python backend is notably slower.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Always open JSON files in binary read mode: `with open('large_file.json', 'rb') as f: ...`. Ensure custom file-like objects return `bytes` from their `read()` method.","message":"`ijson` expects binary file-like objects (e.g., `open('file.json', 'rb')`). While it can accept text-mode file objects (`'r'`), it will internally encode the strings to UTF-8 bytes, which can incur a performance penalty and issues a warning that is not visible by default.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure the input JSON is well-formed. If dealing with potentially malformed streams, implement robust error handling in the data generation source, or pre-process/sanitize the JSON stream before feeding it to `ijson`. Custom error recovery for partial JSON (like with LLM outputs) might require a different library or manual stream manipulation.","message":"Malformed or incomplete JSON data leads to `ijson.common.JSONError` or `ijson.common.IncompleteJSONError`, at which point the parser gives up. It cannot automatically recover or skip to the next 'valid' record, as the error fundamentally invalidates the stream's structure from the parser's perspective.","severity":"breaking","affected_versions":"All versions"},{"fix":"Be mindful of your JSON structure and chosen prefixes. If a collision is likely, use more specific prefixes to navigate around the 'item' keyword or consider using the lower-level `parse` function for finer-grained control over events.","message":"The special prefix `'.item'` is used to denote items within a JSON array. If your actual JSON data contains a key named 'item' directly within an object that is part of an array, this could lead to ambiguity or unexpected parsing behavior.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-05-12T17:07:38.798Z","next_check":"2026-06-26T00:00:00.000Z","problems":[{"fix":"Install the package using pip: `pip install ijson`","cause":"The 'ijson' package is not installed in your Python environment or the Python interpreter being used does not have access to the installed package.","error":"ModuleNotFoundError: No module named 'ijson'"},{"fix":"Pass the `multiple_values=True` option to the ijson parsing function you are using (e.g., `ijson.items(f, 'prefix', multiple_values=True)`).","cause":"This error occurs when the input JSON stream contains multiple top-level JSON objects or values, which is not standard JSON but is common in JSON line-delimited streams or concatenated JSON documents.","error":"ijson.common.IncompleteJSONError: parse error: trailing garbage"},{"fix":"Ensure your input data is strictly valid JSON and properly UTF-8 encoded. If the data is not truly UTF-8, consider pre-processing it with `iconv -f utf8 -t utf8 -c` or similar tools to correct invalid byte sequences, or use an `errors='ignore'` or `errors='replace'` strategy when decoding bytes to strings if reading as text.","cause":"This typically indicates that the input data is not valid JSON, contains invalid characters (e.g., non-UTF-8 bytes), or includes non-standard JSON values like `NaN`.","error":"ijson.common.IncompleteJSONError: lexical error: invalid char in json text"},{"fix":"Install the YAJL development libraries (e.g., `sudo apt-get install libyajl-dev` on Debian/Ubuntu, `brew install yajl` on macOS) and then reinstall `ijson`. Alternatively, you can explicitly use the pure Python backend by importing `ijson.backends.python as ijson`.","cause":"The ijson library, particularly its faster backends (`yajl2_c`, `yajl2_cffi`, `yajl2`), relies on the YAJL C library, which is not found or correctly linked on your system.","error":"YAJL shared object not found"},{"fix":"Open your JSON file in binary read mode (`'rb'`) if feeding it directly to `ijson` functions, as `ijson` prefers binary input. Example: `with open('data.json', 'rb') as f: ...`.","cause":"This error arises when you mix byte-string (binary) and regular string (text) data during file processing or when `ijson` expects binary input but receives text, or vice-versa, often due to how the input file is opened.","error":"TypeError: can't concat bytes to str"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":"3.5.0","install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18.3M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.01,"mem_mb":1.2,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"20.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.6,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"12.1M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.05,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.3,"disk_size":"13M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":2,"disk_size":"11.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":2,"disk_size":"11.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":2,"disk_size":"11.8M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.05,"mem_mb":1.6,"disk_size":"11.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.6,"disk_size":"11.7M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.6,"disk_size":"11.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.05,"mem_mb":1.8,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.05,"mem_mb":1.8,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.5,"import_time_s":0.05,"mem_mb":1.8,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"12M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"17.8M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":" $EXIT -eq 0 ","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.9,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.9,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":"wheel","failure_reason":null,"install_time_s":1.9,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"yajl2_c","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"yajl2_cffi","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}