This is an automated email from the ASF dual-hosted git repository.
weilee pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 67cdaa43870 Add newsfragment for AIP-76 (#63419)
67cdaa43870 is described below
commit 67cdaa4387060db193953dd845e4b79e20bf5602
Author: Phani Kumar <[email protected]>
AuthorDate: Tue Mar 31 08:48:47 2026 +0530
Add newsfragment for AIP-76 (#63419)
---
airflow-core/newsfragments/aip-76.significant.rst | 36 +++++++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/airflow-core/newsfragments/aip-76.significant.rst
b/airflow-core/newsfragments/aip-76.significant.rst
new file mode 100644
index 00000000000..99c502e4a5c
--- /dev/null
+++ b/airflow-core/newsfragments/aip-76.significant.rst
@@ -0,0 +1,36 @@
+AIP-76: Asset Partitioning
+
+Airflow 3.2 introduces asset partitioning (time-based), allowing Dags to
produce and consume
+partitioned asset events identified by a ``partition_key`` (e.g.
``2026-03-10T09`` for
+an hourly partition).
+
+**New timetables**:
+
+- ``CronPartitionTimetable`` — schedules a producer Dag on a cron expression
and emits a
+ partitioned asset event on each run.
+- ``PartitionedAssetTimetable`` — schedules a consumer Dag when the expected
partitioned
+ asset events have arrived.
+
+**Partition mappers** transform upstream partition keys before passing them to
downstream Dags:
+
+- ``IdentityMapper`` — passes the key through unchanged (default).
+- ``StartOfHourMapper``, ``StartOfDayMapper``, ``StartOfWeekMapper``,
``StartOfMonthMapper``,
+ ``StartOfQuarterMapper``, ``StartOfYearMapper`` — normalize a datetime
partition key to a
+ coarser time granularity (e.g. ``StartOfDayMapper`` maps
``2026-03-10T09:30:00`` → ``2026-03-10``).
+- ``ProductMapper`` — applies a separate mapper to each ``|``-delimited
segment of a
+ composite key (e.g. ``ProductMapper(IdentityMapper(), StartOfDayMapper())``
maps
+ ``"us|2026-03-10T09:30:00"`` → ``"us|2026-03-10"``).
+- ``ChainMapper`` — applies mappers sequentially, passing each step's output
to the next (e.g.,
+ ``ChainMapper(StartOfHourMapper(),
StartOfDayMapper(input_format="%Y-%m-%dT%H"))`` maps
+ ``"2026-03-10T09:30:00"`` → ``"2026-03-10"``).
+- ``AllowedKeyMapper`` — validates the key is in a fixed allowlist and passes
it through
+ unchanged, raising ``ValueError`` otherwise (e.g.
+ ``AllowedKeyMapper(["us", "eu", "ap"])`` accepts ``"us"`` but rejects
``"cn"``).
+
+Mappers can be set globally on a ``PartitionedAssetTimetable`` or overridden
per upstream asset via ``partition_mapper_config``.
+
+Within the task context, the ``partition_key`` is available as
``dag_run.partition_key``. It can also be provided when manually triggering a
Dag run via the REST API (``POST /dags/{dag_id}/dagRuns``).
+
+* Migration rules needed
+
+ * None — asset partitioning is a new feature. Existing Dags and assets are
unaffected