This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 107c1f70d08a9e3b214cc9b3cc7528f9f650fdf7
Author: Karthik S <[email protected]>
AuthorDate: Sun Sep 14 08:38:57 2025 +0530

    Add documentation for context parameter  (#55377)
    
    * Update operators.rst
    
    - Clarified usage of the `context` parameter in callables.
    - Expanded context variable documentation and examples.
    
    * Update operators.rst
    
    Incorporating feedback. Removing specific examples and adding link to the 
Context docs. Using typed dict for context.
    
    * Update operators.rst
    
    Added additional syntax
    
    * Update operators.rst
    
    - Clarified usage of the `context` parameter in callables.
    - Expanded context variable documentation and examples.
    
    * Update operators.rst
    
    Incorporating feedback. Removing specific examples and adding link to the 
Context docs. Using typed dict for context.
    
    * Update operators.rst
    
    Added additional syntax
    
    * Update operators.rst
    
    Pushing modifications based on review comments. Removing Git links as they 
are prone to changes and linking python specific code to its relevant docs on 
python.
    
    (cherry picked from commit 34b190791c2268f384842dbdcfc781a47ebedd5a)
---
 airflow-core/docs/core-concepts/operators.rst | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/airflow-core/docs/core-concepts/operators.rst 
b/airflow-core/docs/core-concepts/operators.rst
index 256613537b4..2e8b82713d3 100644
--- a/airflow-core/docs/core-concepts/operators.rst
+++ b/airflow-core/docs/core-concepts/operators.rst
@@ -84,11 +84,25 @@ Here, ``{{ ds }}`` is a templated variable, and because the 
``env`` parameter of
 
 You can also pass in a callable instead when Python is more readable than a 
Jinja template. The callable must accept two named arguments ``context`` and 
``jinja_env``:
 
+The ``context`` parameter is an Airflow's ``Context`` object that provides 
runtime information for the current task execution. Its contents can be 
accessed with Python's standard `dict syntax 
<https://docs.python.org/3/library/stdtypes.html#mapping-types-dict>`_. It 
includes all variables available in Jinja templates and is read-only from the 
perspective of template rendering - while you can access and use its values, 
modifications won't affect the task execution environment.
+
+For a complete list of available context variables see :ref:`Templates 
reference <templates:variables>`.
+
 .. code-block:: python
 
-    def build_complex_command(context, jinja_env):
+    from typing import TYPE_CHECKING
+
+    if TYPE_CHECKING:
+        import jinja2
+        from airflow.sdk import Context
+
+
+    def build_complex_command(context: Context, jinja_env: jinja2.Environment) 
-> str:
+        # Access runtime information from the context dictionary
+        task_id = context["ti"].task_id
+        execution_date = context["ds"]
         with open("file.csv") as f:
-            return do_complex_things(f)
+            return do_complex_things(f, task_id, execution_date)
 
 
     t = BashOperator(
@@ -101,7 +115,7 @@ Since each template field is only rendered once, the 
callable's return value wil
 
 .. code-block:: python
 
-    def build_complex_command(context, jinja_env):
+    def build_complex_command(context: Context, jinja_env: jinja2.Environment) 
-> str:
         with open("file.csv") as f:
             data = do_complex_things(f)
         return context["task"].render_template(data, context, jinja_env)

Reply via email to