We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Appsync ApiKey Expires needs to be an int
The expires prop on the appsync ApiKey class needs to be an int otherwise the decimal place causes cloudformation to throw a `Can not deserialize value of type java.lang.Long from String` error. 

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `troposphere/appsync.py`
Content:
```
1 # Copyright (c) 2012-2017, Mark Peek <mark@peek.org>
2 # All rights reserved.
3 #
4 # See LICENSE file for full license.
5 
6 from . import AWSObject, AWSProperty
7 from .validators import boolean
8 
9 
10 class ApiKey(AWSObject):
11     resource_type = "AWS::AppSync::ApiKey"
12 
13     props = {
14         'ApiId': (basestring, True),
15         'Description': (basestring, False),
16         'Expires': (float, False),
17     }
18 
19 
20 class DynamoDBConfig(AWSProperty):
21     props = {
22         'AwsRegion': (basestring, True),
23         'TableName': (basestring, True),
24         'UseCallerCredentials': (boolean, False),
25     }
26 
27 
28 class ElasticsearchConfig(AWSProperty):
29     props = {
30         'AwsRegion': (basestring, True),
31         'Endpoint': (basestring, True),
32     }
33 
34 
35 class LambdaConfig(AWSProperty):
36     props = {
37         'LambdaFunctionArn': (basestring, True),
38     }
39 
40 
41 class DataSource(AWSObject):
42     resource_type = "AWS::AppSync::DataSource"
43 
44     props = {
45         'ApiId': (basestring, True),
46         'Description': (basestring, False),
47         'DynamoDBConfig': (DynamoDBConfig, False),
48         'ElasticsearchConfig': (ElasticsearchConfig, False),
49         'LambdaConfig': (LambdaConfig, False),
50         'Name': (basestring, True),
51         'ServiceRoleArn': (basestring, False),
52         'Type': (basestring, True),
53     }
54 
55 
56 class LogConfig(AWSProperty):
57     props = {
58         'CloudWatchLogsRoleArn': (basestring, False),
59         'FieldLogLevel': (basestring, False),
60     }
61 
62 
63 class OpenIDConnectConfig(AWSProperty):
64     props = {
65         'AuthTTL': (float, False),
66         'ClientId': (basestring, False),
67         'IatTTL': (float, False),
68         'Issuer': (basestring, True),
69     }
70 
71 
72 class UserPoolConfig(AWSProperty):
73     props = {
74         'AppIdClientRegex': (basestring, False),
75         'AwsRegion': (basestring, False),
76         'DefaultAction': (basestring, False),
77         'UserPoolId': (basestring, False),
78     }
79 
80 
81 class GraphQLApi(AWSObject):
82     resource_type = "AWS::AppSync::GraphQLApi"
83 
84     props = {
85         'AuthenticationType': (basestring, True),
86         'LogConfig': (LogConfig, False),
87         'Name': (basestring, True),
88         'OpenIDConnectConfig': (OpenIDConnectConfig, False),
89         'UserPoolConfig': (UserPoolConfig, False),
90     }
91 
92 
93 class GraphQLSchema(AWSObject):
94     resource_type = "AWS::AppSync::GraphQLSchema"
95 
96     props = {
97         'ApiId': (basestring, True),
98         'Definition': (basestring, False),
99         'DefinitionS3Location': (basestring, False),
100     }
101 
102 
103 class Resolver(AWSObject):
104     resource_type = "AWS::AppSync::Resolver"
105 
106     props = {
107         'ApiId': (basestring, True),
108         'DataSourceName': (basestring, True),
109         'FieldName': (basestring, True),
110         'RequestMappingTemplate': (basestring, False),
111         'RequestMappingTemplateS3Location': (basestring, False),
112         'ResponseMappingTemplate': (basestring, False),
113         'ResponseMappingTemplateS3Location': (basestring, False),
114         'TypeName': (basestring, True),
115     }
116
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/troposphere/appsync.py b/troposphere/appsync.py
--- a/troposphere/appsync.py
+++ b/troposphere/appsync.py
@@ -4,7 +4,7 @@
 # See LICENSE file for full license.
 
 from . import AWSObject, AWSProperty
-from .validators import boolean
+from .validators import boolean, integer
 
 
 class ApiKey(AWSObject):
@@ -13,7 +13,7 @@
     props = {
         'ApiId': (basestring, True),
         'Description': (basestring, False),
-        'Expires': (float, False),
+        'Expires': (integer, False),
     }

{"golden_diff": "diff --git a/troposphere/appsync.py b/troposphere/appsync.py\n--- a/troposphere/appsync.py\n+++ b/troposphere/appsync.py\n@@ -4,7 +4,7 @@\n # See LICENSE file for full license.\n \n from . import AWSObject, AWSProperty\n-from .validators import boolean\n+from .validators import boolean, integer\n \n \n class ApiKey(AWSObject):\n@@ -13,7 +13,7 @@\n     props = {\n         'ApiId': (basestring, True),\n         'Description': (basestring, False),\n-        'Expires': (float, False),\n+        'Expires': (integer, False),\n     }\n", "issue": "Appsync ApiKey Expires needs to be an int\nThe expires prop on the appsync ApiKey class needs to be an int otherwise the decimal place causes cloudformation to throw a `Can not deserialize value of type java.lang.Long from String` error. \n", "before_files": [{"content": "# Copyright (c) 2012-2017, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean\n\n\nclass ApiKey(AWSObject):\n    resource_type = \"AWS::AppSync::ApiKey\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'Expires': (float, False),\n    }\n\n\nclass DynamoDBConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'TableName': (basestring, True),\n        'UseCallerCredentials': (boolean, False),\n    }\n\n\nclass ElasticsearchConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'Endpoint': (basestring, True),\n    }\n\n\nclass LambdaConfig(AWSProperty):\n    props = {\n        'LambdaFunctionArn': (basestring, True),\n    }\n\n\nclass DataSource(AWSObject):\n    resource_type = \"AWS::AppSync::DataSource\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'DynamoDBConfig': (DynamoDBConfig, False),\n        'ElasticsearchConfig': (ElasticsearchConfig, False),\n        'LambdaConfig': (LambdaConfig, False),\n        'Name': (basestring, True),\n        'ServiceRoleArn': (basestring, False),\n        'Type': (basestring, True),\n    }\n\n\nclass LogConfig(AWSProperty):\n    props = {\n        'CloudWatchLogsRoleArn': (basestring, False),\n        'FieldLogLevel': (basestring, False),\n    }\n\n\nclass OpenIDConnectConfig(AWSProperty):\n    props = {\n        'AuthTTL': (float, False),\n        'ClientId': (basestring, False),\n        'IatTTL': (float, False),\n        'Issuer': (basestring, True),\n    }\n\n\nclass UserPoolConfig(AWSProperty):\n    props = {\n        'AppIdClientRegex': (basestring, False),\n        'AwsRegion': (basestring, False),\n        'DefaultAction': (basestring, False),\n        'UserPoolId': (basestring, False),\n    }\n\n\nclass GraphQLApi(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLApi\"\n\n    props = {\n        'AuthenticationType': (basestring, True),\n        'LogConfig': (LogConfig, False),\n        'Name': (basestring, True),\n        'OpenIDConnectConfig': (OpenIDConnectConfig, False),\n        'UserPoolConfig': (UserPoolConfig, False),\n    }\n\n\nclass GraphQLSchema(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLSchema\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Definition': (basestring, False),\n        'DefinitionS3Location': (basestring, False),\n    }\n\n\nclass Resolver(AWSObject):\n    resource_type = \"AWS::AppSync::Resolver\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'DataSourceName': (basestring, True),\n        'FieldName': (basestring, True),\n        'RequestMappingTemplate': (basestring, False),\n        'RequestMappingTemplateS3Location': (basestring, False),\n        'ResponseMappingTemplate': (basestring, False),\n        'ResponseMappingTemplateS3Location': (basestring, False),\n        'TypeName': (basestring, True),\n    }\n", "path": "troposphere/appsync.py"}], "after_files": [{"content": "# Copyright (c) 2012-2017, Mark Peek <mark@peek.org>\n# All rights reserved.\n#\n# See LICENSE file for full license.\n\nfrom . import AWSObject, AWSProperty\nfrom .validators import boolean, integer\n\n\nclass ApiKey(AWSObject):\n    resource_type = \"AWS::AppSync::ApiKey\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'Expires': (integer, False),\n    }\n\n\nclass DynamoDBConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'TableName': (basestring, True),\n        'UseCallerCredentials': (boolean, False),\n    }\n\n\nclass ElasticsearchConfig(AWSProperty):\n    props = {\n        'AwsRegion': (basestring, True),\n        'Endpoint': (basestring, True),\n    }\n\n\nclass LambdaConfig(AWSProperty):\n    props = {\n        'LambdaFunctionArn': (basestring, True),\n    }\n\n\nclass DataSource(AWSObject):\n    resource_type = \"AWS::AppSync::DataSource\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Description': (basestring, False),\n        'DynamoDBConfig': (DynamoDBConfig, False),\n        'ElasticsearchConfig': (ElasticsearchConfig, False),\n        'LambdaConfig': (LambdaConfig, False),\n        'Name': (basestring, True),\n        'ServiceRoleArn': (basestring, False),\n        'Type': (basestring, True),\n    }\n\n\nclass LogConfig(AWSProperty):\n    props = {\n        'CloudWatchLogsRoleArn': (basestring, False),\n        'FieldLogLevel': (basestring, False),\n    }\n\n\nclass OpenIDConnectConfig(AWSProperty):\n    props = {\n        'AuthTTL': (float, False),\n        'ClientId': (basestring, False),\n        'IatTTL': (float, False),\n        'Issuer': (basestring, True),\n    }\n\n\nclass UserPoolConfig(AWSProperty):\n    props = {\n        'AppIdClientRegex': (basestring, False),\n        'AwsRegion': (basestring, False),\n        'DefaultAction': (basestring, False),\n        'UserPoolId': (basestring, False),\n    }\n\n\nclass GraphQLApi(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLApi\"\n\n    props = {\n        'AuthenticationType': (basestring, True),\n        'LogConfig': (LogConfig, False),\n        'Name': (basestring, True),\n        'OpenIDConnectConfig': (OpenIDConnectConfig, False),\n        'UserPoolConfig': (UserPoolConfig, False),\n    }\n\n\nclass GraphQLSchema(AWSObject):\n    resource_type = \"AWS::AppSync::GraphQLSchema\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'Definition': (basestring, False),\n        'DefinitionS3Location': (basestring, False),\n    }\n\n\nclass Resolver(AWSObject):\n    resource_type = \"AWS::AppSync::Resolver\"\n\n    props = {\n        'ApiId': (basestring, True),\n        'DataSourceName': (basestring, True),\n        'FieldName': (basestring, True),\n        'RequestMappingTemplate': (basestring, False),\n        'RequestMappingTemplateS3Location': (basestring, False),\n        'ResponseMappingTemplate': (basestring, False),\n        'ResponseMappingTemplateS3Location': (basestring, False),\n        'TypeName': (basestring, True),\n    }\n", "path": "troposphere/appsync.py"}]}