modmex-lambda 0.5.0__tar.gz → 0.5.1__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 (228) hide show
  1. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/PKG-INFO +1 -1
  2. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/gateway_response.py +7 -2
  3. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/pyproject.toml +1 -1
  4. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_api_gateway.py +33 -0
  5. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_gateway_response.py +25 -0
  6. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/.github/workflows/ci.yml +0 -0
  7. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/.github/workflows/release.yml +0 -0
  8. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/.gitignore +0 -0
  9. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/LICENSE +0 -0
  10. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/README.md +0 -0
  11. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/__init__.py +0 -0
  12. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/__init__.py +0 -0
  13. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/cloudwatch.py +0 -0
  14. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/dynamodb.py +0 -0
  15. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/eventbridge.py +0 -0
  16. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/icloudwatch.py +0 -0
  17. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/idynamodb.py +0 -0
  18. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/ieventbridge.py +0 -0
  19. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/ilambda.py +0 -0
  20. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/is3.py +0 -0
  21. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/isns.py +0 -0
  22. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/isqs.py +0 -0
  23. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/lambda_.py +0 -0
  24. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/module.py +0 -0
  25. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/s3.py +0 -0
  26. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/sns.py +0 -0
  27. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/connectors/sqs.py +0 -0
  28. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/__init__.py +0 -0
  29. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/api_gateway_authorizer_event.py +0 -0
  30. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/api_gateway_proxy_event.py +0 -0
  31. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/api_gateway_websocket_event.py +0 -0
  32. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/cognito_user_pool_event.py +0 -0
  33. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/data_classes/common.py +0 -0
  34. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/dependencies.py +0 -0
  35. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/__init__.py +0 -0
  36. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/api_gateway.py +0 -0
  37. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/constants.py +0 -0
  38. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/content_types.py +0 -0
  39. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/cors.py +0 -0
  40. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/__init__.py +0 -0
  41. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/compat.py +0 -0
  42. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/dependant.py +0 -0
  43. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/dependency_middleware.py +0 -0
  44. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/depends.py +0 -0
  45. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/params.py +0 -0
  46. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/dependencies/types.py +0 -0
  47. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/exception_handler.py +0 -0
  48. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/exceptions.py +0 -0
  49. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/middlewares.py +0 -0
  50. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/params.py +0 -0
  51. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/request.py +0 -0
  52. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/response.py +0 -0
  53. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/routing.py +0 -0
  54. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/routing_fallbacks.py +0 -0
  55. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_handler/types.py +0 -0
  56. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/event_sources.py +0 -0
  57. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/exceptions.py +0 -0
  58. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/logging.py +0 -0
  59. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/params.py +0 -0
  60. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/parser.py +0 -0
  61. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/request.py +0 -0
  62. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/resolver.py +0 -0
  63. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/response.py +0 -0
  64. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/routing.py +0 -0
  65. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/shared/__init__.py +0 -0
  66. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/shared/cookies.py +0 -0
  67. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/shared/headers_serializer.py +0 -0
  68. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/shared/json_encoder.py +0 -0
  69. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/shared/types.py +0 -0
  70. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/__init__.py +0 -0
  71. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/__init__.py +0 -0
  72. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/dynamodb.py +0 -0
  73. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/kinesis.py +0 -0
  74. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/s3.py +0 -0
  75. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/sns.py +0 -0
  76. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/events/sqs.py +0 -0
  77. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/filters/__init__.py +0 -0
  78. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/filters/content.py +0 -0
  79. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/filters/event_type.py +0 -0
  80. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/filters/latch.py +0 -0
  81. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/filters/skip.py +0 -0
  82. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/__init__.py +0 -0
  83. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/base_flavor.py +0 -0
  84. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/cdc.py +0 -0
  85. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/collect.py +0 -0
  86. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/correlate.py +0 -0
  87. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/evaluate.py +0 -0
  88. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/expired.py +0 -0
  89. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/iflavor.py +0 -0
  90. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/job.py +0 -0
  91. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/materialize.py +0 -0
  92. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/s3.py +0 -0
  93. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/sns.py +0 -0
  94. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/task.py +0 -0
  95. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/flavors/update.py +0 -0
  96. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/irules_registry.py +0 -0
  97. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/__init__.py +0 -0
  98. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/cloudwatch.py +0 -0
  99. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/dynamodb.py +0 -0
  100. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/ioperator.py +0 -0
  101. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/lambda_.py +0 -0
  102. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/publisher.py +0 -0
  103. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/s3.py +0 -0
  104. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/sns.py +0 -0
  105. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/operators/sqs.py +0 -0
  106. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/rules_registry.py +0 -0
  107. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/runner.py +0 -0
  108. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/__init__.py +0 -0
  109. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/base.py +0 -0
  110. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/dynamodb.py +0 -0
  111. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/kinesis.py +0 -0
  112. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/s3.py +0 -0
  113. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/sns.py +0 -0
  114. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/sources/sqs.py +0 -0
  115. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/__init__.py +0 -0
  116. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/apigateway.py +0 -0
  117. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/aws.py +0 -0
  118. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/batch.py +0 -0
  119. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/cloudwatch.py +0 -0
  120. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/concurrency.py +0 -0
  121. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/contracts.py +0 -0
  122. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/data_classes/__init__.py +0 -0
  123. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/data_classes/dynamodb.py +0 -0
  124. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/decorators.py +0 -0
  125. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/dynamodb.py +0 -0
  126. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/eventbridge.py +0 -0
  127. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/faults.py +0 -0
  128. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/filters.py +0 -0
  129. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/json_encoder.py +0 -0
  130. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/lambda_.py +0 -0
  131. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/operators.py +0 -0
  132. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/pluralize.py +0 -0
  133. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/print.py +0 -0
  134. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/retry.py +0 -0
  135. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/s3.py +0 -0
  136. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/sns.py +0 -0
  137. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/split.py +0 -0
  138. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/sqs.py +0 -0
  139. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/tags.py +0 -0
  140. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/time.py +0 -0
  141. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/stream/utils/uow.py +0 -0
  142. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/tracing.py +0 -0
  143. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/modmex_lambda/validation.py +0 -0
  144. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/poetry.lock +0 -0
  145. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/__init__.py +0 -0
  146. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/conftest.py +0 -0
  147. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/__init__.py +0 -0
  148. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/conftest.py +0 -0
  149. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_cloudwatch.py +0 -0
  150. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_dynamodb.py +0 -0
  151. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_lazy_clients.py +0 -0
  152. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_s3.py +0 -0
  153. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_simple_connectors.py +0 -0
  154. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_sns.py +0 -0
  155. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/connectors/test_sqs.py +0 -0
  156. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/data_classes/test_api_gateway_proxy_event.py +0 -0
  157. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/data_classes/test_cognito_user_pool_event.py +0 -0
  158. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/data_classes/test_common.py +0 -0
  159. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/__init__.py +0 -0
  160. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_cors.py +0 -0
  161. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_dependencies.py +0 -0
  162. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_exception_handler.py +0 -0
  163. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_request.py +0 -0
  164. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_response.py +0 -0
  165. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/event_handler/test_routing.py +0 -0
  166. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/shared/test_cookies_headers.py +0 -0
  167. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/shared/test_json_encoder.py +0 -0
  168. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/__init__.py +0 -0
  169. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/conftest.py +0 -0
  170. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/events/test_dynamodb.py +0 -0
  171. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/events/test_kinesis.py +0 -0
  172. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/events/test_s3.py +0 -0
  173. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/events/test_sns.py +0 -0
  174. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/events/test_sqs.py +0 -0
  175. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/filters/__init__.py +0 -0
  176. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/filters/test_content.py +0 -0
  177. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/filters/test_event_type.py +0 -0
  178. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/filters/test_latch.py +0 -0
  179. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/filters/test_skip.py +0 -0
  180. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/__init__.py +0 -0
  181. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/source_events.py +0 -0
  182. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_base_flavor.py +0 -0
  183. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_cdc.py +0 -0
  184. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_collect.py +0 -0
  185. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_correlate.py +0 -0
  186. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_evaluate.py +0 -0
  187. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_expired.py +0 -0
  188. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_job.py +0 -0
  189. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_materialize.py +0 -0
  190. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_s3.py +0 -0
  191. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_sns.py +0 -0
  192. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_task.py +0 -0
  193. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/flavors/test_update.py +0 -0
  194. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/test_dependency_resolver.py +0 -0
  195. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/test_rules_registry.py +0 -0
  196. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/test_runner.py +0 -0
  197. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/test_runner_pipeline.py +0 -0
  198. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/test_sources.py +0 -0
  199. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/__init__.py +0 -0
  200. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/faults.py +0 -0
  201. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_apigateway.py +0 -0
  202. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_aws.py +0 -0
  203. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_batch.py +0 -0
  204. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_cloudwatch.py +0 -0
  205. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_concurrency.py +0 -0
  206. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_decorators.py +0 -0
  207. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_dynamodb.py +0 -0
  208. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_eventbridge.py +0 -0
  209. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_filters.py +0 -0
  210. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_json_encoder.py +0 -0
  211. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_lambda.py +0 -0
  212. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_operators.py +0 -0
  213. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_pluralize.py +0 -0
  214. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_print.py +0 -0
  215. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_retry.py +0 -0
  216. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_s3.py +0 -0
  217. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_sns.py +0 -0
  218. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_split.py +0 -0
  219. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_sqs.py +0 -0
  220. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_tags.py +0 -0
  221. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_time.py +0 -0
  222. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/stream/utils/test_uow.py +0 -0
  223. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_lazy_imports.py +0 -0
  224. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_logging.py +0 -0
  225. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_parser_event_sources.py +0 -0
  226. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_reexports.py +0 -0
  227. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_tracing.py +0 -0
  228. {modmex_lambda-0.5.0 → modmex_lambda-0.5.1}/tests/test_validation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modmex-lambda
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Summary: Ultra-lightweight AWS Lambda utilities for API Gateway routing and event handling.
5
5
  Author: Modmex
6
6
  License: MIT
@@ -20,8 +20,13 @@ class GatewayResponseBuilder:
20
20
  self.json_serializer = json_serializer
21
21
 
22
22
  def serialize(self, event: BaseProxyEvent, cors: CORSConfig | None = None) -> dict[str, Any]:
23
- if self.response.is_json() and not isinstance(self.response.body, (str, bytes)):
24
- self.response.body = self.json_serializer(self.response.body)
23
+ if self.response.body is None:
24
+ self.response.body = ""
25
+ elif self.response.is_json() and not isinstance(self.response.body, (str, bytes)):
26
+ if hasattr(self.response.body, "model_dump_json"):
27
+ self.response.body = self.response.body.model_dump_json()
28
+ else:
29
+ self.response.body = self.json_serializer(self.response.body)
25
30
 
26
31
  self._handle_route_configuration(event, cors)
27
32
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "modmex-lambda"
7
- version = "0.5.0"
7
+ version = "0.5.1"
8
8
  description = "Ultra-lightweight AWS Lambda utilities for API Gateway routing and event handling."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10,<4.0"
@@ -58,6 +58,11 @@ class AuditService:
58
58
  return {"user_id": user_id, "tenant_id": self.tenant_id}
59
59
 
60
60
 
61
+ class DumpJsonModel:
62
+ def model_dump_json(self) -> str:
63
+ return '{"ok":true}'
64
+
65
+
61
66
  def test_public_api_requires_explicit_api_gateway_resolver() -> None:
62
67
  assert modmex_lambda.APIGatewayHttpResolver is APIGatewayHttpResolver
63
68
  assert modmex_lambda.APIGatewayRestResolver is APIGatewayRestResolver
@@ -209,6 +214,34 @@ def test_http_resolver_serializes_cookies_in_http_api_shape() -> None:
209
214
  assert response_body(response) == {"ok": True}
210
215
 
211
216
 
217
+ def test_http_resolver_serializes_model_dump_json_body_without_double_encoding() -> None:
218
+ app = APIGatewayHttpResolver()
219
+
220
+ @app.get("/model")
221
+ def model():
222
+ return DumpJsonModel()
223
+
224
+ response = app.resolve(http_v2_event("GET", "/model"), object())
225
+
226
+ assert response["headers"]["Content-Type"] == "application/json"
227
+ assert response["body"] == '{"ok":true}'
228
+ assert response_body(response) == {"ok": True}
229
+
230
+
231
+ def test_http_resolver_serializes_no_content_response_with_empty_body() -> None:
232
+ app = APIGatewayHttpResolver()
233
+
234
+ @app.delete("/users/<user_id>", status_code=204)
235
+ def delete_user(user_id: str):
236
+ return None
237
+
238
+ response = app.resolve(http_v2_event("DELETE", "/users/42"), object())
239
+
240
+ assert response["statusCode"] == 204
241
+ assert response["body"] == ""
242
+ assert response_body(response) is None
243
+
244
+
212
245
  def test_static_dynamic_any_404_and_405_routing() -> None:
213
246
  app = APIGatewayHttpResolver()
214
247
 
@@ -44,3 +44,28 @@ def test_gateway_response_builder_uses_first_origin_and_response_compression_ove
44
44
  assert payload["isBase64Encoded"] is False
45
45
  assert payload["multiValueHeaders"]["Access-Control-Allow-Origin"] == ["*"]
46
46
  assert "Content-Encoding" not in payload["multiValueHeaders"]
47
+
48
+
49
+ def test_gateway_response_builder_serializes_none_body_as_empty_string() -> None:
50
+ event = APIGatewayProxyEvent(
51
+ {
52
+ "path": "/users/42",
53
+ "httpMethod": "DELETE",
54
+ "headers": {},
55
+ "multiValueHeaders": {},
56
+ "requestContext": {},
57
+ },
58
+ )
59
+ response = Response(
60
+ status_code=204,
61
+ body=None,
62
+ content_type=content_types.APPLICATION_JSON,
63
+ )
64
+
65
+ payload = GatewayResponseBuilder(
66
+ response=response,
67
+ route=None,
68
+ json_serializer=lambda value: "null",
69
+ ).serialize(event)
70
+
71
+ assert payload["body"] == ""
File without changes
File without changes
File without changes
File without changes