@@ -62,6 +62,8 @@ system that consists from several business and platform services:
6262
6363 import  sqlite3 
6464 import  boto.s3.connection 
65+ 
66+  import  example.main 
6567 import  example.services 
6668
6769 import  dependency_injector.containers as  containers 
@@ -92,29 +94,38 @@ system that consists from several business and platform services:
9294 db = Platform.database, 
9395 s3 = Platform.s3) 
9496
95- @inject `` decorator with IoC containers 
96- defined above: 
9797
98- .. code-block :: python 
98+  class  Application (containers .DeclarativeContainer ): 
99+  """ IoC container of application component providers."""  
99100
100-  """ Dependency Injector @inject decorator example."""  
101+  main =  providers.Callable(example.main.main, 
102+  users_service = Services.users, 
103+  auth_service = Services.auth, 
104+  photos_service = Services.photos) 
101105
102-  import  application 
103-  import  dependency_injector.injections as  injections 
106+ 
104107
108+ .. code-block :: python 
105109
106-  @injections.inject (users_service = application.Services.users) 
107-  @injections.inject (auth_service = application.Services.auth) 
108-  @injections.inject (photos_service = application.Services.photos) 
109-  def  main (users_service , auth_service , photos_service ): 
110-  """ Main function."""  
111-  user =  users_service.get_user(' user'  
112-  auth_service.authenticate(user, ' secret'  
113-  photos_service.upload_photo(user[' id' ' photo.jpg'  
110+  """ Run example application."""  
111+ 
112+  import  containers 
114113
115114
116115 if  __name__  ==  ' __main__'  
117-  main() 
116+  containers.Application.main() 
117+ 
118+  #  Previous call is an equivalent of next operations: 
119+  #  
120+  #  database = sqlite3.connect(':memory:') 
121+  #  s3 = boto.s3.connection.S3Connection(aws_access_key_id='KEY', 
122+  #  aws_secret_access_key='SECRET') 
123+  #  
124+  #  example.main.main(users_service=example.services.Users(db=database), 
125+  #  auth_service=example.services.Auth(db=database, 
126+  #  token_ttl=3600), 
127+  #  photos_service=example.services.Photos(db=database, 
128+  #  s3=s3)) 
118129  
119130
120131~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
@@ -136,21 +147,6 @@ IoC containers from previous example could look like these:
136147 .add_kwargs(aws_access_key_id = ' KEY'  
137148 aws_secret_access_key = ' SECRET'  
138149
139- 
140-  class  Services (containers .DeclarativeContainer ): 
141-  """ IoC container of business service providers."""  
142- 
143-  users =  providers.Factory(example.services.Users) \ 
144-  .add_kwargs(db = Platform.database) 
145- 
146-  auth =  providers.Factory(example.services.Auth) \ 
147-  .add_kwargs(db = Platform.database, 
148-  token_ttl = 3600 ) 
149- 
150-  photos =  providers.Factory(example.services.Photos) \ 
151-  .add_kwargs(db = Platform.database, 
152-  s3 = Platform.s3) 
153- 
154150
155151
156152.. code-block :: python 
@@ -165,21 +161,6 @@ or like this these:
165161 s3.add_kwargs(aws_access_key_id = ' KEY'  
166162 aws_secret_access_key = ' SECRET'  
167163
168- 
169-  class  Services (containers .DeclarativeContainer ): 
170-  """ IoC container of business service providers."""  
171- 
172-  users =  providers.Factory(example.services.Users) 
173-  users.add_kwargs(db = Platform.database) 
174- 
175-  auth =  providers.Factory(example.services.Auth) 
176-  auth.add_kwargs(db = Platform.database, 
177-  token_ttl = 3600 ) 
178- 
179-  photos =  providers.Factory(example.services.Photos) 
180-  photos.add_kwargs(db = Platform.database, 
181-  s3 = Platform.s3) 
182- 
183164Dependency Injector * examples in ``/examples `` directory on
184165GitHub:
185166
0 commit comments