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
"""
    Returns all provider packages.
    """
    return list(PROVIDERS_REQUIREMENTS.keys())
def usage() -> None:
    """
    Prints usage for the package.
    """
    print()
    print("You should provide PACKAGE as first of the setup.py arguments")
    packages = get_provider_packages()
    out = ""
    for package in packages:
        out += f"{package} "
    out_array = textwrap.wrap(out, 80)
    print("Available packages: ")
    print()
    for text in out_array:
        print(text)
    print()
    print("Additional commands:")
    print()
    print("  list-providers-packages       - lists all provider packages")
    print("  list-backportable-packages    - lists all packages that are backportable")
    print("  update-package-release-notes [YYYY.MM.DD] [PACKAGES] - updates package release notes")
    print("  generate-setup-files PACKAGES - generates setup files for the package")
    print("  --version-suffix-for-pypi <SUFFIX>  - adds version suffix to version of the packages.")
    print("                                        Only useful when generating RC candidates for PyPI.")
    print()
def is_imported_from_same_module(the_class: str, imported_name: str) -> bool: