acai-aws 2.2.7__tar.gz → 2.2.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (166) hide show
  1. {acai_aws-2.2.7 → acai_aws-2.2.9}/PKG-INFO +1 -1
  2. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/modes/directory.py +7 -3
  3. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/logger/common_logger.py +2 -1
  4. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/PKG-INFO +1 -1
  5. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/modes/test_directory.py +7 -0
  6. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/test_logger.py +26 -1
  7. {acai_aws-2.2.7 → acai_aws-2.2.9}/LICENSE +0 -0
  8. {acai_aws-2.2.7 → acai_aws-2.2.9}/README.md +0 -0
  9. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/__init__.py +0 -0
  10. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/__init__.py +0 -0
  11. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/__main__.py +0 -0
  12. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/config_validator.py +0 -0
  13. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/endpoint.py +0 -0
  14. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/exception.py +0 -0
  15. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/request.py +0 -0
  16. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/requirements.py +0 -0
  17. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/__init__.py +0 -0
  18. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/cache.py +0 -0
  19. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/importer.py +0 -0
  20. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/modes/__init__.py +0 -0
  21. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/modes/base.py +0 -0
  22. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/modes/mapping.py +0 -0
  23. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/resolver/modes/pattern.py +0 -0
  24. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/response.py +0 -0
  25. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/apigateway/router.py +0 -0
  26. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/base/__init__.py +0 -0
  27. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/base/event.py +0 -0
  28. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/base/no_data.py +0 -0
  29. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/base/placeholder.py +0 -0
  30. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/base/record.py +0 -0
  31. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/__init__.py +0 -0
  32. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/json_helper.py +0 -0
  33. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/logger/__init__.py +0 -0
  34. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/logger/decorator.py +0 -0
  35. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/records/__init__.py +0 -0
  36. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/records/event.py +0 -0
  37. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/records/exception.py +0 -0
  38. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/records/record.py +0 -0
  39. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/records/requirements.py +0 -0
  40. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/schema.py +0 -0
  41. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/common/validator.py +0 -0
  42. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/documentdb/__init__.py +0 -0
  43. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/documentdb/event.py +0 -0
  44. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/documentdb/record.py +0 -0
  45. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/documentdb/requirements.py +0 -0
  46. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/dynamodb/__init__.py +0 -0
  47. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/dynamodb/event.py +0 -0
  48. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/dynamodb/record.py +0 -0
  49. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/dynamodb/requirements.py +0 -0
  50. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/firehose/__init__.py +0 -0
  51. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/firehose/event.py +0 -0
  52. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/firehose/record.py +0 -0
  53. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/firehose/requirements.py +0 -0
  54. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/generic/__init__.py +0 -0
  55. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/generic/event.py +0 -0
  56. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/generic/requirements.py +0 -0
  57. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/kinesis/__init__.py +0 -0
  58. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/kinesis/event.py +0 -0
  59. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/kinesis/record.py +0 -0
  60. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/kinesis/requirements.py +0 -0
  61. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/mq/__init__.py +0 -0
  62. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/mq/event.py +0 -0
  63. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/mq/record.py +0 -0
  64. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/mq/requirements.py +0 -0
  65. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/msk/__init__.py +0 -0
  66. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/msk/event.py +0 -0
  67. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/msk/record.py +0 -0
  68. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/msk/requirements.py +0 -0
  69. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/s3/__init__.py +0 -0
  70. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/s3/event.py +0 -0
  71. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/s3/record.py +0 -0
  72. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/s3/requirements.py +0 -0
  73. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sns/__init__.py +0 -0
  74. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sns/event.py +0 -0
  75. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sns/record.py +0 -0
  76. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sns/requirements.py +0 -0
  77. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sqs/__init__.py +0 -0
  78. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sqs/event.py +0 -0
  79. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sqs/record.py +0 -0
  80. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws/sqs/requirements.py +0 -0
  81. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/SOURCES.txt +0 -0
  82. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/dependency_links.txt +0 -0
  83. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/not-zip-safe +0 -0
  84. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/requires.txt +0 -0
  85. {acai_aws-2.2.7 → acai_aws-2.2.9}/acai_aws.egg-info/top_level.txt +0 -0
  86. {acai_aws-2.2.7 → acai_aws-2.2.9}/setup.cfg +0 -0
  87. {acai_aws-2.2.7 → acai_aws-2.2.9}/setup.py +0 -0
  88. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/__init__.py +0 -0
  89. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/__init__.py +0 -0
  90. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/__init__.py +0 -0
  91. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/__init__.py +0 -0
  92. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/handler/__init__.py +0 -0
  93. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/handler/test_importer.py +0 -0
  94. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/handler/test_module.py +0 -0
  95. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/handler/test_scanner.py +0 -0
  96. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/input/__init__.py +0 -0
  97. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/input/test_arguments.py +0 -0
  98. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/input/test_validator.py +0 -0
  99. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/test_file_writer.py +0 -0
  100. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/openapi/test_generator.py +0 -0
  101. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/__init__.py +0 -0
  102. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/modes/__init__.py +0 -0
  103. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/modes/test_mapping.py +0 -0
  104. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/modes/test_pattern.py +0 -0
  105. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/test_cacher.py +0 -0
  106. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/test_importer.py +0 -0
  107. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/resolver/test_init.py +0 -0
  108. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/router/__init__.py +0 -0
  109. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/router/test_directory_router.py +0 -0
  110. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/router/test_mapping_router.py +0 -0
  111. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/router/test_pattern_router.py +0 -0
  112. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/router/test_timeout.py +0 -0
  113. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_config_validator.py +0 -0
  114. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_endpoint.py +0 -0
  115. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_main.py +0 -0
  116. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_request.py +0 -0
  117. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_requirements.py +0 -0
  118. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/apigateway/test_response.py +0 -0
  119. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/__init__.py +0 -0
  120. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/records/__init__.py +0 -0
  121. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/records/test_event.py +0 -0
  122. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/records/test_record.py +0 -0
  123. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/records/test_requirements.py +0 -0
  124. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/test_json_helper.py +0 -0
  125. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/test_schema.py +0 -0
  126. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/common/test_validator.py +0 -0
  127. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/documentdb/__init__.py +0 -0
  128. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/documentdb/test_event.py +0 -0
  129. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/documentdb/test_record.py +0 -0
  130. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/documentdb/test_requirements.py +0 -0
  131. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/dynamodb/__init__.py +0 -0
  132. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/dynamodb/test_event.py +0 -0
  133. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/dynamodb/test_record.py +0 -0
  134. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/dynamodb/test_requirements.py +0 -0
  135. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/firehose/__init__.py +0 -0
  136. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/firehose/test_event.py +0 -0
  137. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/firehose/test_record.py +0 -0
  138. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/firehose/test_requirements.py +0 -0
  139. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/generic/__init__.py +0 -0
  140. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/generic/test_event.py +0 -0
  141. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/generic/test_requirements.py +0 -0
  142. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/kinesis/__init__.py +0 -0
  143. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/kinesis/test_event.py +0 -0
  144. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/kinesis/test_record.py +0 -0
  145. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/kinesis/test_requirements.py +0 -0
  146. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/mq/__init__.py +0 -0
  147. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/mq/test_event.py +0 -0
  148. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/mq/test_record.py +0 -0
  149. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/mq/test_requirements.py +0 -0
  150. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/msk/__init__.py +0 -0
  151. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/msk/test_event.py +0 -0
  152. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/msk/test_record.py +0 -0
  153. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/msk/test_requirements.py +0 -0
  154. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/s3/__init__.py +0 -0
  155. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/s3/test_event.py +0 -0
  156. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/s3/test_record.py +0 -0
  157. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/s3/test_requirements.py +0 -0
  158. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sns/__init__.py +0 -0
  159. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sns/test_event.py +0 -0
  160. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sns/test_record.py +0 -0
  161. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sns/test_requirements.py +0 -0
  162. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sqs/__init__.py +0 -0
  163. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sqs/test_event.py +0 -0
  164. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sqs/test_record.py +0 -0
  165. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/acai_aws/sqs/test_requirements.py +0 -0
  166. {acai_aws-2.2.7 → acai_aws-2.2.9}/tests/mocks/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acai_aws
3
- Version: 2.2.7
3
+ Version: 2.2.9
4
4
  Summary: DRY, configurable, declarative framework for building AWS Lambda APIs and event processors
5
5
  Home-page: https://github.com/syngenta/acai-python
6
6
  Author: Paul Cruse III
@@ -4,11 +4,15 @@ from acai_aws.apigateway.exception import ApiException
4
4
 
5
5
  class DirectoryModeResolver(BaseModeResolver):
6
6
 
7
+ INIT_FILE = '__init__.py'
8
+
7
9
  def __init__(self, **kwargs):
8
10
  super().__init__(**kwargs)
9
11
  self.__handler_path = self.importer.clean_path(kwargs['handlers'])
10
12
 
11
13
  def _get_file_and_import_path(self, request_path):
14
+ # ensure previous lookups don't leave behind path/dynamic state
15
+ self.reset()
12
16
  split_path = self.get_request_path_as_list(request_path)
13
17
  route_path = self.__get_route_path(split_path)
14
18
  file_path = self.__handler_path + self.importer.file_separator + route_path
@@ -25,7 +29,7 @@ class DirectoryModeResolver(BaseModeResolver):
25
29
  part = split_path[split_index]
26
30
  if part == '':
27
31
  possible_directory = None
28
- possible_file = '__init__.py'
32
+ possible_file = self.INIT_FILE
29
33
  else:
30
34
  possible_directory = part.replace('-', '_')
31
35
  possible_file = f'{possible_directory}.py'
@@ -44,7 +48,7 @@ class DirectoryModeResolver(BaseModeResolver):
44
48
  file_leaf = self.determine_which_file_leaf(file_tree, possible_directory)
45
49
  self.__get_import_path_file_tree(split_path, split_index+1, file_leaf)
46
50
  else:
47
- self.append_import_path('__init__.py')
51
+ self.append_import_path(self.INIT_FILE)
48
52
 
49
53
  def __handle_file_path_part(self, possible_file, split_path, split_index, file_tree):
50
54
  self.append_import_path(possible_file)
@@ -55,7 +59,7 @@ class DirectoryModeResolver(BaseModeResolver):
55
59
  file_part = list(file_tree['__dynamic_files'])[0]
56
60
  self.append_import_path(file_part)
57
61
  if '.py' not in file_part and split_index+1 == len(split_path):
58
- self.append_import_path('__init__.py')
62
+ self.append_import_path(self.INIT_FILE)
59
63
  file_leaf = self.determine_which_file_leaf(file_tree, file_part)
60
64
  self.has_dynamic_route = True
61
65
  self.dynamic_parts[split_index] = split_path[split_index]
@@ -10,7 +10,8 @@ class CommonLogger:
10
10
 
11
11
  def __init__(self):
12
12
  self.__json = jsonpickle
13
- self.__format = os.getenv('LOG_FORMAT', 'JSON')
13
+ env_format = os.getenv('LOG_FORMAT', 'JSON') or 'JSON'
14
+ self.__format = env_format.strip().upper()
14
15
  self.__log_level = os.getenv('LOG_LEVEL', 'INFO')
15
16
  self.__json.set_encoder_options('simplejson', use_decimal=True)
16
17
  self.__json.set_preferred_backend('simplejson')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: acai_aws
3
- Version: 2.2.7
3
+ Version: 2.2.9
4
4
  Summary: DRY, configurable, declarative framework for building AWS Lambda APIs and event processors
5
5
  Home-page: https://github.com/syngenta/acai-python
6
6
  Author: Paul Cruse III
@@ -121,3 +121,10 @@ class DirectoryModeResolverTest(unittest.TestCase):
121
121
  file_path, import_path = self.directory_resolver._get_file_and_import_path(request.path)
122
122
  self.assertTrue('tests/mocks/apigateway/resolver/directory_handlers/user/_user_id/item/_item_id.py' in file_path)
123
123
  self.assertEqual('tests.mocks.apigateway.resolver.directory_handlers.user._user_id.item._item_id', import_path)
124
+
125
+ def test_repeated_directory_request_resets_import_path(self):
126
+ request = Request(self.init_request)
127
+ first_file_path, first_import_path = self.directory_resolver._get_file_and_import_path(request.path)
128
+ second_file_path, second_import_path = self.directory_resolver._get_file_and_import_path(request.path)
129
+ self.assertEqual(first_file_path, second_file_path)
130
+ self.assertEqual(first_import_path, second_import_path)
@@ -1,4 +1,7 @@
1
+ import io
2
+ import json
1
3
  import os
4
+ from contextlib import redirect_stdout
2
5
  from unittest import TestCase, mock
3
6
 
4
7
  from acai_aws.common import logger
@@ -54,6 +57,29 @@ class LoggerTest(TestCase):
54
57
  except Exception as error:
55
58
  logger.log(level='ERROR', log=error)
56
59
 
60
+ @mock.patch.dict(os.environ, {'RUN_MODE': 'SEE-LOGS', 'LOG_STAGE_VARIABLE': 'STAGE', 'STAGE': 'local', 'LOG_FORMAT': ' inline '})
61
+ def test_logger_logs_error_inline_with_messy_env(self):
62
+ logger.log(level='INFO', log={'message': 'inline-format'})
63
+
64
+ @mock.patch.dict(os.environ, {'RUN_MODE': 'SEE-LOGS', 'LOG_STAGE_VARIABLE': 'STAGE', 'STAGE': 'local', 'LOG_FORMAT': 'JSON'})
65
+ def test_logger_json_output(self):
66
+ buffer = io.StringIO()
67
+ with redirect_stdout(buffer):
68
+ logger.log(level='WARN', log={'json': True})
69
+ log_output = buffer.getvalue().strip()
70
+ parsed = json.loads(log_output)
71
+ self.assertEqual('WARN', parsed['level'])
72
+ self.assertEqual({'json': True}, parsed['log'])
73
+
74
+ @mock.patch.dict(os.environ, {'RUN_MODE': 'SEE-LOGS', 'LOG_STAGE_VARIABLE': 'STAGE', 'STAGE': 'local', 'LOG_FORMAT': 'INLINE'})
75
+ def test_logger_inline_output(self):
76
+ buffer = io.StringIO()
77
+ with redirect_stdout(buffer):
78
+ logger.log(level='INFO', log={'inline': True})
79
+ log_output = buffer.getvalue().strip()
80
+ self.assertTrue(log_output.startswith('INFO|'))
81
+ self.assertIn("inline': True", log_output)
82
+
57
83
  @mock.patch.dict(os.environ, {'RUN_MODE': 'SEE-LOGS', 'LOG_STAGE_VARIABLE': 'STAGE', 'STAGE': 'local'})
58
84
  def test_logger_logs_error_as_object(self):
59
85
  try:
@@ -96,4 +122,3 @@ class LoggerTest(TestCase):
96
122
  @mock.patch.dict(os.environ, {'RUN_MODE': 'SEE-LOGS', 'LOG_STAGE_VARIABLE': 'STAGE', 'STAGE': 'local', 'LOG_LEVEL': 'ERROR', 'LOG_FORMAT': 'BAD'})
97
123
  def test_logger_handles_bad_format(self):
98
124
  logger.log(level='INFO', log={'INFO': 'ignore'})
99
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes