mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	Implement boto3 session use case and add tests
This commit is contained in:
		
							parent
							
								
									35a6f47aff
								
							
						
					
					
						commit
						dbc6393561
					
				|  | @ -150,18 +150,21 @@ class SchemaProcessorV1: | ||||||
|             return None |             return None | ||||||
| 
 | 
 | ||||||
|         for segment in segments[1:]: |         for segment in segments[1:]: | ||||||
|             if segment == 'as_int()': |             parentheses = '' | ||||||
|                 provider = provider.as_int() |             if '(' in segment and ')' in segment: | ||||||
|             elif segment == 'as_float()': |                 parentheses = segment[segment.find('('):segment.rfind(')')+1] | ||||||
|                 provider = provider.as_float() |                 segment = segment.replace(parentheses, '') | ||||||
|             elif segment.startswith('is_'):  # TODO | 
 | ||||||
|                 provider = provider.as_(str) |             try: | ||||||
|                 ... |                 provider = getattr(provider, segment) | ||||||
|             else: |             except AttributeError: | ||||||
|                 try: |                 # TODO | ||||||
|                     provider = getattr(provider, segment) |                 return None | ||||||
|                 except AttributeError: | 
 | ||||||
|                     return None |             if parentheses: | ||||||
|  |                 # TODO | ||||||
|  |                 provider = provider() | ||||||
|  | 
 | ||||||
|         return provider |         return provider | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										26
									
								
								tests/unit/samples/schemasample/container-boto3-session.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								tests/unit/samples/schemasample/container-boto3-session.yml
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | ||||||
|  | version: "1" | ||||||
|  | 
 | ||||||
|  | container: | ||||||
|  | 
 | ||||||
|  |   config: | ||||||
|  |     provider: Configuration | ||||||
|  | 
 | ||||||
|  |   session: | ||||||
|  |     provider: Singleton | ||||||
|  |     provides: boto3.session.Session | ||||||
|  |     kwargs: | ||||||
|  |       aws_access_key_id: container.config.aws_access_key_id | ||||||
|  |       aws_secret_access_key: container.config.aws_secret_access_key | ||||||
|  |       aws_session_token: container.config.aws_session_token | ||||||
|  | 
 | ||||||
|  |   s3_client: | ||||||
|  |     provider: Factory | ||||||
|  |     provides: container.session.provided.client.call() | ||||||
|  |     kwargs: | ||||||
|  |       service_name: s3 | ||||||
|  | 
 | ||||||
|  |   sqs_client: | ||||||
|  |     provider: Factory | ||||||
|  |     provides: container.session.provided.client.call() | ||||||
|  |     kwargs: | ||||||
|  |       service_name: sqs | ||||||
|  | @ -273,3 +273,13 @@ class TestSchemaMultipleContainersWithInlineProviders(unittest.TestCase): | ||||||
|         self.assertIs(photo_service1.s3, photo_service2.s3) |         self.assertIs(photo_service1.s3, photo_service2.s3) | ||||||
|         self.assertIs(photo_service1.s3, container.gateways.s3_client()) |         self.assertIs(photo_service1.s3, container.gateways.s3_client()) | ||||||
|         self.assertIs(photo_service2.s3, container.gateways.s3_client()) |         self.assertIs(photo_service2.s3, container.gateways.s3_client()) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TestSchemaBoto3Session(unittest.TestCase): | ||||||
|  | 
 | ||||||
|  |     def test(self): | ||||||
|  |         container = containers.DynamicContainer() | ||||||
|  |         container.from_yaml_schema(f'{_SAMPLES_DIR}/schemasample/container-boto3-session.yml') | ||||||
|  | 
 | ||||||
|  |         self.assertEqual(container.s3_client().__class__.__name__, 'S3') | ||||||
|  |         self.assertEqual(container.sqs_client().__class__.__name__, 'SQS') | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user