{"id":24142,"library":"omnibase-spi","title":"OmniBase SPI","description":"ONEX Service Provider Interface – Protocol definitions for building service providers in the OmniNode ecosystem. Version 0.20.5 requires Python >=3.12. Active development with frequent releases (weekly/monthly).","status":"active","version":"0.20.5","language":"python","source_language":"en","source_url":"https://github.com/OmniNode-ai/omnibase_spi","tags":["spi","service-provider-interface","protocol","omnibase","onex"],"install":[{"cmd":"pip install omnibase-spi","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Introduced in v0.19.0, lives in models submodule.","wrong":"from omnibase_spi import ContractSavingsEstimate","symbol":"ContractSavingsEstimate","correct":"from omnibase_spi.models import ContractSavingsEstimate"},{"note":"Defined in protocols module since v0.20.5.","wrong":"from omnibase_spi import ProtocolExternalService","symbol":"ProtocolExternalService","correct":"from omnibase_spi.protocols import ProtocolExternalService"},{"note":"Standard import path.","wrong":null,"symbol":"ModelDeliveryResult","correct":"from omnibase_spi.models import ModelDeliveryResult"}],"quickstart":{"code":"from omnibase_spi.models import ContractSavingsEstimate\n\nestimate = ContractSavingsEstimate(\n    contract_id=\"123\",\n    estimated_savings=1000.0,\n    currency=\"USD\"\n)\nprint(estimate.model_dump_json(indent=2))","lang":"python","description":"Basic usage: create a model instance and dump JSON."},"warnings":[{"fix":"Upgrade to Python 3.12+ or use an older version if unavoidable.","message":"Python >=3.12 only: omnibase_spi uses new syntax features not available in older versions.","severity":"breaking","affected_versions":"0.18.0+"},{"fix":"Remove any code that expects a mandatory prefix (e.g., 'ONEX_').","message":"The env-prefix mandate from older SPI protocol contracts was removed in v0.18.0. Do not rely on environment variable prefix constraints.","severity":"deprecated","affected_versions":">=0.18.0"},{"fix":"Always use explicit submodule imports (e.g., from omnibase_spi.protocols import ...).","message":"Protocol classes are defined in separate submodules (e.g., omnibase_spi.protocols, omnibase_spi.models). Importing from the top-level package may not work.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Replace with: from omnibase_spi.models import ContractSavingsEstimate","cause":"Trying to import from the top-level package instead of the models submodule.","error":"ImportError: cannot import name 'ContractSavingsEstimate' from 'omnibase_spi'"},{"fix":"Use: from omnibase_spi.protocols import ProtocolExternalService","cause":"Protocol classes are in the protocols submodule.","error":"AttributeError: module 'omnibase_spi' has no attribute 'ProtocolExternalService'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}