kaxil opened a new pull request, #73900:
URL: https://github.com/apache/airflow/pull/73900

   `HookToolset` exposes the hook methods in `allowed_methods`, and until now 
the model chose every argument of those methods, including the ones that decide 
what it can reach, such as the bucket a storage hook reads. `pinned_arguments` 
fixes those values:
   
   ```python
   HookToolset(S3Hook(), allowed_methods=["list_keys", "read_key"], 
pinned_arguments={"bucket_name": "reports"})
   ```
   
   A pinned argument is left out of the schema the model sees and passed to 
every call. If the model supplies it anyway, the call is refused with an error 
it can read, rather than silently using the model's value. Each call gets its 
own copy of a pinned value, so a hook method that mutates a list or dict cannot 
change what the next call receives.
   
   **Pinning fails closed.** Every method in `allowed_methods` must name every 
pinned argument as a parameter it accepts by keyword, or the toolset raises 
`ValueError` when it is created. The alternative, skipping methods that don't 
take a pin, would leave the model free to choose that value on exactly the 
methods the Dag author didn't check, such as a `copy_object` whose destination 
bucket goes by another name.
   
   `pinned_arguments` is experimental and listed on the stability page.
   
   
   ---
   
   * Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
 for more information. Note: commit author/co-author name and email in commits 
become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License 
Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: 
`{pr_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
 You can add this file in a follow-up commit after the PR is created so you 
know the PR number.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to