yzhangcs / parser

:rocket: State-of-the-art parsers for natural language.
https://parser.yzhang.site/
MIT License
827 stars 139 forks source link

[Bugs] KeyError: 'loader' when print out Dataset object #63

Closed rootofmylife closed 3 years ago

rootofmylife commented 3 years ago

Hi, thank you for your amazing work.

Describe the bug: got KeyError when printing out Dataset object. This is because the 'loader' attribute only initializes when Dataset uses build(...) function.

File "/Users/Desktop/Dependency-Parsing/supar/utils/data.py", line 45, in __repr__
    if hasattr(self, 'loader'):
File "/Users/Desktop/Dependency-Parsing/supar/utils/data.py", line 66, in __getattr__
    return [getattr(sentence, name) for sentence in self.sentences]
File "/Users/Desktop/Dependency-Parsing/supar/utils/data.py", line 66, in <listcomp>
  return [getattr(sentence, name) for sentence in self.sentences]
File "/Users/Desktop/Dependency-Parsing/supar/utils/transform.py", line 111, in __getattr__
  return self.values[self.maps[name]]
KeyError: 'loader'

To reproduce: print out a Dataset object

Example:

train = Dataset(transform, args.train)
print(train)

Expected behavior: Dataset object can be printed out

Version: MacOS BigSur

yzhangcs commented 3 years ago

@rootofmylife Thank you for reporting this bug. I will fix this in the next release. So for now, don't print the dataset before it's initialized.