This is an automated email from the ASF dual-hosted git repository.
potiuk 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 d1bf2d4058 Add wildcard possibility to `package-filter` parametere
(#23672)
d1bf2d4058 is described below
commit d1bf2d405875537970d8025f14c962b0bf7717f1
Author: Jarek Potiuk <[email protected]>
AuthorDate: Thu May 12 19:23:38 2022 +0200
Add wildcard possibility to `package-filter` parametere (#23672)
the glob parameters (for example `apache-airflow-providers-*`) did
not work because only fixed list of parameters was allowed.
This PR converts the package-filter parameter to stop verifying the
value passed - so autocomplete continues to work but you should
still be able to use glob.
It also removes few places where the parameters were used with
`--` separator.
---
.../airflow_breeze/commands/developer_commands.py | 4 +--
.../src/airflow_breeze/utils/custom_param_types.py | 36 +++++++++++++++++++++-
.../build_provider_documentation.sh | 2 +-
.../howto/create-update-providers.rst | 4 +--
images/breeze/output-commands-hash.txt | 2 +-
5 files changed, 41 insertions(+), 7 deletions(-)
diff --git a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
index 2e36a422ec..3c3259b74e 100644
--- a/dev/breeze/src/airflow_breeze/commands/developer_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/developer_commands.py
@@ -59,7 +59,7 @@ from airflow_breeze.utils.common_options import (
option_verbose,
)
from airflow_breeze.utils.console import get_console
-from airflow_breeze.utils.custom_param_types import BetterChoice
+from airflow_breeze.utils.custom_param_types import BetterChoice,
NotVerifiedBetterChoice
from airflow_breeze.utils.docker_command_utils import (
check_docker_compose_version,
check_docker_is_running,
@@ -380,7 +380,7 @@ def start_airflow(
'-p',
'--package-filter',
help="List of packages to consider.",
- type=BetterChoice(get_available_packages()),
+ type=NotVerifiedBetterChoice(get_available_packages()),
multiple=True,
)
def build_docs(
diff --git a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
index 0dd2b87d67..c721fb03ea 100644
--- a/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
+++ b/dev/breeze/src/airflow_breeze/utils/custom_param_types.py
@@ -17,9 +17,10 @@
from dataclasses import dataclass
from re import match
-from typing import Any, Sequence
+from typing import Any, Optional, Sequence
import click
+from click import Context, Parameter
from airflow_breeze.utils.cache import (
check_if_values_allowed,
@@ -59,6 +60,39 @@ class BetterChoice(click.Choice):
return f"[{choices_str}]"
+class NotVerifiedBetterChoice(BetterChoice):
+ """
+ This parameter allows to pass parameters that do not pass verification by
choice. This is
+ useful to keep autocomplete working but also to allow some extra
parameters that are dynamic,
+ for example allowing glob in package names for docs building.
+ """
+
+ name = "NotVerifiedBetterChoice"
+
+ def convert(self, value: Any, param: Optional[Parameter], ctx:
Optional[Context]) -> Any:
+ # Match through normalization and case sensitivity
+ # first do token_normalize_func, then lowercase
+ normed_value = value
+ normed_choices = {choice: choice for choice in self.choices}
+
+ if ctx is not None and ctx.token_normalize_func is not None:
+ normed_value = ctx.token_normalize_func(value)
+ normed_choices = {
+ ctx.token_normalize_func(normed_choice): original
+ for normed_choice, original in normed_choices.items()
+ }
+
+ if not self.case_sensitive:
+ normed_value = normed_value.casefold()
+ normed_choices = {
+ normed_choice.casefold(): original for normed_choice, original
in normed_choices.items()
+ }
+
+ if normed_value in normed_choices:
+ return normed_choices[normed_value]
+ return normed_value
+
+
class AnswerChoice(BetterChoice):
"""
Stores forced answer if it has been selected
diff --git a/dev/provider_packages/build_provider_documentation.sh
b/dev/provider_packages/build_provider_documentation.sh
index a98c40dd38..0fca5162cf 100755
--- a/dev/provider_packages/build_provider_documentation.sh
+++ b/dev/provider_packages/build_provider_documentation.sh
@@ -28,7 +28,7 @@ do
provider_filters+=("--package-filter"
"apache-airflow-providers-${provider//./-}")
done
-./breeze build-docs -- \
+./breeze build-docs \
--for-production \
--package-filter apache-airflow-providers \
"${provider_filters[@]}"
diff --git a/docs/apache-airflow-providers/howto/create-update-providers.rst
b/docs/apache-airflow-providers/howto/create-update-providers.rst
index c81b99a73c..7dff12b452 100644
--- a/docs/apache-airflow-providers/howto/create-update-providers.rst
+++ b/docs/apache-airflow-providers/howto/create-update-providers.rst
@@ -281,8 +281,8 @@ main Airflow documentation that involves some steps with
the providers is also w
.. code-block:: bash
- ./breeze build-docs -- --package-filter
apache-airflow-providers-<NEW_PROVIDER>
- ./breeze build-docs -- --package-filter apache-airflow
+ ./breeze build-docs --package-filter
apache-airflow-providers-<NEW_PROVIDER>
+ ./breeze build-docs --package-filter apache-airflow
Optional provider features
--------------------------
diff --git a/images/breeze/output-commands-hash.txt
b/images/breeze/output-commands-hash.txt
index 147e2c5121..1030cc5119 100644
--- a/images/breeze/output-commands-hash.txt
+++ b/images/breeze/output-commands-hash.txt
@@ -1 +1 @@
-3f46d0eed5eb9a89ef7cee12ba5e6a3f
+513dc61480a9f3cc7619844251d7d6c4