textcat.manual showing error with correct argument syntax

This code works without any problem. It is from some old labeling exercise I worked on
python -m prodigy textcat.manual Test_5001_6000 Documents\prodigy\test\Test_5001_6000.jsonl --label "Positive, Negative, Neutral" --exclusive

However, a similar code below does not work. It is for a new labeling exercise
python -m prodigy textcat.manual senti_train_17a Documents\prodigy\train\senti_train_20200517_a.jsonl --label "Positive, Negative, Neutral" --exclusive

I get the following message:

Using 3 label(s): Positive, Negative, Neutral
✘ The textcat.manual arguments have changed in v1.9
It looks like you're passing in a spaCy model as the second argument, which is
not needed anymore (and wasn't used before). Try removing the argument and run
textcat.manual again. You can also run this command with --help or see the docs
for details.

Is there any difference that between the two codes? Am I missing something. I've looked over both codes so many times, I can't see what the difference is.

Hi! Looks like you hit a weird edge case in the logic Prodigy uses to check for the old syntax vs. new syntax. Sorry about that! Essentially, it's checking whether the second argument is a spaCy model by trying to load it, and if an IOError is raised, it shows you this message. But for whatever reason, this seems to produce a different error.

I don't fully understand why, but the easiest solution: run prodigy stats to find the location of your Prodigy installation and open the file prodigy/recipes/textcat.py. Remove the whole try/except block in manual, from # Check to show proper error message to pass. Then try again and it should work :slightly_smiling_face:

(For v1.10, I'll remove this check alltogether. It's been there for quite a while and only a small breaking change.)

Thanks so much. Removing that worked.

1 Like

Just released Prodigy v1.10, which, removes this hack and now only expects the new textcat.manual syntax :slightly_smiling_face: