{"id":24502,"library":"quixstreams","title":"Quix Streams","description":"Quix Streams is a Python library for building stream processing applications with Apache Kafka. Version 3.23.6 supports stateful operations, windowing, connectors, and Quix Cloud integration. Requires Python >=3.9, <4. Release cadence is active with frequent minor releases.","status":"active","version":"3.23.6","language":"python","source_language":"en","source_url":"https://github.com/quixio/quix-streams","tags":["stream-processing","kafka","quix","dataframe","real-time"],"install":[{"cmd":"pip install quixstreams","lang":"bash","label":"Install base library"},{"cmd":"pip install quixstreams[kafka]","lang":"bash","label":"Install with Kafka connector dependencies"}],"dependencies":[{"reason":"Core Kafka client dependency","package":"confluent-kafka","optional":false},{"reason":"Optional extras: app, connectors, etc.","package":"quixstreams","optional":true}],"imports":[{"note":"Application is a top-level export since v3.0","wrong":"from quixstreams.app import Application","symbol":"Application","correct":"from quixstreams import Application"},{"note":"Correct import is from quixstreams directly","wrong":"from quixstreams.dataframe import StreamingDataFrame","symbol":"StreamingDataFrame","correct":"from quixstreams import StreamingDataFrame"},{"note":"Topic is re-exported at package level","wrong":"from quixstreams.topic import Topic","symbol":"Topic","correct":"from quixstreams import Topic"}],"quickstart":{"code":"from quixstreams import Application\nimport os\n\napp = Application(broker_address=os.environ.get('KAFKA_BROKER', 'localhost:9092'))\ntopic = app.topic('my-topic', value_deserializer='json')\n\n@app.dataframe(topic)\ndef process(df):\n    df = df.apply(lambda row: {'count': row.get('count', 0) + 1})\n    return df\n\nif __name__ == '__main__':\n    app.run()","lang":"python","description":"Minimal stream processing app that increments a counter for each message."},"warnings":[{"fix":"Set the `quix_portal_api` parameter in Application or use the corresponding environment variable.","message":"In v3.22.0, the default for `quix_portal_api` URL was removed. You must explicitly set it when connecting to Quix Cloud.","severity":"breaking","affected_versions":">=3.22.0"},{"fix":"Replace function-based configuration lookup with the method on the Application instance.","message":"The `lookup.quix_configuration_service` function is deprecated; use `app.quix_config_service` instead.","severity":"deprecated","affected_versions":">=3.20.0"},{"fix":"Ensure your routing callable returns `app.topic('destination-topic')`.","message":"When using `StreamingDataFrame.to_topic()`, the callable must return a `Topic` object, not a topic name string.","severity":"gotcha","affected_versions":">=3.21.0"},{"fix":"Design state to be idempotent or use external storage for persistence.","message":"State stores are local and not automatically replicated; replaying a stream from a different consumer group will start with empty state.","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":"Install confluent-kafka: pip install quixstreams[kafka] or separately: pip install confluent-kafka","cause":"Missing Kafka C library or Python bindings.","error":"ModuleNotFoundError: No module named 'confluent_kafka'"},{"fix":"Upgrade to latest: pip install --upgrade quixstreams","cause":"Using a very old version (<0.5) where the method was named differently.","error":"AttributeError: 'Application' object has no attribute 'run'"},{"fix":"Set auto_create_topics=True in Application() or create the topic manually via Kafka admin.","cause":"Kafka topic must be created beforehand or auto-creation must be enabled.","error":"ValueError: Topic 'my-topic' does not exist and auto_create_topics is False"},{"fix":"Ensure your apply function returns a value (can be the input row modified).","cause":"The apply function returned None instead of a value.","error":"TypeError: 'NoneType' object is not callable in StreamingDataFrame.apply()"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}