diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-01-13 00:01:01 +0100 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-01-13 00:01:01 +0100 |
commit | 6329a894c0b148f1c8bba2ebf224201419cf44ff (patch) | |
tree | 936a0bd7673840016dc49ddad6f2618e0e4e66ca /factory | |
parent | c60c3106c700f5f42ad4fcf82f327da98ec5eb9e (diff) | |
download | factory-boy-6329a894c0b148f1c8bba2ebf224201419cf44ff.tar factory-boy-6329a894c0b148f1c8bba2ebf224201419cf44ff.tar.gz |
Add a PendingDeprecationWarning on associated class auto-discovery.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
Diffstat (limited to 'factory')
-rw-r--r-- | factory/base.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/factory/base.py b/factory/base.py index b2f437d..c17b7ce 100644 --- a/factory/base.py +++ b/factory/base.py @@ -22,6 +22,7 @@ import re import sys +import warnings from factory import containers @@ -156,29 +157,36 @@ class FactoryMetaClass(BaseFactoryMetaClass): if FACTORY_CLASS_DECLARATION in attrs: return attrs[FACTORY_CLASS_DECLARATION] + # No specific associated calss was given, and one was defined for our + # parent, use it. + if inherited is not None: + return inherited + if '__module__' in attrs: factory_module = sys.modules[attrs['__module__']] if class_name.endswith('Factory'): # Try a module lookup used_auto_discovery = True - associated_class_name = class_name[:-len('Factory')] - if associated_class_name: - # Class name was longer than just 'Factory'. - try: - return getattr(factory_module, associated_class_name) - except AttributeError: - pass + associated_name = class_name[:-len('Factory')] + if associated_name and hasattr(factory_module, associated_name): + warnings.warn( + "Auto-discovery of associated class is deprecated, and " + "will be removed in the future. Please set '%s = %s' " + "in the %s class definition." % ( + FACTORY_CLASS_DECLARATION, + associated_name, + class_name, + ), PendingDeprecationWarning) + + return getattr(factory_module, associated_name) # Unable to guess a good option; return the inherited class. - if inherited is not None: - return inherited - # Unable to find an associated class; fail. if used_auto_discovery: raise Factory.AssociatedClassError( FactoryMetaClass.ERROR_MESSAGE_AUTODISCOVERY.format( FACTORY_CLASS_DECLARATION, - associated_class_name, + associated_name, class_name, factory_module,)) else: |