Hello @potiuk 

I believe you wrote this script - [`prepare_provider_packages.py`](https://github.com/apache/airflow/blob/master/dev/provider_packages/prepare_provider_packages.py).

I am wondering if there is any reason why you did not use the standard library - [`argument.ArgumentParser`](https://docs.python.org/3/library/argparse.html) in this script?
https://docs.python.org/3/library/argparse.html
https://github.com/apache/airflow/blob/550395192929f86376151b4385cea6b8dfb76e8e/dev/provider_packages/prepare_provider_packages.py#L1518-L1552

This makes the code overly complex and, by the way, more prone to errors e.g.  ``usage()`` method describes the `--version-suffix-for-pypi` parameter, but we changed its name to `--version-suffix`.

What do you think to rewrite this script to use the standard library? Do we have a requirement that prevents this? I think of something similar to [my gist](https://gist.github.com/mik-laj/ff008718fc6cec9fe929731b8c62d6f8).

dev/provider_packages/prepare_provider_packages.py
provider_yaml_file_name = os.path.join(get_source_package_path(provider_package_id), "provider.yaml")
    if not os.path.exists(provider_yaml_file_name):
        raise Exception(f"The provider.yaml file is missing: {provider_yaml_file_name}")
    with open(provider_yaml_file_name) as provider_file:
        provider_info = yaml.safe_load(provider_file.read())
    stripped_provider_info = remove_extra_fields(provider_info)
    validate_provider_info_with_2_0_0_schema(stripped_provider_info)
    return stripped_provider_info
def update_generated_files_for_package(
    provider_package_id: str,
    current_release_version: str,
    version_suffix: str,
    imported_classes: List[str],
    backport_packages: bool,
    update_release_notes: bool,
    update_setup: bool,
) -> Tuple[int, int]:
    """
    Updates release notes (BACKPORT_PROVIDER_README.md/README.md) for the package.
    Returns Tuple of total number of entities and badly named entities.
    :param provider_package_id: id of the package
    :param current_release_version: release version:
    :param version_suffix: version suffix corresponding to the version in the code
    :param imported_classes - entities that have been imported from providers
    :param backport_packages: whether to prepare regular (False) or backport (True) packages
    :param update_release_notes: whether to update release notes
    :param update_setup: whether to update setup files
    :return: Tuple of total/bad number of entities
    """
    verify_provider_package(provider_package_id)