Skip to content

feat: v0.3.0 — full Java framework parity#4

Merged
ancongui merged 1 commit into
mainfrom
feat/v0.3.0-java-parity
May 7, 2026
Merged

feat: v0.3.0 — full Java framework parity#4
ancongui merged 1 commit into
mainfrom
feat/v0.3.0-java-parity

Conversation

@ancongui
Copy link
Copy Markdown
Contributor

@ancongui ancongui commented May 7, 2026

Summary

Closes the parity gap with the Java Firefly Framework. Rewrites the transactional engine from scratch and adds nine new modules + four client protocols + twelve third-party adapters + five domain validators, with documentation and tests for every addition.

What's new

Transactional engine (rewrite)

  • pyfly.transactional.core — new shared foundation: ExecutionContext, RetryPolicy, StepInvoker (retry/backoff/jitter/timeout), TopologyBuilder DAG, BackpressureStrategy (adaptive/batched/circuit-breaker), OrchestrationEvents/Metrics/Tracer, DeadLetterService, RecoveryService, OrchestrationScheduler, OrchestrationValidator, EventGateway, ExecutionReport, InMemoryPersistenceProvider.
  • pyfly.transactional.workflow — entirely new pattern: @workflow, @workflow_step, @wait_for_signal, @wait_for_timer, @wait_for_all/@wait_for_any, @child_workflow, @compensation_step, @workflow_query, @scheduled_workflow, plus WorkflowEngine, SignalService, TimerService, ChildWorkflowService, ContinueAsNewService, WorkflowQueryService, WorkflowBuilder.
  • Persistence adapters: Redis, SQLAlchemy, pyfly-cache.
  • REST controllers: list executions, DLQ management, workflow start/signal/query.
  • SagaBuilder + TccBuilder + OrchestrationBuilder for programmatic pattern definition.
  • @scheduled_saga, @scheduled_tcc, @step_event, @tcc_event annotations.

New modules

  • pyfly.eventsourcingAggregateRoot, EventStore (in-memory + SQLAlchemy), SnapshotStore, TransactionalOutbox, ProjectionRunner, EventUpcaster, EventSourcedRepository.
  • pyfly.callbacks — outbound HMAC-signed webhooks with retry/tracking.
  • pyfly.webhooks — inbound webhook ingestion with signature validation + idempotency + listener pattern.
  • pyfly.notifications — email/SMS/push port abstraction with provider adapters.
  • pyfly.idp — identity-provider port + Keycloak / AWS Cognito / Azure AD / internal-DB adapters.
  • pyfly.ecm — document storage / metadata / folders / e-signature ports + AWS S3 / Azure Blob / DocuSign / Adobe Sign / Logalty adapters.
  • pyfly.plugins@plugin / @extension / @extension_point with dependency-ordered lifecycle.
  • pyfly.rule_engine — YAML DSL, AST evaluator, batch evaluation, repository.
  • pyfly.config_server — Spring-Cloud-Config-Server analogue + client.
  • pyfly.startersenable_core_stack / enable_application_stack / enable_data_stack / enable_domain_stack meta-packages.

Client protocols (4 new)

  • SoapClient + SoapClientBuilder
  • GrpcClientBuilder
  • GraphQLClient + GraphQLClientBuilder
  • WebSocketClient + WebSocketClientBuilder

EDA enhancements

  • EventCircuitBreaker, InMemoryEdaDeadLetterStore, JSON/Avro/Protobuf serializers, header + predicate event filters.

Domain validators (16 total)

IBAN, BIC, phone, credit card, CVV, currency, amount, account number, tax id, PIN, password strength, date, datetime, national id, sort code, interest rate.

Numbers

  • 91 new source files, 22 new test files, 16 module guides
  • 2732 tests passing (was 681 before)
  • 36 auto-configurations registered
  • Wheel pyfly-0.3.0a1-py3-none-any.whl builds cleanly and verifies in a fresh Python 3.12 venv

Test plan

  • uv pip install -e ".[full]" then pytest --ignore=tests/data --ignore=tests/cli/test_installer.py — 2732 passing
  • uv build — wheel + sdist build cleanly
  • Fresh-venv install of the wheel; every new module importable
  • tests/test_hexagonal.py vendor-isolation rules updated for new adapter paths
  • tests/config/test_auto.py updated to expect 36 auto-configurations

🤖 Generated with Claude Code

Closes the parity gap with the Java Firefly Framework. Rewrites the
transactional engine from scratch to mirror fireflyframework-orchestration,
adds 9 new modules + 4 client protocols + 12 third-party adapters + 5
domain validators, and ships professional documentation + tests for every
addition.

## Transactional engine (rewrite)
- new pyfly.transactional.core foundation: ExecutionContext, RetryPolicy,
  StepInvoker (retry/backoff/jitter/timeout), TopologyBuilder DAG,
  BackpressureStrategy (adaptive/batched/circuit-breaker),
  OrchestrationEvents/Metrics/Tracer, DeadLetterService, RecoveryService,
  OrchestrationScheduler, OrchestrationValidator, EventGateway,
  ExecutionReport, InMemoryPersistenceProvider
- brand-new pyfly.transactional.workflow: @workflow, @workflow_step,
  @wait_for_signal, @wait_for_timer, @wait_for_all/@wait_for_any,
  @child_workflow, @compensation_step, @workflow_query, @scheduled_workflow,
  WorkflowEngine + SignalService + TimerService + ChildWorkflowService +
  ContinueAsNewService + WorkflowQueryService + WorkflowBuilder
- persistence adapters: Redis, SQLAlchemy, pyfly-cache
- REST controllers: list executions, DLQ, workflow start/signal/query
- SagaBuilder + TccBuilder + OrchestrationBuilder for programmatic patterns
- @scheduled_saga, @scheduled_tcc, @step_event, @tcc_event annotations

## New modules
- pyfly.eventsourcing: AggregateRoot, EventStore (in-memory + SQLAlchemy),
  SnapshotStore, TransactionalOutbox, ProjectionRunner, EventUpcaster,
  EventSourcedRepository
- pyfly.callbacks: outbound HMAC-signed webhooks with retry/tracking
- pyfly.webhooks: inbound webhook ingestion with signature validation +
  idempotency + listener pattern
- pyfly.notifications: email/SMS/push port abstraction with adapter registry
- pyfly.idp: identity-provider port with internal-DB reference adapter
- pyfly.ecm: document storage / metadata / folders / e-signature ports
- pyfly.plugins: @plugin / @extension / @extension_point with
  dependency-ordered lifecycle and ExtensionRegistry
- pyfly.rule_engine: YAML DSL, AST evaluator, batch evaluation,
  in-memory rule-set repository
- pyfly.config_server: Spring-Cloud-Config-Server analogue with
  filesystem + in-memory backends and a thin client
- pyfly.starters: enable_core_stack / enable_application_stack /
  enable_data_stack / enable_domain_stack meta-packages mirroring the
  Java starter modules

## Adapters (12 new)
- IDP: KeycloakIdpAdapter, AwsCognitoIdpAdapter, AzureAdIdpAdapter
- ECM storage: AwsS3StorageAdapter, AzureBlobStorageAdapter
- ECM e-signature: DocuSignESignatureAdapter, AdobeSignESignatureAdapter,
  LogaltyESignatureAdapter
- Notifications: SendGridEmailProvider, TwilioSmsProvider,
  FirebasePushProvider, ResendEmailProvider

## Client protocols (4 new)
- SoapClient + SoapClientBuilder
- GrpcClientBuilder
- GraphQLClient + GraphQLClientBuilder
- WebSocketClient + WebSocketClientBuilder

## EDA enhancements
- EventCircuitBreaker, InMemoryEdaDeadLetterStore,
  JsonEventSerializer / AvroEventSerializer / ProtobufEventSerializer,
  HeaderEventFilter / PredicateEventFilter

## Domain validators (16 total)
IBAN, BIC, phone, credit card, CVV, currency, amount, account number,
tax id, PIN, password strength, date, datetime, national id, sort code,
interest rate.

## Numbers
- 91 new source files (modules) + 22 new test files; 16 docs
- 2732 tests passing (was 681 before this work)
- 36 auto-configurations registered
- Wheel pyfly-0.3.0a1-py3-none-any.whl builds cleanly and verifies in a
  fresh Python 3.12 venv

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@ancongui ancongui merged commit 50c3bd5 into main May 7, 2026
2 of 4 checks passed
@ancongui ancongui deleted the feat/v0.3.0-java-parity branch May 7, 2026 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant