55Module that contains wrappers and shortcuts (aliases).
66"""
77import warnings
8+ import six
89
910from django_dynamic_fixture .ddf import DynamicFixture , Copier , DDFLibrary , \
1011 set_pre_save_receiver , set_post_save_receiver
@@ -57,7 +58,8 @@ def fixture(**kwargs):
5758
5859
5960# Wrappers
60- def new (model , n = 1 , lesson = None , persist_dependencies = True , ** kwargs ):
61+
62+ def _new (model , n = 1 , lesson = None , persist_dependencies = True , ** kwargs ):
6163 """
6264 Return one or many valid instances of Django Models with fields filled with auto generated or customized data.
6365 All instances will NOT be persisted in the database, except its dependencies, in case @persist_dependencies is True.
@@ -87,7 +89,7 @@ def new(model, n=1, lesson=None, persist_dependencies=True, **kwargs):
8789 return instances
8890
8991
90- def get (model , n = 1 , lesson = None , ** kwargs ):
92+ def _get (model , n = 1 , lesson = None , ** kwargs ):
9193 """
9294 Return one or many valid instances of Django Models with fields filled with auto generated or customized data.
9395 All instances will be persisted in the database.
@@ -116,7 +118,7 @@ def get(model, n=1, lesson=None, **kwargs):
116118 return instances
117119
118120
119- def teach (model , lesson = None , ** kwargs ):
121+ def _teach (model , lesson = None , ** kwargs ):
120122 '''
121123 @model: The class of the Django model.
122124 @lesson: Name of custom lesson to be created.
@@ -140,11 +142,37 @@ def teach(model, lesson=None, **kwargs):
140142
141143
142144# Shortcuts
143- N = new
144- G = get
145+ N = new = _new
146+ G = get = _get
147+ T = teach = _teach
145148F = fixture
146149C = Copier
147150P = print_field_values
148151DDFLibrary = DDFLibrary
149152PRE_SAVE = set_pre_save_receiver
150153POST_SAVE = set_post_save_receiver
154+
155+ if six .PY3 :
156+ # Add type hints for Python >= 3.5
157+ try :
158+ import typing
159+
160+ INSTANCE_TYPE = typing .TypeVar ('INSTANCE' )
161+
162+ hack_to_avoid_py2_syntax_errors = '''
163+ def new(model: typing.Type[INSTANCE_TYPE], n=1, lesson=None, persist_dependencies=True, **kwargs) -> INSTANCE_TYPE:
164+ return _new(model, n=n, lesson=lesson, persist_dependencies=persist_dependencies, **kwargs)
165+
166+ def get(model: typing.Type[INSTANCE_TYPE], n=1, lesson=None, **kwargs) -> INSTANCE_TYPE:
167+ return _get(model, n=n, lesson=lesson, **kwargs)
168+
169+ def teach(model: typing.Type[INSTANCE_TYPE], lesson=None, **kwargs):
170+ return _teach(model, lesson=lesson, **kwargs)
171+
172+ N = new
173+ G = get
174+ T = teach
175+ '''
176+ exec (hack_to_avoid_py2_syntax_errors )
177+ except (ImportError , SyntaxError ) as e :
178+ pass
0 commit comments