Кедро: Как передать параметры "списка" из командной строки? - PullRequest
0 голосов
/ 21 июня 2020

Я хотел бы управлять параметрами kedro через командную строку.

Согласно docs , kedro может указывать параметры времени выполнения следующим образом:

kedro run --params key:value
> {'key': 'value'}

Работает . Таким же образом я пытаюсь указать параметры list следующим образом:

kedro run --params keys:['value1']
> {'keys': '[value1]'}

Это не работает, потому что kedro прерывает not list, а str . Вероятно, этот ответ может быть связан.

Надеюсь упомянуть пару вещей, чтобы kedro оценивал параметры списка, такие как yaml.

Ответы [ 2 ]

1 голос
/ 22 июня 2020

В дополнение к ответу Zain, можно указать дополнительные параметры, используя конфигурацию CLI . Где config.yml будет выглядеть примерно так:

run:
  params:
    keys: [value1]

Но еще раз подчеркнем: мы настоятельно не рекомендуем добавлять сложные структуры в ваши дополнительные аргументы CLI. Предлагаемый способ - использовать для этого конфигурационные среды .

1 голос
/ 21 июня 2020

По умолчанию в командной строке kedro не приводятся параметры, кроме более простых типов numeri c. Более сложные параметры должны обрабатываться через файл parameters.yml.

Тем не менее, если вы действительно хотите это сделать, вы можете изменить свой kedro_cli.py для поддержки этого. В частности, вы хотите изменить функцию обратного вызова _split_params в файле. Самым простым здесь, вероятно, было бы изменить строку, которая читает

result[key] = _try_convert_to_numeric(value)

, которая обрабатывает парсинг простых типов numeri c, на

result[key] = json.loads(value)

, чтобы он мог анализировать более широкий диапазон типов. . То есть проанализируйте переданный вами параметр CLI как json (так что вам также нужно помнить о кавычках и убедиться, что вы передаете действительный синтаксис json.

Если это не так работы, вы можете попробовать добавить свой собственный синтаксис и проанализировать его в этой функции. Однако я рекомендую избегать зависимости от оценки строкового параметра fr agile из интерфейса командной строки и использовать вместо него parameters.yml.

...