Skip to content

Weasel serializes commands field as string #94

@caiorcferreira

Description

@caiorcferreira

Description

It looks like Weasel is reading commands as a string rather than a list. This causes access to the name field to raise the error TypeError: string indices must be integers.

Environment

Name Version Build Channel
weasel 0.3.4 py39hca03da5_0

Error

╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /opt/homebrew/Caskroom/miniconda/base/envs/spacy_dev_pt_core_chat_lg/lib/python3.9/site-packages │
│ /weasel/cli/run.py:42 in project_run_cli                                                         │
│                                                                                                  │
│    39 │   │   print_run_help(project_dir, subcommand, parent_command)                            │
│    40 │   else:                                                                                  │
│    41 │   │   overrides = parse_config_overrides(ctx.args)                                       │
│ ❱  42 │   │   project_run(                                                                       │
│    43 │   │   │   project_dir,                                                                   │
│    44 │   │   │   subcommand,                                                                    │
│    45 │   │   │   overrides=overrides,                                                           │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │            ctx = <click.core.Context object at 0x11b83e9a0>                                  │ │
│ │            dry = False                                                                       │ │
│ │          force = False                                                                       │ │
│ │      overrides = {                                                                           │ │
│ │                  │   'vars.experiment': 29,                                                  │ │
│ │                  │   'vars.enabled_gazetteers': 'person,address',                            │ │
│ │                  │   'vars.input_data':                                                      │ │
│ │                  'experiments/028/data/oversampled_merged_dataset.json',                     │ │
│ │                  │   'vars.address_gazetteer':                                               │ │
│ │                  'assets/datasets/addresses/pt_br_address-gazetter-2.jsonl'                  │ │
│ │                  }                                                                           │ │
│ │ parent_command = 'python -m weasel'                                                          │ │
│ │    project_dir = PosixPath('.')                                                              │ │
│ │      show_help = False                                                                       │ │
│ │     subcommand = 'experiment'                                                                │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /opt/homebrew/Caskroom/miniconda/base/envs/spacy_dev_pt_core_chat_lg/lib/python3.9/site-packages │
│ /weasel/cli/run.py:81 in project_run                                                             │
│                                                                                                  │
│    78 │   skip_requirements_check (bool): No longer used, deprecated.                            │
│    79 │   """                                                                                    │
│    80 │   config = load_project_config(project_dir, overrides=overrides)                         │
│ ❱  81 │   commands = {cmd["name"]: cmd for cmd in config.get("commands", [])}                    │
│    82 │   workflows = config.get("workflows", {})                                                │
│    83 │   validate_subcommand(list(commands.keys()), list(workflows.keys()), subcommand)         │
│    84                                                                                            │
│                                                                                                  │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │                 capture = False                                                              │ │
│ │                  config = {                                                                  │ │
│ │                           │   'title': 'NER portuguese chat',                                │ │
│ │                           │   'description': 'Project tunning NER component in portuguese    │ │
│ │                           model using chat corpus',                                          │ │
│ │                           │   'directories': [                                               │ │
│ │                           │   │   'assets',                                                  │ │
│ │                           │   │   'scripts',                                                 │ │
│ │                           │   │   'experiments',                                             │ │
│ │                           │   │   'baseline',                                                │ │
│ │                           │   │   'packages'                                                 │ │
│ │                           │   ],                                                             │ │
│ │                           │   'assets': [                                                    │ │
│ │                           │   │   {                                                          │ │
│ │                           │   │   │   'dest': 'assets/train.json',                           │ │
│ │                           │   │   │   'description': 'Training data'                         │ │
│ │                           │   │   },                                                         │ │
│ │                           │   │   {                                                          │ │
│ │                           │   │   │   'dest': 'assets/dev.json',                             │ │
│ │                           │   │   │   'description': 'Development data'                      │ │
│ │                           │   │   }                                                          │ │
│ │                           │   ],                                                             │ │
│ │                           │   'commands': '[{"name":"download","help":"Download the          │ │
│ │                           pretrained pipeline","script":["python '+5046,                     │ │
│ │                           │   'env': {},                                                     │ │
│ │                           │   'vars': {                                                      │ │
│ │                           │   │   'name': 'core_chat_lg',                                    │ │
│ │                           │   │   'lang': 'pt',                                              │ │
│ │                           │   │   'pipeline': 'pt_core_news_lg',                             │ │
│ │                           │   │   'version': '0.0.0',                                        │ │
│ │                           │   │   'dataset': 'raw.json',                                     │ │
│ │                           │   │   'train': 'train.json',                                     │ │
│ │                           │   │   'dev': 'dev.json',                                         │ │
│ │                           │   │   'test': 'test.json',                                       │ │
│ │                           │   │   'test_data':                                               │ │
│ │                           'assets/datasets/chats/sample-chats-manual-labeled-test.json',     │ │
│ │                           │   │   'input_data':                                              │ │
│ │                           'assets/datasets/chats/sample-chats-manual-labeled-train.json',    │ │
│ │                           │   │   ... +9                                                     │ │
│ │                           │   },                                                             │ │
│ │                           │   'workflows': {                                                 │ │
│ │                           │   │   'experiment': [                                            │ │
│ │                           │   │   │   'fetch-data',                                          │ │
│ │                           │   │   │   'split-data',                                          │ │
│ │                           │   │   │   'create-gazetteer',                                    │ │
│ │                           │   │   │   'convert',                                             │ │
│ │                           │   │   │   'train',                                               │ │
│ │                           │   │   │   'evaluate'                                             │ │
│ │                           │   │   ],                                                         │ │
│ │                           │   │   'experiment_search': [                                     │ │
│ │                           │   │   │   'fetch-data',                                          │ │
│ │                           │   │   │   'split-data',                                          │ │
│ │                           │   │   │   'create-gazetteer',                                    │ │
│ │                           │   │   │   'convert',                                             │ │
│ │                           │   │   │   'train-search',                                        │ │
│ │                           │   │   │   'evaluate'                                             │ │
│ │                           │   │   ],                                                         │ │
│ │                           │   │   'experiment_new': ['setup_experiment', 'create-config']    │ │
│ │                           │   }                                                              │ │
│ │                           }                                                                  │ │
│ │                     dry = False                                                              │ │
│ │                   force = False                                                              │ │
│ │               overrides = {                                                                  │ │
│ │                           │   'vars.experiment': 29,                                         │ │
│ │                           │   'vars.enabled_gazetteers': 'person,address',                   │ │
│ │                           │   'vars.input_data':                                             │ │
│ │                           'experiments/028/data/oversampled_merged_dataset.json',            │ │
│ │                           │   'vars.address_gazetteer':                                      │ │
│ │                           'assets/datasets/addresses/pt_br_address-gazetter-2.jsonl'         │ │
│ │                           }                                                                  │ │
│ │          parent_command = 'python -m weasel'                                                 │ │
│ │             project_dir = PosixPath('.')                                                     │ │
│ │ skip_requirements_check = False                                                              │ │
│ │              subcommand = 'experiment'                                                       │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│                                                                                                  │
│ /opt/homebrew/Caskroom/miniconda/base/envs/spacy_dev_pt_core_chat_lg/lib/python3.9/site-packages │
│ /weasel/cli/run.py:81 in <dictcomp>                                                              │
│                                                                                                  │
│    78 │   skip_requirements_check (bool): No longer used, deprecated.                            │
│    79 │   """                                                                                    │
│    80 │   config = load_project_config(project_dir, overrides=overrides)                         │
│ ❱  81 │   commands = {cmd["name"]: cmd for cmd in config.get("commands", [])}                    │
│    82 │   workflows = config.get("workflows", {})                                                │
│    83 │   validate_subcommand(list(commands.keys()), list(workflows.keys()), subcommand)         │
│    84                                                                                            │
│                                                                                                  │
│ ╭────────────────── locals ──────────────────╮                                                   │
│ │  .0 = <str_iterator object at 0x107dc13a0> │                                                   │
│ │ cmd = '['                                  │                                                   │
│ ╰────────────────────────────────────────────╯                                                   │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
TypeError: string indices must be integers

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions