Skip to content

[airflow-ctl/v0-1-test] airflowctl: make required CLI params position…#67387

Open
bugraoz93 wants to merge 1 commit into
apache:airflow-ctl/v0-1-testfrom
bugraoz93:backport-ffa426b-airflow-ctl/v0-1-test
Open

[airflow-ctl/v0-1-test] airflowctl: make required CLI params position…#67387
bugraoz93 wants to merge 1 commit into
apache:airflow-ctl/v0-1-testfrom
bugraoz93:backport-ffa426b-airflow-ctl/v0-1-test

Conversation

@bugraoz93
Copy link
Copy Markdown
Contributor

…al, keep optional as --flag (#66768)

  • airflowctl: make required CLI params positional, keep optional as --flag

Auto-generated commands such as airflowctl dags get-details now accept required primitive parameters positionally:

airflowctl dags get-details my_dag_id

instead of the previous --dag-id my_dag_id form. Optional parameters and booleans keep the --flag form.

This follows the dev-list lazy consensus on airflowctl parameter style.

A parameter is considered required when the operation method declares it without a default and without | None in its annotation. Datamodel- expanded body fields are unaffected — they are not "parameters of the operation method" in this sense and continue to use --flag.

  • tests: tmp_path fixture for command-factory; positional form for integration tests

Two follow-ups to the positional-required-args change:

  • TestCommandFactory._save_temp_operations_py previously wrote a shared test_command.py in cwd; under pytest-xdist that file is raced by workers, so next(arg for arg in jobs_list_args if ...) in one test could see content written by another and raise StopIteration. Helper now takes the per-test tmp_path and returns the full path. The classmethod teardown_method that removed the shared file is no longer needed (pytest auto-cleans tmp_path).

  • The Airflow CTL PROD-image integration tests still invoked converted parameters with the old --flag value form (e.g. --variable-key=X, --section X --option Y, --dag-id=example_bash_operator). Updated each occurrence to the positional form that the regenerated CLI now expects. Optional parameters (--logical-date, --run-after, --is-paused, --state, --limit, etc.) stay as --flag.


(cherry picked from commit ffa426b)


Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

  • Read the 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) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

…al, keep optional as --flag (apache#66768)

* airflowctl: make required CLI params positional, keep optional as --flag

Auto-generated commands such as ``airflowctl dags get-details`` now accept
required primitive parameters positionally:

    airflowctl dags get-details my_dag_id

instead of the previous ``--dag-id my_dag_id`` form. Optional parameters
and booleans keep the ``--flag`` form.

This follows the dev-list lazy consensus on airflowctl parameter style.

A parameter is considered required when the operation method declares it
without a default and without ``| None`` in its annotation. Datamodel-
expanded body fields are unaffected — they are not "parameters of the
operation method" in this sense and continue to use ``--flag``.

* tests: tmp_path fixture for command-factory; positional form for integration tests

Two follow-ups to the positional-required-args change:

- ``TestCommandFactory._save_temp_operations_py`` previously wrote a
  shared ``test_command.py`` in cwd; under pytest-xdist that file is
  raced by workers, so ``next(arg for arg in jobs_list_args if ...)``
  in one test could see content written by another and raise
  ``StopIteration``. Helper now takes the per-test ``tmp_path`` and
  returns the full path. The classmethod ``teardown_method`` that
  removed the shared file is no longer needed (pytest auto-cleans
  ``tmp_path``).

- The Airflow CTL PROD-image integration tests still invoked converted
  parameters with the old ``--flag value`` form (e.g.
  ``--variable-key=X``, ``--section X --option Y``,
  ``--dag-id=example_bash_operator``). Updated each occurrence to the
  positional form that the regenerated CLI now expects. Optional
  parameters (``--logical-date``, ``--run-after``, ``--is-paused``,
  ``--state``, ``--limit``, etc.) stay as ``--flag``.

Signed-off-by: 1fanwang <1fannnw@gmail.com>

---------
(cherry picked from commit ffa426b)

Co-authored-by: Stefan Wang <1fannnw@gmail.com>
Signed-off-by: 1fanwang <1fannnw@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants