Catalog PyPI
Back to packageRELEASE DETAILS

0.4.3

PyPI

agora-etl-plugins

Official plugins for agora-etl — Redis, Kafka, PostgreSQL, BigQuery, S3, cron scheduling, distributed coordination, and Anthropic AI support.

anthropicasyncbigquerycrondata-engineeringdistributedetlkafkallmpipelinepostgresrediss3
Published30 Jul 2026
Direct dependencies15
Transitive dependenciesNot calculated

README

Version 0.4.3 documentation

Agora ETL Plugins

Official plugin collection for agora-etl — Redis, Kafka, PostgreSQL, BigQuery, S3, cron scheduling, distributed coordination, and Anthropic AI support.

License Python PyPI


Overview

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 boundaries
  • agora-etl-plugins owns first-party Redis, Kafka, PostgreSQL, BigQuery, S3, cron, distributed coordination, and Anthropic integrations
  • agora-etl-rs stays optional and accelerates the runtime without changing the plugin contract

If 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}")

Install

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]"

Local integration testing

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.


Documentation map

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.


License

Apache 2.0 — see LICENSE.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 31

Native requirements
15 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
agora-etl
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
agora-etl<1,>=0.4.6runtime
aiokafka
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiokafka<1,>=0.11; extra == "all"runtime
anthropic
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
anthropic<1,>=0.99; extra == "all"runtime
boto3
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
boto3<2,>=1.39; extra == "all"runtime
croniter
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
croniter<7,>=6.0; extra == "all"runtime
fastavro
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastavro<2,>=1.9; extra == "all"runtime
google-cloud-bigquery-storage
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
google-cloud-bigquery-storage<3,>=2.39; extra == "all"runtime
google-cloud-bigquery
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
google-cloud-bigquery<4,>=3.38; extra == "all"runtime
jsonschema
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
jsonschema<5,>=4.0; extra == "all"runtime
orjson
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
orjson<4,>=3.11; extra == "all"runtime
protobuf
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
protobuf<7,>=5; extra == "all"runtime
psycopg-pool
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
psycopg-pool<4,>=3.2; extra == "all"runtime
psycopg
Environment
{
  "extras": "binary",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
psycopg[binary]<4,>=3.1; extra == "all"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyarrow<25,>=18.0; extra == "all"runtime
redis
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
redis<8,>=7.0; extra == "all"runtime
anthropic
Environment
{
  "extras": "",
  "marker": "extra == \"anthropic\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
anthropic<1,>=0.99; extra == "anthropic"runtime
google-cloud-bigquery-storage
Environment
{
  "extras": "",
  "marker": "extra == \"bigquery\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
google-cloud-bigquery-storage<3,>=2.39; extra == "bigquery"runtime
google-cloud-bigquery
Environment
{
  "extras": "",
  "marker": "extra == \"bigquery\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
google-cloud-bigquery<4,>=3.38; extra == "bigquery"runtime
croniter
Environment
{
  "extras": "",
  "marker": "extra == \"cron\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
croniter<7,>=6.0; extra == "cron"runtime
agora-etl
Environment
{
  "extras": "dev,file",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
agora-etl[dev,file]; extra == "dev"runtime
redis
Environment
{
  "extras": "",
  "marker": "extra == \"distributed\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
redis<8,>=7.0; extra == "distributed"runtime
aiokafka
Environment
{
  "extras": "",
  "marker": "extra == \"kafka\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
aiokafka<1,>=0.11; extra == "kafka"runtime
fastavro
Environment
{
  "extras": "",
  "marker": "extra == \"kafka\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
fastavro<2,>=1.9; extra == "kafka"runtime
jsonschema
Environment
{
  "extras": "",
  "marker": "extra == \"kafka\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
jsonschema<5,>=4.0; extra == "kafka"runtime
protobuf
Environment
{
  "extras": "",
  "marker": "extra == \"kafka\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
protobuf<7,>=5; extra == "kafka"runtime
psycopg-pool
Environment
{
  "extras": "",
  "marker": "extra == \"postgres\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
psycopg-pool<4,>=3.2; extra == "postgres"runtime
psycopg
Environment
{
  "extras": "binary",
  "marker": "extra == \"postgres\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
psycopg[binary]<4,>=3.1; extra == "postgres"runtime
redis
Environment
{
  "extras": "",
  "marker": "extra == \"redis\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
redis<8,>=7.0; extra == "redis"runtime
boto3
Environment
{
  "extras": "",
  "marker": "extra == \"s3\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
boto3<2,>=1.39; extra == "s3"runtime
orjson
Environment
{
  "extras": "",
  "marker": "extra == \"s3\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
orjson<4,>=3.11; extra == "s3"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"s3\"",
  "requires_python": ">=3.11",
  "evaluation": "NOT_EVALUATED"
}
pyarrow<25,>=18.0; extra == "s3"runtime

Distribution files

2 collected
agora_etl_plugins-0.4.3-py3-none-any.whl

bdist_wheel · 323.95 KB · Python py3

Source file
agora_etl_plugins-0.4.3.tar.gz

sdist · 414.14 KB · Python source

Source file

Repository

PENDING
thanhtham010891/agora-etl-plugins

Shared repository data · GitHub

License detected in repository
Not collected

Repository

PENDING
thanhtham010891/agora-etl

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 09:20 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:fd6b0e5091f91686af3303dcdbec2dad8993f44f03b59e13199aa4f29db1eb79

Other collected versions

View all collected versions →