{"id":1062,"library":"clickhouse-connect","title":"ClickHouse Connect","description":"ClickHouse Connect is the official Python driver for ClickHouse, providing a high-performance core database interface for Python applications, Pandas DataFrames, NumPy arrays, PyArrow tables, Polars DataFrames, and Apache Superset integration. It leverages the ClickHouse HTTP interface for maximum compatibility and is actively maintained with regular updates.","status":"active","version":"0.15.1","language":"python","source_language":"en","source_url":"https://github.com/ClickHouse/clickhouse-connect","tags":["database","clickhouse","sql","olap","pandas","sqlalchemy","driver"],"install":[{"cmd":"pip install clickhouse-connect","lang":"bash","label":"Install core library"},{"cmd":"pip install \"clickhouse-connect[pandas,numpy,sqlalchemy,polars,arrow,async]\"","lang":"bash","label":"Install with common optional dependencies"}],"dependencies":[{"reason":"Required for secure connections.","package":"certifi","optional":false},{"reason":"HTTP client library (>=1.26).","package":"urllib3","optional":false},{"reason":"Timezone handling.","package":"pytz","optional":false},{"reason":"ZSTD compression support.","package":"zstandard","optional":false},{"reason":"LZ4 compression support.","package":"lz4","optional":false},{"reason":"SQLAlchemy Core dialect and Superset integration.","package":"sqlalchemy","optional":true},{"reason":"Integration with NumPy arrays and Pandas DataFrames.","package":"numpy","optional":true},{"reason":"Integration with Pandas DataFrames.","package":"pandas","optional":true},{"reason":"Integration with Polars DataFrames.","package":"polars","optional":true},{"reason":"Integration with PyArrow tables and Arrow-backed Pandas DataFrames.","package":"pyarrow","optional":true},{"reason":"Required for the native asynchronous client.","package":"aiohttp","optional":true}],"imports":[{"note":"This is the primary way to instantiate a client connection.","symbol":"get_client","correct":"import clickhouse_connect\nclient = clickhouse_connect.get_client(...)"}],"quickstart":{"code":"import clickhouse_connect\nimport os\n\nhost = os.environ.get('CH_HOST', 'localhost')\nport = int(os.environ.get('CH_PORT', 8123)) # Use 8443 for TLS/Cloud\nusername = os.environ.get('CH_USER', 'default')\npassword = os.environ.get('CH_PASSWORD', '')\ndatabase = os.environ.get('CH_DB', 'default')\n\ntry:\n    client = clickhouse_connect.get_client(\n        host=host, \n        port=port,\n        username=username,\n        password=password,\n        database=database,\n        secure= (port == 8443) # Automatically use TLS for 8443\n    )\n    \n    # Test connection\n    client.ping()\n    print(f\"Successfully connected to ClickHouse at {host}:{port}\")\n\n    # Create a table\n    client.command(\n        \"CREATE TABLE IF NOT EXISTS my_test_table (\",\n        \"    id UInt64,\",\n        \"    name String,\",\n        \"    value Float64\",\n        \") ENGINE MergeTree ORDER BY id\"\n    )\n    print(\"Table 'my_test_table' created or already exists.\")\n\n    # Insert data\n    data_to_insert = [\n        [1, 'Alpha', 100.1],\n        [2, 'Beta', 200.2],\n        [3, 'Gamma', 300.3]\n    ]\n    client.insert('my_test_table', data_to_insert, column_names=['id', 'name', 'value'])\n    print(\"Data inserted into 'my_test_table'.\")\n\n    # Query data\n    result = client.query('SELECT * FROM my_test_table ORDER BY id')\n    print(\"Query Results:\")\n    for row in result.result_set:\n        print(row)\n\n    # Example with Pandas (requires 'pandas' extra)\n    try:\n        import pandas as pd\n        df = client.query_df('SELECT * FROM my_test_table')\n        print(\"\\nPandas DataFrame Results:\")\n        print(df)\n    except ImportError:\n        print(\"\\nSkipping Pandas example: 'pandas' not installed. Install with `pip install clickhouse-connect[pandas]`\")\n\nfinally:\n    if 'client' in locals():\n        client.close()\n        print(\"Connection closed.\")\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")","lang":"python","description":"This quickstart demonstrates how to establish a connection to a ClickHouse server, create a table, insert data, and query it. It includes an example using the `query_df` method for Pandas DataFrames, which requires the `pandas` optional dependency. Credentials are loaded from environment variables for secure usage."},"warnings":[{"fix":"Replace `apply_server_timezone=True` (or similar) with `tz_source='auto'` or other valid options for timezone handling.","message":"The parameter `apply_server_timezone` in client and query methods was renamed to `tz_source` in v0.14.0.","severity":"breaking","affected_versions":">=0.14.0"},{"fix":"Review insertion logic for `Variant` columns. Ensure that your application expects native type serialization. If using older ClickHouse server versions with `Variant`, compatibility issues may arise.","message":"Version 0.13.0 introduced a native write path for the `Variant` data type. Previously, values were stringified; now they are serialized using their native ClickHouse types client-side, which changes how `Variant` columns store data.","severity":"breaking","affected_versions":">=0.13.0"},{"fix":"Migrate to `clickhouse_connect.get_async_client()` or `create_async_client()`, which uses `aiohttp`. Ensure `aiohttp` is installed via `pip install clickhouse-connect[async]`.","message":"The legacy executor-based asynchronous client (`AsyncClient(client=...)`) and related parameters (`executor_threads`, `executor`, `pool_mgr`) have been removed. The native aiohttp-based async client is now standard.","severity":"breaking","affected_versions":"future 0.15.x releases (already removed in 0.15.0 changelog, listed as UNRELEASED breaking change prior to 0.15.0)"},{"fix":"Upgrade to Python 3.10 or higher. The library officially tests against Python 3.10 through 3.14.","message":"Python 3.9 support is deprecated and will be removed in version 1.0. Python 3.8 is End-of-Life (EOL) and no longer officially tested or supported; wheels are not built for 3.8 AARCH64 versions.","severity":"deprecated","affected_versions":"Python 3.8 (unsupported), Python 3.9 (deprecated)"},{"fix":"Always install necessary extras for features like Pandas DataFrame integration, even if the base `clickhouse-connect` package is already present.","message":"Optional dependencies (e.g., `numpy`, `pandas`, `pyarrow`, `polars`, `sqlalchemy`) are lazy-loaded. If you intend to use features relying on these, you must install them explicitly using the `[extra]` syntax (e.g., `pip install clickhouse-connect[pandas]`).","severity":"gotcha","affected_versions":">=0.15.0"},{"fix":"For JSON, use separate Python interpreters for different ClickHouse server versions if mixed JSON usage is required. For Pandas, upgrade to Pandas 2.x or later.","message":"For ClickHouse server versions 22.8 and 22.10+, there is an internal serialization format incompatibility for experimental JSON. Using multiple clients with mixed 22.8/22.9 and 22.10+ server versions will break if JSON support is enabled. Pandas 1.x support is also deprecated and will be dropped in 1.0.","severity":"gotcha","affected_versions":"ClickHouse server versions 22.8/22.9 vs 22.10+, clickhouse-connect <1.0 for Pandas 1.x"},{"fix":"Prefix any ClickHouse server-specific settings passed as keyword arguments or query parameters with `ch_` (e.g., `ch_max_rows_to_read=1000`).","message":"When creating a DBAPI Connection or SQLAlchemy DSN, unrecognized keyword arguments or query parameters will now raise an exception instead of being passed as ClickHouse server settings. Server settings should be prefixed with `ch_`.","severity":"gotcha","affected_versions":">=0.9.0"},{"fix":"Ensure that build-essential packages are installed in your environment (e.g., `apk add build-base` for `alpine` Linux) before attempting to install `clickhouse-connect`, or use a Python base image that includes a C compiler.","message":"Installing `clickhouse-connect` in minimal environments (e.g., `alpine` Docker images) may fail if a C compiler is not present. The `lz4` dependency, required by `clickhouse-connect`, often needs to be built from source if a pre-built wheel is unavailable for the specific Python version and architecture, which necessitates a C compiler (like `gcc`).","severity":"breaking","affected_versions":"All versions of `clickhouse-connect` in environments lacking C compilers (e.g., `alpine` Linux), particularly for newer Python versions where `lz4` wheels might be unavailable."}],"env_vars":null,"last_verified":"2026-05-12T23:23:57.700Z","next_check":"2026-06-30T00:00:00.000Z","problems":[{"fix":"Ensure the library is installed using pip: `pip install clickhouse-connect` or `python -m pip install clickhouse-connect`. If using a virtual environment, activate it first. If in a Docker container, ensure it's included in the `requirements.txt` or `Dockerfile`.","cause":"The 'clickhouse-connect' library is either not installed in the Python environment being used or there's an issue with the Python path.","error":"ModuleNotFoundError: No module named 'clickhouse_connect'"},{"fix":"Verify the ClickHouse server's host and port are correct (default HTTP port is 8123, HTTPS is 8443). Check network connectivity between your application and the ClickHouse server, ensure no firewalls are blocking the port, and confirm the ClickHouse server is running and configured to accept connections from your application's IP address (e.g., check `listen_host` in ClickHouse config).","cause":"The application could not establish a connection to the ClickHouse server, often due to an incorrect host, port, network connectivity issues, or the ClickHouse server not running or being inaccessible.","error":"Failed to connect to the server. Please check that host, port and interface are correct."},{"fix":"If connecting to ClickHouse Cloud, ensure `secure=True` is set in the connection and your client's IP is whitelisted. For self-signed certificates, specify the `ca_cert` parameter in `clickhouse_connect.get_client` pointing to your CA certificate file, or, for testing purposes, disable SSL verification by setting `secure=False` and `verify=False` (not recommended for production). You may also need to update system SSL certificates using `pip install --upgrade certifi`.","cause":"This error occurs when `clickhouse-connect` tries to establish a secure (SSL/TLS) connection to ClickHouse, but the client cannot verify the server's SSL certificate. This is common with self-signed certificates or when the client's trust store is outdated or missing the necessary CA certificate.","error":"SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed"},{"fix":"Double-check the username and password used in your `clickhouse_connect.get_client` call. Ensure they match the credentials configured on the ClickHouse server. Also, verify that the user has the required permissions (e.g., SELECT, INSERT, etc.) for the database and tables being accessed.","cause":"The provided username or password for connecting to ClickHouse is incorrect, or the user lacks the necessary privileges for the attempted operations.","error":"DB::Exception: Authentication failed. Code: 516."},{"fix":"Explicitly cast the data to the correct type using ClickHouse's `CAST()` function or type conversion functions like `toInt64()`, `toString()`, etc., within your SQL query or before inserting data. For example, `CAST('123' AS UInt64)` or `toInt64('123')`. Ensure your application's data types align with the ClickHouse table schema.","cause":"This error signifies a data type mismatch where a value of one type (e.g., String) is being used in a context that expects a different, incompatible type (e.g., UInt64), and ClickHouse cannot perform an implicit conversion. This often happens during data insertion or when comparing values in queries.","error":"DB::Exception: Cannot convert type String to UInt64"}],"ecosystem":"pypi","meta_description":null,"install_score":50,"install_tag":"draft","quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.15.1","cli_name":"","cli_version":null,"install_checks":{"last_tested":"2026-05-12","tag":"draft","tag_description":"notable install failures or slow imports","installed_version":"0.15.1","pypi_latest":"0.15.1","is_stale":false,"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":15,"import_time_s":0.27,"mem_mb":10.5,"disk_size":"574M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.3,"mem_mb":10.5,"disk_size":"537M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3.5,"import_time_s":0.27,"mem_mb":10.5,"disk_size":"55M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.28,"mem_mb":10.5,"disk_size":"55M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.7,"import_time_s":0.54,"mem_mb":12,"disk_size":"602M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.77,"mem_mb":12,"disk_size":"564M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":3,"import_time_s":0.49,"mem_mb":12,"disk_size":"58M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.51,"mem_mb":12,"disk_size":"58M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":13.5,"import_time_s":0.7,"mem_mb":12,"disk_size":"585M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.85,"mem_mb":12,"disk_size":"548M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":2.5,"import_time_s":0.67,"mem_mb":12,"disk_size":"50M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.74,"mem_mb":12,"disk_size":"50M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":13.4,"import_time_s":0.7,"mem_mb":12.2,"disk_size":"584M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.75,"mem_mb":12.2,"disk_size":"546M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.5,"import_time_s":0.66,"mem_mb":12.2,"disk_size":"49M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.74,"mem_mb":12.2,"disk_size":"49M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"clickhouse-connect","exit_code":1,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":16.6,"import_time_s":0.3,"mem_mb":10.4,"disk_size":"507M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pandas,numpy,sqlalchemy,polars,arrow,async","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.35,"mem_mb":10.4,"disk_size":"507M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":3.8,"import_time_s":0.32,"mem_mb":10.4,"disk_size":"55M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"clickhouse-connect","exit_code":0,"wheel_type":null,"failure_reason":null,"import_side_effects":null,"install_time_s":null,"import_time_s":0.34,"mem_mb":10.4,"disk_size":"55M"}]},"quickstart_checks":{"last_tested":"2026-04-24","tag":null,"tag_description":null,"results":[{"runtime":"python:3.10-alpine","exit_code":1},{"runtime":"python:3.10-slim","exit_code":1},{"runtime":"python:3.11-alpine","exit_code":1},{"runtime":"python:3.11-slim","exit_code":1},{"runtime":"python:3.12-alpine","exit_code":1},{"runtime":"python:3.12-slim","exit_code":1},{"runtime":"python:3.13-alpine","exit_code":1},{"runtime":"python:3.13-slim","exit_code":1},{"runtime":"python:3.9-alpine","exit_code":1},{"runtime":"python:3.9-slim","exit_code":1}]}}