exams

feupy.exams.exams(url: str, use_cache: bool = True) → list

Returns a list of dictionaries.

Each dictionary represents an exam and has 6 keys:

key value
“curricular unit” (feupy.CurricularUnit) The subject being evaluated
“finish” (datetime.datetime) The finish time of the exam
“observations” (str)
“rooms” (tuple(str)) The rooms in which the exam will take place
“season” (str)
“start” (datetime.datetime) The start time of the exam

Note

If a value is not available, it will be set to None.

Parameters:
  • url (str) – The url of the page with the exams to be parsed
  • use_cache (bool, optional) – Attempts to use the cache if True, otherwise it will fetch from sigarra
Returns:

A list of dictionaries

Example:

from feupy.exams import exams
from pprint import pprint

mieic_exams_url = "https://sigarra.up.pt/feup/pt/exa_geral.mapa_de_exames?p_curso_id=742"

pprint(exams(mieic_exams_url))
# You'll get something like this:
[{'curricular unit': CurricularUnit(420016),
'finish': datetime.datetime(2019, 9, 4, 12, 0),
'observations': 'Exame em comum com Mecanica.Exame em comum com o da Época '
                'de Conclusão de Curso',
'rooms': ('B222',),
'season': 'Exames ao abrigo de estatutos especiais - Port.Est.Especiais 2ºS',
'start': datetime.datetime(2019, 9, 4, 9, 0)},

{'curricular unit': CurricularUnit(419990),
'finish': datetime.datetime(2019, 9, 6, 17, 0),
'observations': 'Sala de exame - Em principio 2 alunos ',
'rooms': ('B222',),
'season': 'Exames ao abrigo de estatutos especiais - Port.Est.Especiais 2ºS',
'start': datetime.datetime(2019, 9, 6, 14, 0)},

{'curricular unit': CurricularUnit(420021),
'finish': datetime.datetime(2019, 9, 18, 17, 30),
'observations': 'Sala de exame - possivelmente 3 alunos ',
'rooms': None,
'season': 'Exames ao abrigo de estatutos especiais - Port.Est.Especiais 2ºS',
'start': datetime.datetime(2019, 9, 18, 14, 30)},

{'curricular unit': CurricularUnit(438941),
'finish': datetime.datetime(2019, 9, 25, 13, 0),
'observations': None,
'rooms': ('B104', 'B208', 'B213'),
'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1ºS)',
'start': datetime.datetime(2019, 9, 25, 9, 0)},

{'curricular unit': CurricularUnit(438941),
'finish': datetime.datetime(2019, 9, 25, 17, 30),
'observations': None,
'rooms': ('B104', 'B213', 'B208', 'B207'),
'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1ºS)',
'start': datetime.datetime(2019, 9, 25, 13, 30)},

{'curricular unit': CurricularUnit(438941),
'finish': datetime.datetime(2019, 9, 26, 13, 0),
'observations': None,
'rooms': ('B104', 'B208', 'B213'),
'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1ºS)',
'start': datetime.datetime(2019, 9, 26, 9, 0)},

{'curricular unit': CurricularUnit(438941),
'finish': datetime.datetime(2019, 9, 26, 17, 30),
'observations': None,
'rooms': ('B104', 'B213', 'B208', 'B207'),
'season': 'Exames ao abrigo de estatutos especiais - Mini-testes (1ºS)',
'start': datetime.datetime(2019, 9, 26, 13, 30)}]