Skip to content

Files

Failed to load latest commit information.

Latest commit

 Cannot retrieve latest commit at this time.

History

History

0.8.0-0.9.0

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Comparing tmp/faster-sam-0.8.0.tar.gz & tmp/faster-sam-0.9.0.tar.gz

filetype from file(1)

@@ -1 +1 @@
-gzip compressed data, was "faster-sam-0.8.0.tar", last modified: Wed Mar 13 14:23:40 2024, max compression
+gzip compressed data, was "faster-sam-0.9.0.tar", last modified: Wed Mar 20 20:03:24 2024, max compression

Comparing faster-sam-0.8.0.tar & faster-sam-0.9.0.tar

file list

@@ -1,42 +1,42 @@
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.734917 faster-sam-0.8.0/
--rw-r--r--   0 runner    (1001) docker     (127)     1064 2024-03-13 14:23:34.000000 faster-sam-0.8.0/LICENSE
--rw-r--r--   0 runner    (1001) docker     (127)     1876 2024-03-13 14:23:40.734917 faster-sam-0.8.0/PKG-INFO
--rw-r--r--   0 runner    (1001) docker     (127)     1175 2024-03-13 14:23:34.000000 faster-sam-0.8.0/README.md
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.730917 faster-sam-0.8.0/faster_sam/
--rw-r--r--   0 runner    (1001) docker     (127)       49 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/__init__.py
--rw-r--r--   0 runner    (1001) docker     (127)     8629 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/adapter.py
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.730917 faster-sam-0.8.0/faster_sam/cache/
--rw-r--r--   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/cache/__init__.py
--rw-r--r--   0 runner    (1001) docker     (127)     1636 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/cache/cache_interface.py
--rw-r--r--   0 runner    (1001) docker     (127)     2945 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/cache/redis_cache.py
--rw-r--r--   0 runner    (1001) docker     (127)     8044 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/cloudformation.py
--rw-r--r--   0 runner    (1001) docker     (127)     6891 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/lambda_event.py
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.730917 faster-sam-0.8.0/faster_sam/middlewares/
--rw-r--r--   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/middlewares/__init__.py
--rw-r--r--   0 runner    (1001) docker     (127)    12385 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/middlewares/lambda_authorizer.py
--rw-r--r--   0 runner    (1001) docker     (127)     1673 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/middlewares/remove_path.py
--rw-r--r--   0 runner    (1001) docker     (127)     1801 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/middlewares/rewrite_path.py
--rw-r--r--   0 runner    (1001) docker     (127)     2839 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/openapi.py
--rw-r--r--   0 runner    (1001) docker     (127)     2951 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/routing.py
--rw-r--r--   0 runner    (1001) docker     (127)     1174 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/utils.py
--rw-r--r--   0 runner    (1001) docker     (127)     4108 2024-03-13 14:23:34.000000 faster-sam-0.8.0/faster_sam/web_identity_providers.py
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.734917 faster-sam-0.8.0/faster_sam.egg-info/
--rw-r--r--   0 runner    (1001) docker     (127)     1876 2024-03-13 14:23:40.000000 faster-sam-0.8.0/faster_sam.egg-info/PKG-INFO
--rw-r--r--   0 runner    (1001) docker     (127)      973 2024-03-13 14:23:40.000000 faster-sam-0.8.0/faster_sam.egg-info/SOURCES.txt
--rw-r--r--   0 runner    (1001) docker     (127)        1 2024-03-13 14:23:40.000000 faster-sam-0.8.0/faster_sam.egg-info/dependency_links.txt
--rw-r--r--   0 runner    (1001) docker     (127)       91 2024-03-13 14:23:40.000000 faster-sam-0.8.0/faster_sam.egg-info/requires.txt
--rw-r--r--   0 runner    (1001) docker     (127)       11 2024-03-13 14:23:40.000000 faster-sam-0.8.0/faster_sam.egg-info/top_level.txt
--rw-r--r--   0 runner    (1001) docker     (127)      692 2024-03-13 14:23:34.000000 faster-sam-0.8.0/pyproject.toml
--rw-r--r--   0 runner    (1001) docker     (127)       38 2024-03-13 14:23:40.734917 faster-sam-0.8.0/setup.cfg
-drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-13 14:23:40.734917 faster-sam-0.8.0/tests/
--rw-r--r--   0 runner    (1001) docker     (127)     2210 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_adapter.py
--rw-r--r--   0 runner    (1001) docker     (127)     7700 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_cloudformation.py
--rw-r--r--   0 runner    (1001) docker     (127)     4574 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_lambda_event.py
--rw-r--r--   0 runner    (1001) docker     (127)    18000 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_middleware_lambda_authorizer.py
--rw-r--r--   0 runner    (1001) docker     (127)      705 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_middleware_remove_path.py
--rw-r--r--   0 runner    (1001) docker     (127)     2086 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_middleware_rewrite_path.py
--rw-r--r--   0 runner    (1001) docker     (127)     1470 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_openapi.py
--rw-r--r--   0 runner    (1001) docker     (127)     1759 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_redis.py
--rw-r--r--   0 runner    (1001) docker     (127)     5665 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_routing.py
--rw-r--r--   0 runner    (1001) docker     (127)     1096 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_utils.py
--rw-r--r--   0 runner    (1001) docker     (127)     1907 2024-03-13 14:23:34.000000 faster-sam-0.8.0/tests/test_web_identity_providers.py
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.343319 faster-sam-0.9.0/
+-rw-r--r--   0 runner    (1001) docker     (127)     1064 2024-03-20 20:03:10.000000 faster-sam-0.9.0/LICENSE
+-rw-r--r--   0 runner    (1001) docker     (127)     1876 2024-03-20 20:03:24.343319 faster-sam-0.9.0/PKG-INFO
+-rw-r--r--   0 runner    (1001) docker     (127)     1175 2024-03-20 20:03:10.000000 faster-sam-0.9.0/README.md
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.339319 faster-sam-0.9.0/faster_sam/
+-rw-r--r--   0 runner    (1001) docker     (127)       49 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/__init__.py
+-rw-r--r--   0 runner    (1001) docker     (127)    10136 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/adapter.py
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.339319 faster-sam-0.9.0/faster_sam/cache/
+-rw-r--r--   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/cache/__init__.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1636 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/cache/cache_interface.py
+-rw-r--r--   0 runner    (1001) docker     (127)     2945 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/cache/redis_cache.py
+-rw-r--r--   0 runner    (1001) docker     (127)     8148 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/cloudformation.py
+-rw-r--r--   0 runner    (1001) docker     (127)     8619 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/lambda_event.py
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.343319 faster-sam-0.9.0/faster_sam/middlewares/
+-rw-r--r--   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/middlewares/__init__.py
+-rw-r--r--   0 runner    (1001) docker     (127)    12385 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/middlewares/lambda_authorizer.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1673 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/middlewares/remove_path.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1801 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/middlewares/rewrite_path.py
+-rw-r--r--   0 runner    (1001) docker     (127)     2839 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/openapi.py
+-rw-r--r--   0 runner    (1001) docker     (127)     3677 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/routing.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1174 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/utils.py
+-rw-r--r--   0 runner    (1001) docker     (127)     4108 2024-03-20 20:03:10.000000 faster-sam-0.9.0/faster_sam/web_identity_providers.py
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.343319 faster-sam-0.9.0/faster_sam.egg-info/
+-rw-r--r--   0 runner    (1001) docker     (127)     1876 2024-03-20 20:03:24.000000 faster-sam-0.9.0/faster_sam.egg-info/PKG-INFO
+-rw-r--r--   0 runner    (1001) docker     (127)      973 2024-03-20 20:03:24.000000 faster-sam-0.9.0/faster_sam.egg-info/SOURCES.txt
+-rw-r--r--   0 runner    (1001) docker     (127)        1 2024-03-20 20:03:24.000000 faster-sam-0.9.0/faster_sam.egg-info/dependency_links.txt
+-rw-r--r--   0 runner    (1001) docker     (127)       91 2024-03-20 20:03:24.000000 faster-sam-0.9.0/faster_sam.egg-info/requires.txt
+-rw-r--r--   0 runner    (1001) docker     (127)       11 2024-03-20 20:03:24.000000 faster-sam-0.9.0/faster_sam.egg-info/top_level.txt
+-rw-r--r--   0 runner    (1001) docker     (127)      692 2024-03-20 20:03:10.000000 faster-sam-0.9.0/pyproject.toml
+-rw-r--r--   0 runner    (1001) docker     (127)       38 2024-03-20 20:03:24.343319 faster-sam-0.9.0/setup.cfg
+drwxr-xr-x   0 runner    (1001) docker     (127)        0 2024-03-20 20:03:24.343319 faster-sam-0.9.0/tests/
+-rw-r--r--   0 runner    (1001) docker     (127)     2461 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_adapter.py
+-rw-r--r--   0 runner    (1001) docker     (127)     7700 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_cloudformation.py
+-rw-r--r--   0 runner    (1001) docker     (127)     5801 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_lambda_event.py
+-rw-r--r--   0 runner    (1001) docker     (127)    18000 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_middleware_lambda_authorizer.py
+-rw-r--r--   0 runner    (1001) docker     (127)      705 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_middleware_remove_path.py
+-rw-r--r--   0 runner    (1001) docker     (127)     2086 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_middleware_rewrite_path.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1470 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_openapi.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1759 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_redis.py
+-rw-r--r--   0 runner    (1001) docker     (127)     7072 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_routing.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1096 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_utils.py
+-rw-r--r--   0 runner    (1001) docker     (127)     1907 2024-03-20 20:03:10.000000 faster-sam-0.9.0/tests/test_web_identity_providers.py

Comparing faster-sam-0.8.0/LICENSE & faster-sam-0.9.0/LICENSE

  • Files identical despite different names

Comparing faster-sam-0.8.0/PKG-INFO & faster-sam-0.9.0/PKG-INFO

  • Files 2% similar despite different names
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: faster-sam
-Version: 0.8.0
+Version: 0.9.0
 Summary: An adapter to enable running APIs built with AWS SAM applications using FastAPI.
 Author-email: Dotz Developers <devs-dotz@dotz.com>
 License: MIT
 Keywords: utilities,fastapi,sam
 Classifier: Programming Language :: Python :: 3
 Requires-Python: >=3.8
 Description-Content-Type: text/markdown

Comparing faster-sam-0.8.0/README.md & faster-sam-0.9.0/README.md

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/adapter.py & faster-sam-0.9.0/faster_sam/adapter.py

  • Files 13% similar despite different names
@@ -1,15 +1,15 @@
 import re
 from typing import Any, Dict, Optional
 
 from fastapi import FastAPI
 
 from faster_sam.cloudformation import CloudformationTemplate, NodeType
 from faster_sam.openapi import custom_openapi
-from faster_sam.routing import APIRoute, QueueRoute
+from faster_sam.routing import APIRoute, QueueRoute, ScheduleRoute
 
 ARN_PATTERN = r"^arn:aws:apigateway.*\${(\w+)\.Arn}/invocations$"
 
 
 class GatewayLookupError(LookupError):
     """
     Raised when performing API Gateway lookup, usually when multiple gateways
@@ -102,14 +102,31 @@
         app : FastAPI
             The FastAPI application instance to be configured.
         """
         routes = self.lambda_queue_mapper()
 
         self.register_routes(app, routes, QueueRoute)
 
+    def configure_schedule(
+        self,
+        app: FastAPI,
+    ) -> None:
+        """
+        Configures the FastAPI application with routes based on schedule defined
+        in cloudformation template.
+
+        Parameters
+        ----------
+        app : FastAPI
+            The FastAPI application instance to be configured.
+        """
+        routes = self.lambda_schedule_mapper()
+
+        self.register_routes(app, routes, ScheduleRoute)
+
     def openapi_mapper(self, openapi_schema: Dict[str, Any]) -> Dict[str, Any]:
         """
         Create a route map extracted from the given OpenAPI schema.
 
         Notice that this is an OpenAPI schema used by AWS SAM to configure
         an API Gateway, therefore it requires AWS extensions pointing to
         event consumers, most of the time Lambda Functions.
@@ -197,14 +214,48 @@
                 path = f"/{queue_name}"
                 endpoint = {"POST": {"handler": handler_path}}
 
                 routes.setdefault(path, {}).update(endpoint)
 
         return routes
 
+    def lambda_schedule_mapper(self) -> Dict[str, Any]:
+        """
+        Generate a route map extracted from the lambda functions that is a schedule consumer
+        using the name of the function name as path.
+
+        Returns
+        -------
+        Dict[str, Any]
+            Dictionary containing the routes.
+        """
+
+        routes: Dict[str, Any] = {}
+
+        for resource_id, function in self.template.functions.items():
+            if "Events" not in function["Properties"]:
+                continue
+
+            events = self.template.find_nodes(
+                function["Properties"]["Events"], NodeType.SCHEDULER_EVENT
+            )
+
+            if not events:
+                continue
+
+            function_name = function["Properties"]["FunctionName"].replace("_", "-")
+            handler_path = self.template.lambda_handler(resource_id)
+
+            path = f"/{function_name}"
+            endpoint = {"POST": {"handler": handler_path}}
+
+            routes.setdefault(path, {}).update(endpoint)
+
+        return routes
+
     def lambda_mapper(self, gateway_id: Optional[str]) -> Dict[str, Any]:
         """
         Generate a route map extracted from the lambda functions schema
         corresponding to the given gateway id.
 
         Parameters
         ----------

Comparing faster-sam-0.8.0/faster_sam/cache/cache_interface.py & faster-sam-0.9.0/faster_sam/cache/cache_interface.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/cache/redis_cache.py & faster-sam-0.9.0/faster_sam/cache/redis_cache.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/cloudformation.py & faster-sam-0.9.0/faster_sam/cloudformation.py

  • Files 4% similar despite different names
@@ -42,21 +42,24 @@
         Represents the "AWS::Serverless::Api" node type.
     LAMBDA : str
         Represents the "AWS::Serverless::Function" node type.
     QUEUE : str
         Represents the "AWS::SQS::Queue" node type.
     API_EVENT : str
         Represents the "Api" node type.
+    SCHEDULER_EVENT : str
+        Represents the "Schedule" node type.
     """
 
     API_GATEWAY = "AWS::Serverless::Api"
     LAMBDA = "AWS::Serverless::Function"
     QUEUE = "AWS::SQS::Queue"
     API_EVENT = "Api"
     SQS_EVENT = "SQS"
+    SCHEDULER_EVENT = "Schedule"
 
 
 def multi_constructor(loader: CFLoader, tag_suffix: str, node: yaml.nodes.Node) -> Dict[str, Any]:
     """
     Custom YAML node constructor.
 
     Handles AWS CloudFormation extensions for its short version of intrinsic functions.

Comparing faster-sam-0.8.0/faster_sam/lambda_event.py & faster-sam-0.9.0/faster_sam/lambda_event.py

  • Files 8% similar despite different names
@@ -164,14 +164,77 @@
                     "awsRegion": "us-east-2",
                 },
             ]
         }
         return event
 
 
+class Schedule(ResourceInterface):
+    def __init__(self, request: Request, endpoint: Handler):
+        """
+        Initializes the Schedule.
+
+        Parameters
+        ----------
+        request : Request
+            A request object.
+        endpoint : Handler
+            A callable object.
+        """
+        super().__init__(request, endpoint)
+
+    async def call_endpoint(self) -> Response:
+        """
+        Call event buider and retuns a custom response based
+        on the mapped event.
+
+        Returns
+        -------
+        Response
+            A response object.
+        """
+        event = await self.event_builder()
+        try:
+            result = self.endpoint(event, None)
+        except Exception as error:
+            logger.exception(error)
+            return CustomResponse({"body": "Error executing schedule function", "statusCode": 500})
+
+        return CustomResponse({"body": json.dumps(result), "statusCode": 200})
+
+    async def event_builder(self):
+        """
+        Builds an event of type schedule
+
+        It uses the given request object to fill the event details.
+
+        Returns
+        -------
+        Dict[str, Any]
+            An schedule event.
+        """
+
+        bytes_body = await self.request.body()
+        json_body = bytes_body.decode()
+        body = json.loads(json_body)
+        event = {
+            "version": "0",
+            "id": str(uuid4()),
+            "detail-type": "Scheduled Event",
+            "source": "aws.events",
+            "account": "",
+            "time": datetime.now(timezone.utc).strftime(r"%d/%b/%Y:%H:%M:%S %z"),
+            "region": "us-east-1",
+            "resources": [""],
+            "detail": body,
+        }
+
+        return event
+
+
 class ApiGateway(ResourceInterface):
     def __init__(self, request: Request, endpoint: Handler):
         """
         Initializes the ApiGateway.
 
         Parameters
         ----------

Comparing faster-sam-0.8.0/faster_sam/middlewares/lambda_authorizer.py & faster-sam-0.9.0/faster_sam/middlewares/lambda_authorizer.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/middlewares/remove_path.py & faster-sam-0.9.0/faster_sam/middlewares/remove_path.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/middlewares/rewrite_path.py & faster-sam-0.9.0/faster_sam/middlewares/rewrite_path.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/openapi.py & faster-sam-0.9.0/faster_sam/openapi.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/routing.py & faster-sam-0.9.0/faster_sam/routing.py

  • Files 11% similar despite different names
@@ -1,13 +1,13 @@
 import logging
 from typing import Any, Awaitable, Callable, Dict
 
 from fastapi import Request, Response, routing
 
-from faster_sam.lambda_event import SQS, ApiGateway, ResourceInterface
+from faster_sam.lambda_event import SQS, ApiGateway, ResourceInterface, Schedule
 
 logger = logging.getLogger(__name__)
 
 Handler = Callable[[Dict[str, Any], Any], Dict[str, Any]]
 Endpoint = Callable[[Request], Awaitable[Response]]
 
 
@@ -99,7 +99,30 @@
             HTTP route path.
         endpoint : str
             Full module path.
         """
         handler_path = endpoint
         handler_func = import_handler(handler_path)
         super().__init__(path=path, endpoint=handler(handler_func, SQS), *args, **kwargs)
+
+
+class ScheduleRoute(routing.APIRoute):
+    """
+    Extends FastAPI Router class used to describe path operations.
+    This custom router class receives the endpoint parameter as a string with
+    the full module path instead of the actual callable.
+    """
+
+    def __init__(self, path: str, endpoint: str, *args, **kwargs):
+        """
+        Initializes the ScheduleRoute object.
+
+        Parameters
+        ----------
+        path : str
+            HTTP route path.
+        endpoint : str
+            Full module path.
+        """
+        handler_path = endpoint
+        handler_func = import_handler(handler_path)
+        super().__init__(path=path, endpoint=handler(handler_func, Schedule), *args, **kwargs)

Comparing faster-sam-0.8.0/faster_sam/utils.py & faster-sam-0.9.0/faster_sam/utils.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam/web_identity_providers.py & faster-sam-0.9.0/faster_sam/web_identity_providers.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/faster_sam.egg-info/PKG-INFO & faster-sam-0.9.0/faster_sam.egg-info/PKG-INFO

  • Files 2% similar despite different names
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: faster-sam
-Version: 0.8.0
+Version: 0.9.0
 Summary: An adapter to enable running APIs built with AWS SAM applications using FastAPI.
 Author-email: Dotz Developers <devs-dotz@dotz.com>
 License: MIT
 Keywords: utilities,fastapi,sam
 Classifier: Programming Language :: Python :: 3
 Requires-Python: >=3.8
 Description-Content-Type: text/markdown

Comparing faster-sam-0.8.0/faster_sam.egg-info/SOURCES.txt & faster-sam-0.9.0/faster_sam.egg-info/SOURCES.txt

  • Files identical despite different names

Comparing faster-sam-0.8.0/pyproject.toml & faster-sam-0.9.0/pyproject.toml

  • Files 14% similar despite different names
@@ -1,14 +1,14 @@
 [build-system]
 requires = ["setuptools"]
 build-backend = "setuptools.build_meta"
 
 [project]
 name = "faster-sam"
-version = "0.8.0"
+version = "0.9.0"
 description = "An adapter to enable running APIs built with AWS SAM applications using FastAPI."
 readme = {file = "README.md", content-type = "text/markdown"}
 authors = [
     {name = "Dotz Developers", email = "devs-dotz@dotz.com"},
 ]
 license = {text = "MIT"}
 keywords = ["utilities", "fastapi", "sam"]

Comparing faster-sam-0.8.0/tests/test_adapter.py & faster-sam-0.9.0/tests/test_adapter.py

  • Files 9% similar despite different names
@@ -56,14 +56,23 @@
         sam = SAM("tests/fixtures/templates/example6.yml")
 
         self.assertEqual(len(app.routes), 4)
 
         sam.configure_queues(app)
         self.assertEqual(len(app.routes), 5)
 
+    def test_configure_schedule(self):
+        app = FastAPI()
+        sam = SAM("tests/fixtures/templates/example7.yml")
+
+        self.assertEqual(len(app.routes), 4)
+
+        sam.configure_schedule(app)
+        self.assertEqual(len(app.routes), 5)
+
     def test_configure_api_raises_gateway_lookup_error(self):
         error = "^Missing required gateway ID. Found: ApiGateway, ApiGatewayTwo"
 
         with self.assertRaisesRegex(GatewayLookupError, error):
             app = FastAPI()
             sam = SAM(self.templates[3])
             sam.configure_api(app)

Comparing faster-sam-0.8.0/tests/test_cloudformation.py & faster-sam-0.9.0/tests/test_cloudformation.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_lambda_event.py & faster-sam-0.9.0/tests/test_lambda_event.py

  • Files 16% similar despite different names
@@ -65,14 +65,35 @@
         "client": ("127.0.0.1", 80),
         "app": FastAPI(),
     }
 
     return Request(scope, receive)
 
 
+def build_request_schedule():
+
+    async def receive():
+        body = {}
+        return {"type": "http.request", "body": json.dumps(body).encode()}
+
+    scope = {
+        "type": "http",
+        "http_version": "1.1",
+        "root_path": "",
+        "path": "/test",
+        "method": "GET",
+        "query_string": [],
+        "path_params": {},
+        "client": ("127.0.0.1", 80),
+        "app": FastAPI(),
+    }
+
+    return Request(scope, receive)
+
+
 class TestCustomResponse(unittest.TestCase):
     def setUp(self):
         self.data = {
             "statusCode": HTTPStatus.OK.value,
             "body": '{"message": "test"}',
             "headers": {"content-type": "application/json"},
         }
@@ -142,7 +163,33 @@
 
         sqs = faster_sam.lambda_event.SQS(request, handler)
 
         event = await sqs.event_builder()
 
         self.assertIsInstance(event, dict)
         self.assertEqual(set(event["Records"][0].keys()), expected_key)
+
+    async def test_event_builder_schedule(self):
+        request = build_request_schedule()
+        expected_keys = {
+            "version",
+            "id",
+            "detail-type",
+            "source",
+            "account",
+            "time",
+            "region",
+            "resources",
+            "detail",
+        }
+
+        module_name = "tests.fixtures.handlers.lambda_handler"
+        handler_name = "handler"
+        handler_path = f"{module_name}.{handler_name}"
+        handler = faster_sam.routing.import_handler(handler_path)
+
+        schedule = faster_sam.lambda_event.Schedule(request, handler)
+
+        event = await schedule.event_builder()
+
+        self.assertIsInstance(event, dict)
+        self.assertEqual(set(event.keys()), expected_keys)

Comparing faster-sam-0.8.0/tests/test_middleware_lambda_authorizer.py & faster-sam-0.9.0/tests/test_middleware_lambda_authorizer.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_middleware_remove_path.py & faster-sam-0.9.0/tests/test_middleware_remove_path.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_middleware_rewrite_path.py & faster-sam-0.9.0/tests/test_middleware_rewrite_path.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_openapi.py & faster-sam-0.9.0/tests/test_openapi.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_redis.py & faster-sam-0.9.0/tests/test_redis.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_routing.py & faster-sam-0.9.0/tests/test_routing.py

  • Files 11% similar despite different names
@@ -64,14 +64,35 @@
         "client": ("127.0.0.1", 80),
         "app": FastAPI(),
     }
 
     return Request(scope, receive)
 
 
+def build_request_schedule():
+
+    async def receive():
+        body = {"x": "y"}
+        return {"type": "http.request", "body": json.dumps(body).encode()}
+
+    scope = {
+        "type": "http",
+        "http_version": "1.1",
+        "root_path": "",
+        "path": "/test",
+        "method": "GET",
+        "query_string": [],
+        "path_params": {},
+        "client": ("127.0.0.1", 80),
+        "app": FastAPI(),
+    }
+
+    return Request(scope, receive)
+
+
 class TestAPIRoute(unittest.TestCase):
     def test_route(self):
         endpoint = "tests.fixtures.handlers.lambda_handler.handler"
 
         route = faster_sam.routing.APIRoute(path="/test", name="test", endpoint=endpoint)
 
         self.assertEqual(route.path, "/test")
@@ -163,7 +184,31 @@
 
         self.assertIsInstance(response, Response)
         self.assertEqual(response.status_code, HTTPStatus.INTERNAL_SERVER_ERROR.value)
         self.assertEqual(
             response.body.decode(),
             '{"statusCode": 500, "body": "hello", "batchItemFailures": "foo"}',
         )
+
+    async def test_schedule_handler(self):
+        request = build_request_schedule()
+
+        def echo(event, _):
+            return {
+                "statusCode": HTTPStatus.OK.value,
+                "body": event["detail"],
+            }
+
+        cases = {
+            "none_as_return": {"func": lambda event, _: None, "response": "null"},
+            "dict_as_return": {"func": echo, "response": '{"statusCode": 200, "body": {"x": "y"}}'},
+        }
+
+        for case, value in cases.items():
+            with self.subTest(case=case):
+                endpoint = faster_sam.routing.handler(
+                    value["func"], faster_sam.lambda_event.Schedule
+                )
+                response = await endpoint(request)
+                self.assertIsInstance(response, Response)
+                self.assertEqual(response.status_code, HTTPStatus.OK.value)
+                self.assertEqual(response.body.decode(), value["response"])

Comparing faster-sam-0.8.0/tests/test_utils.py & faster-sam-0.9.0/tests/test_utils.py

  • Files identical despite different names

Comparing faster-sam-0.8.0/tests/test_web_identity_providers.py & faster-sam-0.9.0/tests/test_web_identity_providers.py

  • Files identical despite different names