Skip to content

Commit ab86a88

Browse files
Jhoanrodriguez/add pylint GitHub actions (#567)
* added pylint verification * Include pylint at requirements.txt fixed some pylint warnings. * Fixed all the pylint warnings
1 parent 5b5b93a commit ab86a88

File tree

4 files changed

+91
-17
lines changed

4 files changed

+91
-17
lines changed

.github/workflows/deploy.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ jobs:
3939
run: |
4040
python -m pip install --upgrade pip setuptools
4141
pip install -r requirements.txt
42+
pip install -r test-requirements.txt
43+
44+
- name: Verificar Pylint
45+
run: pylint --recursive=y tests scripts
4246

4347
- name: Construir pagina pybaq
4448
run: lektor build -O '${{ env.OUTPUT }}'

requirements.txt

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
1+
astroid==3.2.4
2+
babel==2.16.0
3+
blinker==1.8.2
4+
certifi==2024.8.30
5+
charset-normalizer==3.4.0
6+
click==8.1.7
7+
dill==0.3.9
8+
ExifRead==3.0.0
9+
filetype==1.2.0
110
Flask==2.3.3
11+
idna==3.10
12+
importlib_metadata==8.5.0
13+
inifile==0.4.1
14+
isort==5.13.2
15+
itsdangerous==2.2.0
16+
Jinja2==3.1.4
217
Lektor==3.3.11
18+
MarkupSafe==2.1.5
19+
mccabe==0.7.0
20+
mistune==0.8.4
21+
platformdirs==4.3.6
22+
pylint==3.2.7
23+
python-slugify==8.0.4
24+
pytz==2023.3.post1
325
requests==2.32.0
26+
text-unidecode==1.3
27+
tomli==2.0.2
28+
tomlkit==0.13.2
29+
typing_extensions==4.12.2
30+
urllib3==2.2.3
31+
watchdog==4.0.2
432
Werkzeug==2.3.7
5-
pytz==2023.3.post1
33+
zipp==3.20.2

scripts/create_events.py

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,46 @@
1-
from collections import OrderedDict
1+
"""
2+
Este script procesa eventos de un archivo JSON de Meetup y los transforma
3+
para ser almacenados en el sistema de contenido.
4+
"""
5+
26
import json
37
import os
4-
from lektor.project import Project
8+
from collections import OrderedDict
9+
510
from lektor.utils import slugify
611

712
HERE = os.path.abspath(os.path.dirname(__file__))
813
PROJECT_ROOT_PATH = os.path.dirname(HERE)
914

15+
1016
def extract_meetup_json(file):
17+
"""
18+
Lee el archivo JSON proporcionado y devuelve una lista de eventos.
19+
20+
Args:
21+
file (str): Ruta al archivo JSON de Meetup.
22+
23+
Returns:
24+
list: Lista de eventos obtenidos del archivo JSON.
25+
"""
1126
with open(file, "r", encoding="utf-8") as meetup_data:
1227
events = json.loads(meetup_data.read())
1328
return events
1429

30+
1531
def transform_event(event: dict):
32+
"""
33+
Transforma un evento de Meetup en un diccionario ordenado con los campos necesarios.
34+
35+
Args:
36+
event (dict): Diccionario con los datos del evento de Meetup.
37+
38+
Returns:
39+
OrderedDict: Diccionario ordenado con los campos transformados.
40+
"""
1641
content = OrderedDict()
1742
content["title"] = event["name"]
18-
content["date_start"] = "{} {}".format(event["local_date"], event["local_time"])
43+
content["date_start"] = f"{event['local_date']} {event['local_time']}"
1944
content["link"] = event["link"]
2045
content["information"] = event["description"]
2146
try:
@@ -29,25 +54,41 @@ def transform_event(event: dict):
2954
print("Key error: venue on", event["name"])
3055
return content
3156

57+
3258
def write_content(slug, fields):
33-
folderpath = os.path.join(PROJECT_ROOT_PATH, 'content', 'eventos', slug)
59+
"""
60+
Escribe el contenido del evento en un archivo con formato específico.
61+
62+
Args:
63+
slug (str): Slug único del evento.
64+
fields (OrderedDict): Campos del evento a escribir en el archivo.
65+
"""
66+
folderpath = os.path.join(PROJECT_ROOT_PATH, "content", "eventos", slug)
3467
if not os.path.isdir(folderpath):
3568
os.makedirs(folderpath)
36-
filepath = os.path.join(folderpath, 'contents.lr')
37-
items = ['{}: {}\n'.format(key, value) for key, value in fields.items()]
69+
filepath = os.path.join(folderpath, "contents.lr")
70+
items = [f"{key}: {value}\n" for key, value in fields.items()]
3871

3972
if os.path.isfile(filepath):
40-
print("File for slug {} already exists, skipping".format(slug))
73+
print(f"File for slug {slug} already exists, skipping")
4174
else:
42-
with open(filepath, 'w') as fh:
43-
fh.write('---\n'.join(items))
75+
with open(filepath, "w", encoding="utf-8") as fh:
76+
fh.write("---\n".join(items))
4477

45-
def load_events(events):
46-
for event in events:
47-
write_content(event["date_start"][:10] + "-" + slugify(event["title"]), event)
4878

49-
if __name__ == '__main__':
50-
events = extract_meetup_json("databags/meetup.json")
51-
transformed_events = [transform_event(event) for event in events["past_events"]]
52-
load_events(transformed_events)
79+
def load_events(event_list):
80+
"""
81+
Carga y guarda eventos transformados.
82+
83+
Args:
84+
event_list (list): Lista de eventos transformados.
85+
"""
86+
for event in event_list:
87+
slug = event["date_start"][:10] + "-" + slugify(event["title"])
88+
write_content(slug, event)
5389

90+
91+
if __name__ == "__main__":
92+
event_data = extract_meetup_json("databags/meetup.json")
93+
transformed_events = [transform_event(event) for event in event_data["past_events"]]
94+
load_events(transformed_events)

scripts/events.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Descarga eventos usando Meetup api"""
22

33
import json
4+
45
import requests
56

67
# NOTE: This endpoint no requires authentication, but this API is deprecated

0 commit comments

Comments
 (0)