From 67350fa4962125a61240fd46d8146f1ca900310c Mon Sep 17 00:00:00 2001 From: ines Date: Tue, 10 Oct 2017 04:23:05 +0200 Subject: [PATCH] Use better logic for auto-generating component name Instances don't have __name__, so we try __class__.__name__ as well, before giving up and defaulting to repr(component). --- spacy/language.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/spacy/language.py b/spacy/language.py index d40aee3ca..6d39fcd69 100644 --- a/spacy/language.py +++ b/spacy/language.py @@ -224,7 +224,14 @@ class Language(object): >>> nlp.add_pipe(component, name='custom_name', last=True) """ if name is None: - name = getattr(component, 'name', component.__name__) + if hasattr(component, 'name'): + name = component.name + elif hasattr(component, '__name__'): + name = component.__name__ + elif hasattr(component, '__class__') and hasattr(component.__class__, '__name__'): + name = component.__class__.__name__ + else: + name = repr(component) if name in self.pipe_names: raise ValueError("'{}' already exists in pipeline.".format(name)) if sum([bool(before), bool(after), bool(first), bool(last)]) >= 2: