Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Commit b43db14

Browse files
Merge pull request #13 from madeiramadeirabr/pep8_fix_tools
Pep8 fix tools
2 parents 28a0c92 + 58948de commit b43db14

File tree

47 files changed

+320
-166
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+320
-166
lines changed

.github/workflows/pylint.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
runs-on: ubuntu-18.04
2222
strategy:
2323
matrix:
24-
python-version: [ "3.8", "3.9", "3.10" ]
24+
python-version: [ "3.8", "3.9" ]
2525
steps:
2626
- uses: actions/checkout@v2
2727
- name: Set up Python ${{ matrix.python-version }}
@@ -38,13 +38,17 @@ jobs:
3838
run: |
3939
python -m pip install --upgrade pip
4040
pip install pylint
41+
# todo: futuramente separar em mais passos (um para cada pasta)
4142
- name: Execute pylint
4243
run: |
43-
# pylint ./examples/*/app.py ./examples/*/lambda_app ./examples/*/tests/unit ./examples/*/tests/integration ./examples/*/tests/component
44-
# pylint --rcfile ./.pylintrc ./examples/*/app.py ./examples/*/lambda_app
4544
source ./scripts/variables.sh
45+
ROOT_DIR=$(pwd)/
4646
for example_path in "${arr[@]}"
4747
do
4848
echo "Pylint in ${example_path} ..."
49-
pylint --rcfile ./.pylintrc ${example_path}app.py ${example_path}lambda_app
49+
# change dir to enable the pylint to find the modules of the app
50+
cd ${example_path}
51+
echo "Current dir is..."
52+
echo $(pwd)
53+
pylint --rcfile ${ROOT_DIR}.pylintrc ./app.py ./lambda_app
5054
done

examples/lambda_api/.github/workflows/pylint.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
runs-on: ubuntu-18.04
2222
strategy:
2323
matrix:
24-
python-version: [ "3.8", "3.9", "3.10" ]
24+
python-version: [ "3.8", "3.9" ]
2525
steps:
2626
- uses: actions/checkout@v2
2727
- name: Set up Python ${{ matrix.python-version }}

examples/lambda_api/.pep8

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[pycodestyle]
2+
max_line_length = 120
3+
ignore = E501

examples/lambda_api/app.py

Lines changed: 78 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
import base64
2-
import os
3-
from lambda_app.boot import load_dot_env,register_vendor
4-
register_vendor()
5-
6-
from lambda_app import helper
7-
8-
env = helper.get_environment()
9-
load_dot_env(env)
1+
"""This is the main file of the lambda application
102
3+
This module contains the handler method
4+
"""
5+
import boot
6+
import os
7+
import base64
118
from lambda_app.services.v1.healthcheck import HealthCheckSchema
12-
from lambda_app.services.v1.healthcheck.resources import MysqlConnectionHealthCheck, RedisConnectionHealthCheck, \
9+
from lambda_app.services.v1.healthcheck.resources import \
10+
MysqlConnectionHealthCheck, RedisConnectionHealthCheck, \
1311
SQSConnectionHealthCheck, SelfConnectionHealthCheck
1412
from lambda_app.services.v1.healthcheck_service import HealthCheckService
1513
from lambda_app.config import get_config
@@ -22,39 +20,51 @@
2220
from lambda_app.services.v1.ocoren_event_service import OcorenEventService
2321
from lambda_app.vos.events import EventVO
2422
from lambda_app.logging import get_logger
25-
from lambda_app import APP_NAME, APP_VERSION, http_helper, helper
23+
from lambda_app import APP_NAME, APP_VERSION, http_helper
2624
from lambda_app.helper import open_vendor_file, print_routes
2725
from lambda_app.http_helper import CUSTOM_DEFAULT_HEADERS
2826
from lambda_app.lambda_flask import LambdaFlask
2927
from lambda_app.openapi import spec, get_doc, generate_openapi_yml
3028
from lambda_app.openapi import api_schemas
3129
from lambda_app.services.event_manager import EventManager
30+
from lambda_app import helper
31+
32+
# load env
33+
ENV = helper.get_environment()
34+
boot.load_dot_env(ENV)
35+
3236

3337
# config
34-
config = get_config()
38+
CONFIG = get_config()
3539
# debug
36-
debug = helper.debug_mode()
40+
DEBUG = helper.debug_mode()
3741
# logger
38-
logger = get_logger()
42+
LOGGER = get_logger()
3943

40-
app = LambdaFlask(__name__)
44+
APP = LambdaFlask(__name__)
4145

4246

43-
@app.route('/')
47+
@APP.route('/')
4448
def index():
49+
"""
50+
API Root path
51+
:return:
52+
:rtype: str
53+
"""
4554
body = {"app": '%s:%s' % (APP_NAME, APP_VERSION)}
4655
return http_helper.create_response(body=body, status_code=200)
4756

4857

4958
# general vars
50-
APP_QUEUE = config.APP_QUEUE
59+
APP_QUEUE = CONFIG.APP_QUEUE
5160

5261

53-
@app.route('/alive')
62+
@APP.route('/alive')
5463
def alive():
5564
"""
56-
65+
Health check path
5766
:return:
67+
:rtype: str
5868
5969
---
6070
@@ -68,42 +78,58 @@ def alive():
6878
schema: HealthCheckSchema
6979
"""
7080
service = HealthCheckService()
71-
service.add_check("self", SelfConnectionHealthCheck(logger, config), [])
72-
service.add_check("mysql", MysqlConnectionHealthCheck(logger, config), ["db"])
73-
service.add_check("redis", RedisConnectionHealthCheck(logger, config), ["redis"])
74-
service.add_check("queue", SQSConnectionHealthCheck(logger, config), ["queue"])
81+
service.add_check("self", SelfConnectionHealthCheck(LOGGER, CONFIG), [])
82+
service.add_check(
83+
"mysql", MysqlConnectionHealthCheck(LOGGER, CONFIG), ["db"])
84+
service.add_check("redis", RedisConnectionHealthCheck(
85+
LOGGER, CONFIG), ["redis"])
86+
service.add_check("queue", SQSConnectionHealthCheck(
87+
LOGGER, CONFIG), ["queue"])
7588

7689
return service.get_response()
7790

7891

79-
@app.route('/favicon-32x32.png')
92+
@APP.route('/favicon-32x32.png')
8093
def favicon():
8194
headers = CUSTOM_DEFAULT_HEADERS.copy()
8295
headers['Content-Type'] = "image/png"
8396
data = base64.b64decode(
84-
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEUAAAAQM0QWNUYWNkYXNkYALjoWNUYYOEUXN0YaPEUPMUAUM0QVNUYWNkYWNUYWNUUWNUYVNEYWNkYWNUYWM0eF6i0XNkchR0OB5SwzZj9wyTEvXkA3az5apTZ+4C5DgDt31C9frjU5bz5uxTI/eDxzzjAmT0IsWUEeQkVltzR62S6D6CxIhzpKijpJiDpOkDl4b43lAAAAFXRSTlMAFc304QeZ/vj+ECB3xKlGilPXvS2Ka/h0AAABfklEQVR42oVT2XaCMBAdJRAi7pYJa2QHxbb//3ctSSAUPfa+THLmzj4DBvZpvyauS9b7kw3PWDkWsrD6fFQhQ9dZLfVbC5M88CWCPERr+8fLZodJ5M8QJbjbGL1H2M1fIGfEm+wJN+bGCSc6EXtNS/8FSrq2VX6YDv++XLpJ8SgDWMnwqznGo6alcTbIxB2CHKn8VFikk2mMV2lEnV+CJd9+jJlxXmMr5dW14YCqwgbFpO8FNvJxwwM4TPWPo5QalEsRMAcusXpi58/QUEWPL0AK1ThM5oQCUyXPoPINkdd922VBw4XgTV9zDGWWFrgjIQs4vwvOg6xr+6gbCTqE+DYhlMGX0CF2OknK5gQ2JrkDh/W6TOEbYDeVecKbJtyNXiCfGmW7V93J2hDus1bDfhxWbIZVYDXITA7Lo6E0Ktgg9eB4KWuR44aj7ppBVPazhQH7/M/KgWe9X1qAg8XypT6nxIMJH+T94QCsLvj29IYwZxyO9/F8vCbO9tX5/wDGjEZ7vrgFZwAAAABJRU5ErkJggg==')
85-
return http_helper.create_response(body=data, status_code=200, headers=headers)
86-
87-
88-
@app.route('/docs')
97+
'iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAkFBMVEUAAAAQM0QWNUYWNkYXNkYALjo'
98+
'WNUYYOEUXN0YaPEUPMUAUM0QVNUYWNkYWNUYWNUUWNUYVNEYWNkYWNUYWM0eF6i0XNkchR0OB5SwzZj'
99+
'9wyTEvXkA3az5apTZ+4C5DgDt31C9frjU5bz5uxTI/eDxzzjAmT0IsWUEeQkVltzR62S6D6CxIhzpKi'
100+
'jpJiDpOkDl4b43lAAAAFXRSTlMAFc304QeZ/vj+ECB3xKlGilPXvS2Ka/h0AAABfklEQVR42oVT2XaC'
101+
'MBAdJRAi7pYJa2QHxbb//3ctSSAUPfa+THLmzj4DBvZpvyauS9b7kw3PWDkWsrD6fFQhQ9dZLfVbC5M'
102+
'88CWCPERr+8fLZodJ5M8QJbjbGL1H2M1fIGfEm+wJN+bGCSc6EXtNS/8FSrq2VX6YDv++XLpJ8SgDWM'
103+
'nwqznGo6alcTbIxB2CHKn8VFikk2mMV2lEnV+CJd9+jJlxXmMr5dW14YCqwgbFpO8FNvJxwwM4TPWPo'
104+
'5QalEsRMAcusXpi58/QUEWPL0AK1ThM5oQCUyXPoPINkdd922VBw4XgTV9zDGWWFrgjIQs4vwvOg6xr'
105+
'+6gbCTqE+DYhlMGX0CF2OknK5gQ2JrkDh/W6TOEbYDeVecKbJtyNXiCfGmW7V93J2hDus1bDfhxWbIZ'
106+
'VYDXITA7Lo6E0Ktgg9eB4KWuR44aj7ppBVPazhQH7/M/KgWe9X1qAg8XypT6nxIMJH+T94QCsLvj29I'
107+
'YwZxyO9/F8vCbO9tX5/wDGjEZ7vrgFZwAAAABJRU5ErkJggg==')
108+
return http_helper.create_response(
109+
body=data, status_code=200, headers=headers)
110+
111+
112+
@APP.route('/docs')
89113
def docs():
90114
headers = CUSTOM_DEFAULT_HEADERS.copy()
91115
headers['Content-Type'] = "text/html"
92116
html_file = open_vendor_file('./public/swagger/index.html', 'r')
93117
html = html_file.read()
94-
return http_helper.create_response(body=html, status_code=200, headers=headers)
118+
return http_helper.create_response(
119+
body=html, status_code=200, headers=headers)
95120

96121

97-
@app.route('/openapi.yml')
122+
@APP.route('/openapi.yml')
98123
def openapi():
99124
headers = CUSTOM_DEFAULT_HEADERS.copy()
100125
headers['Content-Type'] = "text/yaml"
101126
html_file = open_vendor_file('./public/swagger/openapi.yml', 'r')
102127
html = html_file.read()
103-
return http_helper.create_response(body=html, status_code=200, headers=headers)
128+
return http_helper.create_response(
129+
body=html, status_code=200, headers=headers)
104130

105131

106-
@app.route('/v1/event/<event_type>', methods=['POST'])
132+
@APP.route('/v1/event/<event_type>', methods=['POST'])
107133
def event_create(event_type):
108134
"""
109135
:param event_type:
@@ -135,18 +161,19 @@ def event_create(event_type):
135161
application/json:
136162
schema: EventCreateErrorResponseSchema
137163
"""
138-
request = ApiRequest().parse_request(app)
139-
logger.info('event_type: {}'.format(event_type))
140-
logger.info('request: {}'.format(request))
164+
request = ApiRequest().parse_request(APP)
165+
LOGGER.info('event_type: {}'.format(event_type))
166+
LOGGER.info('request: {}'.format(request))
141167

142-
event_tracker = EventTracker(logger)
168+
event_tracker = EventTracker(LOGGER)
143169

144170
status_code = 200
145171
response = ApiResponse(request)
146172
response.set_hateos(False)
147173
try:
148174
# event_type validation
149-
if EventType.from_value(event_type) not in EventType.get_public_events():
175+
if EventType.from_value(
176+
event_type) not in EventType.get_public_events():
150177
exception = ApiException(MessagesEnum.EVENT_TYPE_UNKNOWN_ERROR)
151178
exception.set_message_params([event_type])
152179
raise exception
@@ -157,7 +184,7 @@ def event_create(event_type):
157184
# else:
158185
# event_service = ProductEventService()
159186
event_service = OcorenEventService()
160-
service = EventManager(logger=logger, event_service=event_service)
187+
service = EventManager(logger=LOGGER, event_service=event_service)
161188
result = service.process(event_vo)
162189
event_hash = event_vo.hash
163190

@@ -174,7 +201,7 @@ def event_create(event_type):
174201
else:
175202
raise ApiException(MessagesEnum.INTERNAL_SERVER_ERROR)
176203
except Exception as err:
177-
logger.error(err)
204+
LOGGER.error(err)
178205
result = False
179206
event_hash = None
180207
if isinstance(err, ApiException):
@@ -204,7 +231,7 @@ def event_create(event_type):
204231
return response.get_response(status_code)
205232

206233

207-
@app.route('/v1/event/<event_type>', methods=['GET'])
234+
@APP.route('/v1/event/<event_type>', methods=['GET'])
208235
def event_list(event_type):
209236
"""
210237
:param event_type:
@@ -230,9 +257,9 @@ def event_list(event_type):
230257
application/json:
231258
schema: EventListErrorResponseSchema
232259
"""
233-
request = ApiRequest().parse_request(app)
234-
logger.info('event_type: {}'.format(event_type))
235-
logger.info('request: {}'.format(request))
260+
request = ApiRequest().parse_request(APP)
261+
LOGGER.info('event_type: {}'.format(event_type))
262+
LOGGER.info('request: {}'.format(request))
236263

237264
# event_tracker = EventTracker(logger)
238265
#
@@ -293,7 +320,6 @@ def event_list(event_type):
293320
# "params": params
294321
# }
295322

296-
297323
data = {}
298324

299325
response.set_data(data)
@@ -305,11 +331,13 @@ def event_list(event_type):
305331

306332
# doc
307333
spec.path(view=alive, path="/alive", operations=get_doc(alive))
308-
spec.path(view=event_list, path="/v1/event/{event_type}", operations=get_doc(event_list))
309-
spec.path(view=event_create, path="/v1/event/{event_type}", operations=get_doc(event_create))
334+
spec.path(view=event_list,
335+
path="/v1/event/{event_type}", operations=get_doc(event_list))
336+
spec.path(view=event_create,
337+
path="/v1/event/{event_type}", operations=get_doc(event_create))
310338

311-
print_routes(app, logger)
312-
logger.info('Running at {}'.format(os.environ['APP_ENV']))
339+
print_routes(APP, LOGGER)
340+
LOGGER.info('Running at {}'.format(os.environ['APP_ENV']))
313341

314342
# generate de openapi.yml
315-
generate_openapi_yml(spec, logger, force=True)
343+
generate_openapi_yml(spec, LOGGER, force=True)
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def load_env(env='dev', force=False):
138138

139139
logger = get_internal_logger()
140140

141-
global _LOADED,_ENV_KEYS
141+
global _LOADED, _ENV_KEYS
142142
if not _LOADED or force:
143143

144144
logger.info('Boot - Loading env: {}'.format(env))
@@ -208,3 +208,6 @@ def print_env(app, logger):
208208
# logger.info('Database: %s' % os.getenv('DB_HOST'))
209209
logger.info('Log Level: %s' % os.getenv('LOG_LEVEL'))
210210
logger.info('Debug: %s' % os.getenv('DEBUG'))
211+
212+
213+
register_vendor()

examples/lambda_api/lambda_app/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def to_dict(self):
3333

3434
@staticmethod
3535
def get_env_keys():
36-
from lambda_app.boot import get_env_keys
36+
from boot import get_env_keys
3737
return get_env_keys()
3838

3939

examples/lambda_api/lambda_app/helper.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import pytz
99

10-
from lambda_app.logging import get_logger
10+
from lambda_app.logging import get_logger, get_console_logger
1111

1212
TZ_AMERICA_SAO_PAULO = 'America/Sao_Paulo'
1313

@@ -64,7 +64,6 @@ def to_dict(obj, force_str=False):
6464
if force_str:
6565
return {k: str(v) for k, v in data.items() if v is not None}
6666
else:
67-
# return {k: v for k, v in data.items() if v is not None}
6867
_dict = {}
6968
for k, v in data.items():
7069
if isinstance(v, Enum):
@@ -78,7 +77,7 @@ def to_dict(obj, force_str=False):
7877

7978

8079
def to_json(obj):
81-
return json.dumps(obj, default=str)
80+
return json.dumps(obj)
8281

8382

8483
def debug_mode():
@@ -146,12 +145,19 @@ def is_https():
146145
return result
147146

148147

149-
def print_routes(app, logger):
148+
def is_count_request(app):
149+
request = app.current_request.query_params
150+
return True if request is not None and (request.get('count') == "true" or request.get('count') == "1") else False
151+
152+
153+
def print_routes(app, logger=None):
150154
"""
151155
:param logger:
152156
:param (chalice.Chalice) app:
153157
:return:
154158
"""
159+
if logger is None:
160+
logger = get_console_logger()
155161
logger.info('List of routes:')
156162

157163
if has_attr(app, 'get_routes'):

examples/lambda_api/lambda_app/logging.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,25 @@ def get_log_level():
1414
return log_level
1515

1616

17+
def get_console_logger():
18+
log_level = get_log_level()
19+
log_name = "console-{}".format(APP_NAME)
20+
log_filename = None
21+
log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
22+
logging.basicConfig(format=log_format, filename=log_filename, level=log_level)
23+
logger = logging.getLogger(log_name)
24+
return logger
25+
26+
27+
def get_stream_handler():
28+
return get_console_logger().parent.handlers[0]
29+
30+
31+
def set_debug_mode(logger, level=None):
32+
logger.addHandler(get_stream_handler())
33+
logger.level = level if level is not None else logging.INFO
34+
35+
1736
def get_logger():
1837
global _LOGGER
1938
if not _LOGGER:

0 commit comments

Comments
 (0)