Skip to content

Commit 0172266

Browse files
anconguiAndrés Contreras Guillén
andauthored
chore: migrate to CalVer 26.05.01 and expand README with featured patterns (#7)
* chore: migrate to CalVer 26.05.01 and expand README Aligns PyFly with the rest of the Firefly Framework family (Java, .NET, Go) by switching from SemVer-with-milestone (`0.X.Y-MN`) to Calendar Versioning (`YY.MM.PATCH`). Versioning: - pyproject.toml `version`: 0.3.0a1 -> 26.5.1 (PEP 440 normalized form) - Development Status classifier: 3 - Alpha -> 4 - Beta - src/pyfly/__init__.py `__version__`: "0.2.0-M11" -> "26.05.01" - install.sh PYFLY_VERSION: 0.2.0-M11 -> 26.05.01 - docs/versioning.md rewritten for the CalVer convention - Bulk-updated docs/cli.md, docs/installation.md, docs/modules/core.md, docs/getting-started.md, ROADMAP.md to reference v26.05.01 - CHANGELOG.md adds v26.05.01 entry Documentation: - README.md badge, install commands, "Current" line, and Versioning section now show the new version - Adds a new "Featured Patterns" section with end-to-end code examples for Saga, Workflow, TCC, Event Sourcing, CQRS, Webhooks, Callbacks, Notifications, IDP, ECM, Rule Engine, and Plugins - Marks Roadmap Phases 1-3 as complete in v26.05.01; Phase 4 remains planned (Backoffice, DDD starters, Utils) - Refreshes Ecosystem table with .NET sibling and CalVer status - Module count corrected to 38 (matches the documented module tables) ROADMAP.md mirrors the same status updates and lists every Phase 1-3 module as Done, with links to the Java sources they parity. The previous tag (`v0.3.0-M1`) and its GitHub release stay in place for historical reference; new clones, badges, and install-from-release links should use `v26.05.01`. * test: update info-command version assertion to read pyfly.__version__ The previous test hardcoded "0.2.0" as the substring expected in `pyfly info` output. After the CalVer migration the runtime emits `v26.05.01`, so the assertion now reads `pyfly.__version__` and checks that the live constant is rendered. This makes the test resilient to future version bumps without further edits. --------- Co-authored-by: Andrés Contreras Guillén <ancongui@Andress-MacBook-Pro.local>
1 parent 6200d7c commit 0172266

12 files changed

Lines changed: 615 additions & 163 deletions

File tree

CHANGELOG.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

77
---
88

9+
## v26.05.01 (2026-05-07)
10+
11+
### CalVer migration
12+
13+
PyFly switches from SemVer-with-milestone (`0.X.Y-MN`) to **Calendar
14+
Versioning** (`YY.MM.PATCH`), aligning with every other Firefly Framework
15+
sibling (Java, .NET, Go) on the same monthly release cadence. See
16+
[`docs/versioning.md`](docs/versioning.md) for the full convention.
17+
18+
The `26.05.01` release ships exactly the same code as `0.3.0-M1`. No
19+
behaviour change — only:
20+
21+
- `pyproject.toml` `version` field: `0.3.0a1``26.5.1` (PEP 440 normalised
22+
form of `26.05.01`).
23+
- `pyfly.__version__`: `"0.2.0-M11"``"26.05.01"`.
24+
- `install.sh` `PYFLY_VERSION`: `0.2.0-M11``26.05.01`.
25+
- README badge, install commands, "Current" line, and CLI doctor example all
26+
show the new version.
27+
- `docs/versioning.md` rewritten for the CalVer convention.
28+
- `Development Status` classifier bumped to `4 - Beta` to reflect the
29+
Java-parity payload that landed under the previous milestone.
30+
31+
The previous tag (`v0.3.0-M1`) and its GitHub release stay in place for
32+
historical reference; new clones, badges, and install-from-release links
33+
should use `v26.05.01`.
34+
35+
---
36+
937
## v0.3.0-M1 (2026-05-07)
1038

1139
### Java framework parity push — major release

README.md

Lines changed: 469 additions & 22 deletions
Large diffs are not rendered by default.

ROADMAP.md

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,51 +4,54 @@ PyFly's roadmap is driven by achieving feature parity with the full [Firefly Fra
44

55
---
66

7-
## Current State (v0.2.0-M11)
7+
## Current State (v26.05.01)
88

9-
PyFly ships with **27 modules** covering the foundation, application, infrastructure, and cross-cutting layers. See the [Changelog](CHANGELOG.md) for full details on what's included.
9+
PyFly ships with **38 fully-implemented modules** covering the foundation, application, infrastructure, integration, and cross-cutting layers — including the rewritten transactional engine (Saga + Workflow + TCC), Event Sourcing, IDP, ECM, Notifications, Webhooks, Callbacks, Plugins, Rule Engine, and Config Server. See the [Changelog](CHANGELOG.md) for full details on what's included.
10+
11+
Phases 1, 2, and 3 of the original roadmap have all landed in `v26.05.01`. Phase 4 is the remaining set.
1012

1113
---
1214

13-
## Phase 1 — Core Distributed Patterns
15+
## Phase 1 — Core Distributed Patterns**Complete (v26.05.01)**
1416

15-
| Module | Description | Java Source |
16-
|--------|-------------|-------------|
17-
| **Event Sourcing** | Event store, aggregate roots, snapshots, projections, outbox pattern | [`fireflyframework-eventsourcing`](https://github.com/fireflyframework/fireflyframework-eventsourcing) |
18-
| ~~**Saga / Transactions**~~ | ~~Distributed Saga and TCC transaction orchestration with compensation and recovery~~ | ~~[`fireflyframework-transactional-engine`](https://github.com/fireflyframework/fireflyframework-transactional-engine)~~ **Done in v0.1.0-M5** |
19-
| **Workflow** | Workflow orchestration engine with state persistence, scheduling, and DLQ | [`fireflyframework-workflow`](https://github.com/fireflyframework/fireflyframework-workflow) |
20-
| **Domain** | DDD building blocks — base entities, value objects, aggregate roots, domain events | [`fireflyframework-starter-domain`](https://github.com/fireflyframework/fireflyframework-starter-domain) |
17+
| Module | Description | Java Source | Status |
18+
|--------|-------------|-------------|--------|
19+
| **Saga / Transactions** | Distributed Saga orchestration with compensation, DAG topology, retries, idempotency, recovery | [`fireflyframework-transactional-engine`](https://github.com/fireflyframework/fireflyframework-transactional-engine) | Done (rewritten in v26.05.01) |
20+
| **TCC** | Try / Confirm / Cancel three-phase transactions with `Annotated[T, FromTry()]` propagation | [`fireflyframework-transactional-engine`](https://github.com/fireflyframework/fireflyframework-transactional-engine) | Done in v26.05.01 |
21+
| **Workflow** | Durable, signal-driven orchestration: `@wait_for_signal`/`@wait_for_timer`/child workflows/queries/cron | [`fireflyframework-workflow`](https://github.com/fireflyframework/fireflyframework-workflow) | Done in v26.05.01 |
22+
| **Event Sourcing** | `AggregateRoot`, `EventStore`, snapshots, transactional outbox, projections, upcasting | [`fireflyframework-eventsourcing`](https://github.com/fireflyframework/fireflyframework-eventsourcing) | Done in v26.05.01 |
2123

2224
---
2325

24-
## Phase 2 — Business Logic
26+
## Phase 2 — Business Logic**Complete (v26.05.01)**
2527

26-
| Module | Description | Java Source |
27-
|--------|-------------|-------------|
28-
| **Rule Engine** | YAML DSL-based business rule engine with AST evaluation and audit trails | [`fireflyframework-rule-engine`](https://github.com/fireflyframework/fireflyframework-rule-engine) |
29-
| **Plugins** | Plugin system with annotation-based discovery, lifecycle, and dependency resolution | [`fireflyframework-plugins`](https://github.com/fireflyframework/fireflyframework-plugins) |
30-
| **Data Processing** | Job orchestration, enrichment pipelines, CQRS integration for batch workloads | [`fireflyframework-data`](https://github.com/fireflyframework/fireflyframework-data) |
28+
| Module | Description | Java Source | Status |
29+
|--------|-------------|-------------|--------|
30+
| **Rule Engine** | YAML DSL-based business rule engine with AST evaluation, audit trails, batch evaluation, hot reload | [`fireflyframework-rule-engine`](https://github.com/fireflyframework/fireflyframework-rule-engine) | Done in v26.05.01 |
31+
| **Plugins** | Plugin SPI: `@plugin` / `@extension_point` / `@extension`, dependency-ordered lifecycle | [`fireflyframework-plugins`](https://github.com/fireflyframework/fireflyframework-plugins) | Done in v26.05.01 |
32+
| **Data Processing** | Job orchestration, enrichment pipelines, CQRS integration for batch workloads | [`fireflyframework-data`](https://github.com/fireflyframework/fireflyframework-data) | Covered by `pyfly.data` + `pyfly.cqrs` + `pyfly.transactional` |
3133

3234
---
3335

34-
## Phase 3 — Enterprise Integrations
36+
## Phase 3 — Enterprise Integrations**Complete (v26.05.01)**
3537

36-
| Module | Description | Java Source |
37-
|--------|-------------|-------------|
38-
| **Notifications** | Email, SMS, and push notification abstractions with provider adapters (SendGrid, Twilio, Firebase) | [`fireflyframework-notifications`](https://github.com/fireflyframework/fireflyframework-notifications) |
39-
| **Identity Provider** | IDP abstraction with adapters for Keycloak, AWS Cognito, and internal DB | [`fireflyframework-idp`](https://github.com/fireflyframework/fireflyframework-idp) |
40-
| **ECM** | Enterprise Content Management — document storage, versioning, e-signature (Adobe Sign, DocuSign) | [`fireflyframework-ecm`](https://github.com/fireflyframework/fireflyframework-ecm) |
41-
| **Webhooks** | Inbound webhook ingestion with signature validation, rate limiting, and idempotency | [`fireflyframework-webhooks`](https://github.com/fireflyframework/fireflyframework-webhooks) |
42-
| **Callbacks** | Outbound event dispatching to external systems with circuit breakers and retry | [`fireflyframework-callbacks`](https://github.com/fireflyframework/fireflyframework-callbacks) |
38+
| Module | Description | Java Source | Status |
39+
|--------|-------------|-------------|--------|
40+
| **Notifications** | Email, SMS, and push notifications with provider adapters (SendGrid, Resend, SMTP, Twilio, Firebase, dummy) | [`fireflyframework-notifications`](https://github.com/fireflyframework/fireflyframework-notifications) | Done in v26.05.01 |
41+
| **IDP** | Identity-provider port + Keycloak / AWS Cognito / Azure AD / internal-DB adapters | [`fireflyframework-idp`](https://github.com/fireflyframework/fireflyframework-idp) | Done in v26.05.01 |
42+
| **ECM** | Enterprise Content Management — documents, folders, e-signature (S3 / Azure Blob / local-fs storage; DocuSign / Adobe Sign / Logalty / no-op signing) | [`fireflyframework-ecm`](https://github.com/fireflyframework/fireflyframework-ecm) | Done in v26.05.01 |
43+
| **Webhooks** | Inbound webhook ingestion with HMAC validation, idempotency, listener dispatch | [`fireflyframework-webhooks`](https://github.com/fireflyframework/fireflyframework-webhooks) | Done in v26.05.01 |
44+
| **Callbacks** | Outbound callback dispatcher with HMAC signing, retries, authorized domains, execution tracking | [`fireflyframework-callbacks`](https://github.com/fireflyframework/fireflyframework-callbacks) | Done in v26.05.01 |
45+
| **Config Server** | Centralized configuration server (`ConfigServer` / `ConfigClient`) with filesystem + in-memory backends | [`fireflyframework-config-server`](https://github.com/fireflyframework/fireflyframework-config-server) | Done in v26.05.01 |
4346

4447
---
4548

46-
## Phase 4 — Administrative & Infrastructure
49+
## Phase 4 — Administrative & Infrastructure 🔄 **Planned**
4750

4851
| Module | Description | Java Source |
4952
|--------|-------------|-------------|
5053
| **Backoffice** | Admin/backoffice layer with impersonation and enhanced audit | [`fireflyframework-backoffice`](https://github.com/fireflyframework/fireflyframework-backoffice) |
51-
| **Config Server** | Centralized configuration server for multi-service deployments | [`fireflyframework-config-server`](https://github.com/fireflyframework/fireflyframework-config-server) |
54+
| **Domain (DDD starters)** | DDD building blocks — base entities, value objects, aggregate roots, domain events | [`fireflyframework-starter-domain`](https://github.com/fireflyframework/fireflyframework-starter-domain) |
5255
| **Utils** | Shared utility library — template rendering, filtering, common helpers | [`fireflyframework-utils`](https://github.com/fireflyframework/fireflyframework-utils) |
5356

5457
---
@@ -60,7 +63,8 @@ PyFly is part of the broader [Firefly Framework](https://github.com/fireflyframe
6063
| Platform | Repository | Status |
6164
|----------|-----------|--------|
6265
| **Java / Spring Boot** | [`fireflyframework-*`](https://github.com/fireflyframework) (40+ modules) | Production |
63-
| **Python** | [`pyfly`](https://github.com/fireflyframework/fireflyframework-pyfly) | Milestone (M6) |
66+
| **.NET 9** | [`fireflyframework-dotnet`](https://github.com/fireflyframework/fireflyframework-dotnet) | Beta (CalVer 26.05+) |
67+
| **Python** | [`fireflyframework-pyfly`](https://github.com/fireflyframework/fireflyframework-pyfly) | Beta (CalVer 26.05+) |
6468
| **Frontend (Angular)** | [`flyfront`](https://github.com/fireflyframework/flyfront) | Active Development |
6569
| **GenAI** | [`fireflyframework-genai`](https://github.com/fireflyframework/fireflyframework-genai) | Active Development |
6670
| **CLI (Go)** | [`fireflyframework-cli`](https://github.com/fireflyframework/fireflyframework-cli) | Active Development |

docs/cli.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,7 @@ Missing optional tools are shown with a `-` dash indicator (dimmed), while missi
645645
Verifies that PyFly itself is importable and displays the installed version:
646646

647647
```
648-
✓ pyfly v0.2.0-M11
648+
✓ pyfly v26.05.01
649649
```
650650

651651
### Summary

docs/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@ ______ ___.__._/ ____\ | ___.__.
470470
| __// ____| |__| |____/ ____|
471471
|__| \/ \/
472472
473-
PyFly v0.2.0-M11 | Python 3.12.0
473+
PyFly v26.05.01 | Python 3.12.0
474474
475475
2026-01-15T10:30:00Z [info] starting_application app=my-service version=0.1.0
476476
2026-01-15T10:30:00Z [info] no_active_profiles message=No active profiles set, falling back to default

docs/installation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ PyFly Doctor
509509
✓ mypy — Type checker
510510
511511
PyFly packages:
512-
✓ pyfly v0.2.0-M11
512+
✓ pyfly v26.05.01
513513
514514
All checks passed!
515515
```

docs/modules/core.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ class BannerMode(enum.Enum):
560560
| Mode | Behavior |
561561
|---|---|
562562
| `TEXT` | Full ASCII art banner (default) with a framework version line. |
563-
| `MINIMAL` | Single line: `:: PyFly :: (v0.2.0-M11)` |
563+
| `MINIMAL` | Single line: `:: PyFly :: (v26.05.01)` |
564564
| `OFF` | No banner output at all. |
565565

566566
### BannerPrinter Class
@@ -601,7 +601,7 @@ ______ ___.__._/ ____\ | ___.__.
601601
| __// ____| |__| |____/ ____|
602602
|__| \/ \/
603603
604-
:: PyFly Framework :: (v0.2.0-M11)
604+
:: PyFly Framework :: (v26.05.01)
605605
```
606606

607607
### Custom Banner Files

0 commit comments

Comments
 (0)