Observed since 21 Oct, 09:20 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agora-etl-plugins
Official plugins for agora-etl — Redis, Kafka, PostgreSQL, BigQuery, S3, cron scheduling, distributed coordination, and Anthropic AI support.
Official plugin collection for agora-etl — Redis, Kafka, PostgreSQL, BigQuery, S3, cron scheduling, distributed coordination, and Anthropic AI support.
agora-etl-plugins extends agora-etl with production-ready integrations. Plugins are auto-discovered via Python entry-points — install the package and they register themselves automatically, no manual wiring needed.
This package owns backend depth, not runtime semantics:
agora-etl owns pipeline behavior, recovery contracts, CLI diagnostics, and
public extension boundariesagora-etl-plugins owns first-party Redis, Kafka, PostgreSQL, BigQuery, S3,
cron, distributed coordination, and Anthropic integrationsagora-etl-rs stays optional and accelerates the runtime without changing
the plugin contractIf a question is about delivery guarantees, checkpoint semantics, lane selection, or replay contracts, the source of truth is still the core docs. If a question is about backend maturity, backend runbooks, or integration extras, this package is the right boundary.
Canonical ecosystem docs live in the public Agora docs surface:
This README stays focused on bundle quickstart information.
from agora import DeliveryConfig, Pipeline
from agora_plugins.redis.sources import RedisStreamSource
from agora_plugins.redis.sinks import RedisSink
summary = await (
Pipeline(RedisStreamSource(url="redis://localhost:6379", stream="events", group="my-group", consumer="worker-1"))
.build(
RedisSink(url="redis://localhost:6379", key_fn=lambda r: r["id"]),
config=DeliveryConfig(batch_size=100),
)
.run()
)
print(f"written={summary.records_written} errors={summary.records_errored}")
pip install "agora-etl-plugins[redis]" # Redis source, sink, state, DLQ, dedup, AI cache
pip install "agora-etl-plugins[cron]" # Cron schedule support for ScheduledPipeline
pip install "agora-etl-plugins[distributed]" # Redis-backed distributed worker coordination
pip install "agora-etl-plugins[kafka]" # Kafka source and sink
pip install "agora-etl-plugins[postgres]" # PostgreSQL source, sink, DLQ, schema adapter
pip install "agora-etl-plugins[bigquery]" # BigQuery table/query source and batch table sink
pip install "agora-etl-plugins[s3]" # S3 prefix source and partitioned dataset sink
pip install "agora-etl-plugins[anthropic]" # Anthropic completion and structured-output provider
pip install "agora-etl-plugins[all]" # Everything in one install
This package tracks the agora-etl 0.4.x compatibility line.
Current floor: agora-etl>=0.4.6,<1.
Supported Python versions: 3.11, 3.12, and 3.13.
The bundle focuses on a small set of official backend families and helpers:
Redis, Kafka, PostgreSQL, BigQuery, S3, cron scheduling, distributed
coordination, and Anthropic. Runtime semantics, agora doctor, and public
data-plane contracts still come from the agora-etl core line.
Anthropic ships as an official first-party extra through anthropic, with a
completion and structured-output support story that stays explicit about the
lack of embeddings.
If your pipelines checkpoint frequently, you can also enable the Rust checkpoint hot path from the core package:
pip install "agora-etl[rs]" "agora-etl-plugins[redis]"
The repository includes a local Docker stack and integration coverage for Redis, Kafka, PostgreSQL, S3-compatible object storage, and an opt-in live BigQuery validation slice.
Typical flow:
make catalog
make topology ACTION=up TOPOLOGY=base
make topology ACTION=status TOPOLOGY=base
make integration SUITE=integration_full
make topology ACTION=down TOPOLOGY=base
make integration SUITE=integration_full sets AGORA_RUN_INTEGRATION=1
through the declarative testkit and runs only tests/integration. Use
make catalog for all supported topologies, suites, gates, and matrices.
Backend-specific validation details live in the canonical docs:
Use the family docs above for BigQuery and S3-specific local validation flows, including the live BigQuery gate and the MinIO-backed S3 dataset checks.
This README does not duplicate the family docs. For backend boundaries, validation notes, and operator guidance, prefer:
For a backend capability matrix or production-boundary claim, trust the canonical docs above over this README summary.
Apache 2.0 — see LICENSE.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
agora-etlEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | agora-etl<1,>=0.4.6 | runtime |
aiokafkaEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | aiokafka<1,>=0.11; extra == "all" | runtime |
anthropicEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | anthropic<1,>=0.99; extra == "all" | runtime |
boto3Environment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | boto3<2,>=1.39; extra == "all" | runtime |
croniterEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | croniter<7,>=6.0; extra == "all" | runtime |
fastavroEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | fastavro<2,>=1.9; extra == "all" | runtime |
google-cloud-bigquery-storageEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | google-cloud-bigquery-storage<3,>=2.39; extra == "all" | runtime |
google-cloud-bigqueryEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | google-cloud-bigquery<4,>=3.38; extra == "all" | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | jsonschema<5,>=4.0; extra == "all" | runtime |
orjsonEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | orjson<4,>=3.11; extra == "all" | runtime |
protobufEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | protobuf<7,>=5; extra == "all" | runtime |
psycopg-poolEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | psycopg-pool<4,>=3.2; extra == "all" | runtime |
psycopgEnvironment{
"extras": "binary",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | psycopg[binary]<4,>=3.1; extra == "all" | runtime |
pyarrowEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pyarrow<25,>=18.0; extra == "all" | runtime |
redisEnvironment{
"extras": "",
"marker": "extra == \"all\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | redis<8,>=7.0; extra == "all" | runtime |
anthropicEnvironment{
"extras": "",
"marker": "extra == \"anthropic\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | anthropic<1,>=0.99; extra == "anthropic" | runtime |
google-cloud-bigquery-storageEnvironment{
"extras": "",
"marker": "extra == \"bigquery\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | google-cloud-bigquery-storage<3,>=2.39; extra == "bigquery" | runtime |
google-cloud-bigqueryEnvironment{
"extras": "",
"marker": "extra == \"bigquery\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | google-cloud-bigquery<4,>=3.38; extra == "bigquery" | runtime |
croniterEnvironment{
"extras": "",
"marker": "extra == \"cron\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | croniter<7,>=6.0; extra == "cron" | runtime |
agora-etlEnvironment{
"extras": "dev,file",
"marker": "extra == \"dev\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | agora-etl[dev,file]; extra == "dev" | runtime |
redisEnvironment{
"extras": "",
"marker": "extra == \"distributed\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | redis<8,>=7.0; extra == "distributed" | runtime |
aiokafkaEnvironment{
"extras": "",
"marker": "extra == \"kafka\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | aiokafka<1,>=0.11; extra == "kafka" | runtime |
fastavroEnvironment{
"extras": "",
"marker": "extra == \"kafka\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | fastavro<2,>=1.9; extra == "kafka" | runtime |
jsonschemaEnvironment{
"extras": "",
"marker": "extra == \"kafka\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | jsonschema<5,>=4.0; extra == "kafka" | runtime |
protobufEnvironment{
"extras": "",
"marker": "extra == \"kafka\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | protobuf<7,>=5; extra == "kafka" | runtime |
psycopg-poolEnvironment{
"extras": "",
"marker": "extra == \"postgres\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | psycopg-pool<4,>=3.2; extra == "postgres" | runtime |
psycopgEnvironment{
"extras": "binary",
"marker": "extra == \"postgres\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | psycopg[binary]<4,>=3.1; extra == "postgres" | runtime |
redisEnvironment{
"extras": "",
"marker": "extra == \"redis\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | redis<8,>=7.0; extra == "redis" | runtime |
boto3Environment{
"extras": "",
"marker": "extra == \"s3\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | boto3<2,>=1.39; extra == "s3" | runtime |
orjsonEnvironment{
"extras": "",
"marker": "extra == \"s3\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | orjson<4,>=3.11; extra == "s3" | runtime |
pyarrowEnvironment{
"extras": "",
"marker": "extra == \"s3\"",
"requires_python": ">=3.11",
"evaluation": "NOT_EVALUATED"
} | pyarrow<25,>=18.0; extra == "s3" | runtime |
bdist_wheel · 323.95 KB · Python py3
sdist · 414.14 KB · Python source
Shared repository data · GitHub
Observed since 21 Oct, 09:20 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:fd6b0e5091f91686af3303dcdbec2dad8993f44f03b59e13199aa4f29db1eb79