{"id":24119,"library":"nominal-streaming","title":"Nominal Streaming Client","description":"Python bindings for the Nominal Rust streaming client, providing high-performance real-time data streaming with typed schemas. Current version 0.9.0, release cadence is irregular.","status":"active","version":"0.9.0","language":"python","source_language":"en","source_url":"https://github.com/nominal-io/nominal-streaming","tags":["streaming","real-time","grpc","data"],"install":[{"cmd":"pip install nominal-streaming","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for gRPC communication with Nominal server.","package":"grpcio","optional":false},{"reason":"Protocol Buffers for message serialization.","package":"protobuf","optional":false},{"reason":"Core Nominal SDK for authentication and resource management.","package":"nominal","optional":false}],"imports":[{"note":"Old import path prior to 0.9.0; submodule moved to top-level.","wrong":"from nominal.streaming import StreamingClient","symbol":"StreamingClient","correct":"from nominal_streaming import StreamingClient"},{"note":"Schema class was moved into main package.","wrong":"from nominal.streaming.schema import StreamSchema","symbol":"StreamSchema","correct":"from nominal_streaming import StreamSchema"},{"note":"Types module flattened.","wrong":"from nominal.streaming.types import DataPoint","symbol":"DataPoint","correct":"from nominal_streaming import DataPoint"}],"quickstart":{"code":"import os\nfrom nominal_streaming import StreamingClient, StreamSchema, DataPoint\n\n# Replace with your credentials\nurl = os.environ.get('NOMINAL_URL', 'grpc://localhost:50051')\napi_key = os.environ.get('NOMINAL_API_KEY', '')\n\nclient = StreamingClient(url, api_key=api_key)\n\n# Define a schema\nschema = StreamSchema([\n    (\"timestamp\", \"int64\"),\n    (\"value\", \"float64\"),\n])\n\n# Open a stream\nstream = client.open_stream(\"my-stream\", schema)\n\n# Write one data point\nstream.write(DataPoint(timestamp=123456789, value=42.0))\n\n# Read back\nfor dp in stream.read(start=0):\n    print(dp)\n    break\n\nstream.close()","lang":"python","description":"Open a stream, write a data point, and read it back."},"warnings":[{"fix":"Change 'from nominal.streaming import ...' to 'from nominal_streaming import ...'.","message":"The import path changed from `nominal.streaming` to `nominal_streaming` in version 0.9.0. Old code will fail with ImportError.","severity":"breaking","affected_versions":"<0.9.0"},{"fix":"Replace `StreamingClient(url, username='...', password='...')` with `StreamingClient(url, api_key='...')`.","message":"The `StreamingClient` constructor no longer accepts `username`/`password`; use `api_key`. Authentication method changed.","severity":"breaking","affected_versions":"<0.9.0"},{"fix":"Use string type names: \"int64\", \"float64\", \"string\", etc. See docs for full list.","message":"`StreamSchema` field types are strings, not Python types. Using `int` or `float` will cause a runtime TypeError.","severity":"gotcha","affected_versions":"All"},{"fix":"Update code expecting protobuf objects to use `.timestamp`, `.value`, etc.","message":"The `read()` method now returns an iterator of `DataPoint` objects, not raw protobuf messages.","severity":"breaking","affected_versions":"<0.9.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use `from nominal_streaming import StreamingClient`.","cause":"Trying to import from old package `nominal` instead of `nominal_streaming`.","error":"ImportError: cannot import name 'StreamingClient' from 'nominal'"},{"fix":"Replace `username` and `password` with `api_key`.","cause":"Authentication method changed; now uses `api_key` instead of `username`/`password`.","error":"TypeError: __init__() got an unexpected keyword argument 'username'"},{"fix":"Use `client.open_stream(...)` instead of `client.open_channel(...)`.","cause":"Method renamed from `open_channel` to `open_stream` in v0.9.0.","error":"AttributeError: 'StreamingClient' object has no attribute 'open_channel'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}