Использование пакетов ресурсов Databricks с типером вместо argparsePython

Программы на Python
Ответить
Anonymous
 Использование пакетов ресурсов Databricks с типером вместо argparse

Сообщение Anonymous »

Я хочу использовать пакеты ресурсов Databricks — я хотел бы использовать typer в качестве инструмента CLI, но мне удалось настроить его только с помощью argparse. Похоже, что Argparse может получить аргументы из задачи databricks, но не типограф.
Я указал две точки входа в своем pyproject.toml

Код: Выделить всё

[tool.poetry.scripts]
mypackage_ep_typer = "my_package.entrypoint_typer:main"
mypackage_ep_argparse = "my_package.entrypoint_argparse:entrypoint_generic"
Я могу использовать пакеты ресурсов с точкой входа в свои приложения ELTL с помощью argparse, как показано ниже в entrypoint_argparse.py:

Код: Выделить всё

def entrypoint_generic():
"""Execute the application."""
logger.info("Executing 'argparse' entrypoint...")
parser = argparse.ArgumentParser(description="My module.")
parser.add_argument(
"--applicationname",
help="The name of the application to execute.",
type=str,
required=True,
dest="applicationname",
)
args = parser.parse_args()
logger.info(f"{args.applicationname=}")
Этот вариант развертывается и запускается без каких-либо проблем в задаче рабочего процесса пакета ресурсов.
Однако, если я попробую то же самое с typer в enterpoint_typer.py, я не могу заставить его работать:

Код: Выделить всё

def main(
applicationname: Annotated[str, typer.Option(help="Application to execute.")]
):
"""Execute the application."""
logger.info("Executing 'typer' entrypoint...")
logger.info(f"{applicationname=}")
Я могу запустить Typer локально:

Код: Выделить всё

> poetry run python -m typer .\entrypoint_typer.py run --applicationname MYAPPNAME
2024-11-06 xx:xx:xx - root - INFO - Executing 'typer' entrypoint...
2024-11-06 xx:xx:xx - root - INFO - applicationname='MYAPPNAME'
Но когда я пытаюсь развернуть и запустить свой пакет ресурсов, я получаю эту ошибку при попытке запуска задачи рабочего процесса:

Код: Выделить всё

TypeError: main() missing 1 required positional argument: 'applicationname'
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... f-argparse
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»