{"id":21499,"library":"kcidb-io","title":"KCIDB I/O Library","description":"I/O library for KCIDB, the Linux Kernel CI reporting system. Handles schema validation, data loading, submission, and querying against Google Cloud Platform BigQuery. Current version 141 (2025), requires Python >=3.10, major schema v4 with renamed 'revisions' to 'checkouts'.","status":"active","version":"141","language":"python","source_language":"en","source_url":"https://github.com/kernelci/kcidb-io","tags":["kernel-ci","bigquery","schema-validation","linux-kernel"],"install":[{"cmd":"pip install kcidb-io","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Top-level package, no submodule 'io'. Client is for BigQuery I/O.","wrong":"","symbol":"Client","correct":"from kcidb import Client"},{"note":"load() lives in kcidb.io submodule, not top-level.","wrong":"from kcidb import load","symbol":"load","correct":"from kcidb.io import load"},{"note":"Schema module is at package root.","wrong":"","symbol":"schema","correct":"from kcidb import schema"}],"quickstart":{"code":"import os\nfrom kcidb import Client\nclient = Client(project=os.environ.get('GCP_PROJECT', 'my-project'), dataset='kernelci04', credentials=os.environ.get('GOOGLE_APPLICATION_CREDENTIALS', ''))\nclient.submit({'version': {'major': 4, 'minor': 0}, 'checkouts': []})","lang":"python","description":"Submit an empty v4 data structure to BigQuery dataset. Requires GCP credentials."},"warnings":[{"fix":"Update all data to use 'checkouts' instead of 'revisions'. kcidb-io v141 (and its schema) no longer accepts 'revisions'.","message":"Schema v4 renamed 'revisions' to 'checkouts'. Data using v3 field names will fail validation.","severity":"breaking","affected_versions":">=v3"},{"fix":"Unset KCIDB_GS_KEYFILE and export GOOGLE_APPLICATION_CREDENTIALS='/path/to/key.json'.","message":"Environment variable KCIDB_GS_KEYFILE is deprecated. Use GOOGLE_APPLICATION_CREDENTIALS or explicit credentials parameter.","severity":"deprecated","affected_versions":"v2+"},{"fix":"Export KCIDB_VALIDATE_INTERNAL=1 in environment before importing.","message":"Validation of internal consistency is disabled by default. To enable, set KCIDB_VALIDATE_INTERNAL=1.","severity":"gotcha","affected_versions":">=v2"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use 'from kcidb.io import load'.","cause":"load() is in kcidb.io submodule, not top-level.","error":"AttributeError: module 'kcidb' has no attribute 'load'"},{"fix":"Ensure service account has BigQuery Data Editor role. Set GOOGLE_APPLICATION_CREDENTIALS or provide credentials parameter.","cause":"Client lacks BigQuery permissions on the project/dataset or GOOGLE_APPLICATION_CREDENTIALS not set.","error":"google.api_core.exceptions.Forbidden: 403 Access denied"},{"fix":"Pass a Python dictionary: client.submit({'version': {'major':4, 'minor':0}, 'checkouts': []}).","cause":"submit() expects a dict, not a JSON string.","error":"TypeError: expected dictionary, got str"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}