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

Reply via email to