Missão: sua caixa de ferramentas
Sete missões, uma biblioteca: você constrói uma pequena caixa de ferramentas tipada e testada, juntando o que aprendeu no curso (dataclasses, decoradores, context managers, geradores, exceções e testes). Cada peça é validada aqui mesmo, no navegador, pela saída que ela produz. Você não escreve mais só scripts: você projeta um módulo reutilizável.
Missão 1 de 7 · 30 XP
Missão 1: o dado tipado
Toda a caixa de ferramentas gira em torno de um registro de tarefa. Ele guarda um titulo e uma prioridade, com tipos declarados, e ganha __repr__ de graça da dataclass.
Objetivo: Complete a dataclass Tarefa com titulo: str e prioridade: int, e mostre uma instância. Esperado: Tarefa(titulo='estudar', prioridade=1)
Missão 2 de 7 · 30 XP
Missão 2: constantes com Enum
Prioridade solta como número vira bug. Um Enum dá nomes claros aos níveis e evita valores inválidos espalhados pelo código.
Objetivo: Complete o Enum Nivel com BAIXA=1, MEDIA=2, ALTA=3 e mostre o nome do nivel de valor 3. Esperado: ALTA
Missão 3 de 7 · 35 XP
Missão 3: um decorador próprio
A biblioteca oferece um decorador que conta quantas vezes uma função foi chamada, guardando o total num atributo da própria função. Determinístico e útil para diagnóstico.
Objetivo: Complete o wrapper para incrementar wrapper.chamadas a cada chamada. Depois de chamar oi() duas vezes, imprima o total. Esperado: chamadas: 2
Missão 4 de 7 · 35 XP
Missão 4: um context manager
A caixa traz um gerenciador de contexto que marca o início e o fim de uma etapa de trabalho, garantindo a mensagem de fim mesmo que algo aconteça no meio.
Objetivo: Complete o context manager etapa(nome) para imprimir 'inicio: nome' antes e 'fim: nome' depois. Use com 'carga'. Esperado, em ordem: inicio: carga / processando / fim: carga
Missão 5 de 7 · 35 XP
Missão 5: um gerador da biblioteca
A biblioteca sabe percorrer tarefas e entregar, sob demanda, só as de alta prioridade. Um gerador faz isso sem construir uma lista nova na memória.
Objetivo: Complete apenas_altas para produzir os titulos das tarefas com prioridade >= 3. Esperado: deploy
Missão 6 de 7 · 40 XP
Missão 6: erro do domínio
Uma biblioteca séria não deixa passar dado inválido em silêncio. Uma exceção própria dá à falha um tipo claro, que quem usa a biblioteca pode capturar.
Objetivo: Complete validar para levantar TarefaInvalidaError quando o titulo estiver vazio. Ao validar '', imprima 'invalida'. Com 'ok', imprima 'valida'.
Missão 7 de 7 · 45 XP
Missão 7: a biblioteca testada
A missão final junta as peças numa função da biblioteca e a cobre com testes usando assert, do jeito que o pytest faria. Se todos os asserts passarem, a biblioteca está pronta.
Objetivo: Complete contar_altas para devolver quantas tarefas têm prioridade >= 3. Os asserts checam o resultado. Esperado: todos os testes passaram