Simple-QA-EMNLP-2018 icon indicating copy to clipboard operation
Simple-QA-EMNLP-2018 copied to clipboard

TypeError: ArrayField.empty_field: return type `None` is not a `allennlp.data.fields.field.Field`.

Open kato8966 opened this issue 2 years ago • 0 comments

When I ran the third code cell in notebooks/Simple QA End-To-End/Step 1 - Predict Subject Name.ipynb, I got the following error.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-ab905cab6d01> in <module>
      1 import importlib
      2 import lib.import_notebook
----> 3 from allennlp.models.archival import load_archive
      4 from allennlp.service.predictors import Predictor
      5 

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/models/__init__.py in <module>
      4 """
      5 
----> 6 from allennlp.models.archival import archive_model, load_archive
      7 from allennlp.models.crf_tagger import CrfTagger
      8 from allennlp.models.decomposable_attention import DecomposableAttention

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/models/archival.py in <module>
     15 from allennlp.common import Params
     16 from allennlp.common.file_utils import cached_path
---> 17 from allennlp.models.model import Model, _DEFAULT_WEIGHTS
     18 
     19 logger = logging.getLogger(__name__)  # pylint: disable=invalid-name

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/models/model.py in <module>
     13 from allennlp.common.params import Params
     14 from allennlp.common.registrable import Registrable
---> 15 from allennlp.data import Instance, Vocabulary, Dataset
     16 from allennlp.nn import util
     17 from allennlp.nn.regularizers import RegularizerApplicator

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/__init__.py in <module>
----> 1 from allennlp.data.dataset import Dataset
      2 from allennlp.data.dataset_readers.dataset_reader import DatasetReader
      3 from allennlp.data.fields.field import DataArray, Field
      4 from allennlp.data.instance import Instance
      5 from allennlp.data.iterators.data_iterator import DataIterator

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/dataset.py in <module>
     11 import tqdm
     12 
---> 13 from allennlp.data.instance import Instance
     14 from allennlp.data.vocabulary import Vocabulary
     15 from allennlp.common.checks import ConfigurationError

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/instance.py in <module>
      1 from typing import Dict
      2 
----> 3 from allennlp.data.fields.field import DataArray, Field
      4 from allennlp.data.vocabulary import Vocabulary
      5 

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/fields/__init__.py in <module>
      5 
      6 from allennlp.data.fields.field import Field
----> 7 from allennlp.data.fields.array_field import ArrayField
      8 from allennlp.data.fields.index_field import IndexField
      9 from allennlp.data.fields.label_field import LabelField

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/fields/array_field.py in <module>
      9 
     10 
---> 11 class ArrayField(Field[numpy.ndarray]):
     12     """
     13     A class representing an array, which could have arbitrary dimensions.

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/allennlp/data/fields/array_field.py in ArrayField()
     44         return tensor if cuda_device == -1 else tensor.cuda(cuda_device)
     45 
---> 46     @overrides
     47     def empty_field(self):  # pylint: disable=no-self-use
     48         return ArrayField(numpy.array([], dtype="float32"))

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/overrides/overrides.py in overrides(method, check_signature, check_at_runtime)
     86     """
     87     if method is not None:
---> 88         return _overrides(method, check_signature, check_at_runtime)
     89     else:
     90         return functools.partial(

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/overrides/overrides.py in _overrides(method, check_signature, check_at_runtime)
    112                 return wrapper  # type: ignore
    113             else:
--> 114                 _validate_method(method, super_class, check_signature)
    115                 return method
    116     raise TypeError(f"{method.__qualname__}: No super class method found")

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/overrides/overrides.py in _validate_method(method, super_class, check_signature)
    133         and not isinstance(super_method, property)
    134     ):
--> 135         ensure_signature_is_compatible(super_method, method, is_static)
    136 
    137 

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/overrides/signature.py in ensure_signature_is_compatible(super_callable, sub_callable, is_static)
     91 
     92     if super_type_hints is not None and sub_type_hints is not None:
---> 93         ensure_return_type_compatibility(super_type_hints, sub_type_hints, method_name)
     94         ensure_all_kwargs_defined_in_sub(
     95             super_sig, sub_sig, super_type_hints, sub_type_hints, is_static, method_name

~/anaconda3/envs/emnlp/lib/python3.6/site-packages/overrides/signature.py in ensure_return_type_compatibility(super_type_hints, sub_type_hints, method_name)
    286     if not _issubtype(sub_return, super_return) and super_return is not None:
    287         raise TypeError(
--> 288             f"{method_name}: return type `{sub_return}` is not a `{super_return}`."
    289         )

TypeError: ArrayField.empty_field: return type `None` is not a `allennlp.data.fields.field.Field`.

I think it is due to the latest overrides package as discussed in here. If acceptable to you, I would be most grateful if you fix this error.

kato8966 avatar Dec 15 '21 09:12 kato8966