Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 6eef737
Showing
13 changed files
with
621 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/bin/sh | ||
|
||
TOPDIR="$(dirname $(dirname $(realpath $0)))" | ||
EXZERODIR="${TOPDIR}/.exercicio_zero" | ||
|
||
. "${EXZERODIR}/project" | ||
|
||
|
||
for file in "${TOPDIR}/pyproject.toml" "${TOPDIR}/README.md" | ||
do | ||
echo "Processing ${file}" | ||
sed -i "${file}" -e " | ||
s/@HOMEWORK@/${HOMEWORK}/g | ||
s/@USER@/${USERNAME}/g | ||
s/@REPO@/${REPOSITORY}/g | ||
s/@WORKCODE@/${WORKCODE:-T${WORKNUM}}/g | ||
s/@WORKNUM@/${WORKNUM}/g | ||
s/@MONTH@/${MONTH:-$(date +"%m")}/g | ||
s/@DISC@/${DISCIPLINA}/g | ||
s/@CURSO@/${CURSO:-"Ciência da Computação"}/g | ||
s/@UNIV@/${UNIVERSIDADE:-"Universidade LaSalle Canoas"}/g | ||
" | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
# Copyright (c) 2024 Rafael Guterres Jeffman | ||
# See the file COPYING for license details. | ||
--- | ||
name: grade_work | ||
run-name: | ||
on: push | ||
jobs: | ||
lint_check: | ||
name: Avaliação do pylint | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- run: | | ||
pip install pylint | ||
pylint src | ||
pep8_check: | ||
name: Avaliação do flake8 | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- run: | | ||
pip install flake8 | ||
flake8 --ignore=E501 src | ||
docs_check: | ||
name: Verifica documentação mínima do cốdigo | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- run: | | ||
pip install pydocstyle | ||
pydocstyle src | ||
run_tests: | ||
name: Executa os testes de avaliação | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 1 | ||
- uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.x" | ||
- run: | | ||
pip install behave | ||
pip install -e . | ||
behave | ||
- name: Arquiva resultados | ||
if: ${{ always() }} | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: homework_evaluation | ||
path: RESULT | ||
retention-days: 1 | ||
report_result: | ||
name: Resultados da avaliação | ||
if: ${{ always() }} | ||
needs: run_tests | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Download a single artifact | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: homework_evaluation | ||
- run: sed -n -e '$ ! p' RESULT | ||
name: Resultado | ||
report_grade: | ||
name: Previsão de nota final | ||
if: ${{ always() }} | ||
needs: run_tests | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Download a single artifact | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: homework_evaluation | ||
- run: sed -n -e '$ p' RESULT | ||
name: Previsão de Nota |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# project configuration | ||
.exercicio_zero/project | ||
|
||
# patch files | ||
*.orig | ||
*.rej | ||
|
||
# generated files | ||
/**/__pycache__/ | ||
RESULT | ||
|
||
# test tools | ||
.coverage | ||
.tox |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
Copyright (c) 2024 Rafael Guterres Jeffman | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a | ||
copy of this software and associated documentation files (the "Software"), | ||
to deal in the Software without restriction, including without limitation | ||
the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||
and/or sell copies of the Software, and to permit persons to whom the | ||
Software is furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice (including the next | ||
paragraph) shall be included in all copies or substantial portions of the | ||
Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
Instruções para a realização do exercício | ||
========================================= | ||
|
||
**Prazo máximo para a entrega do exercício: 27/03/2024** | ||
|
||
Objetivos | ||
--------- | ||
|
||
O objetivo desse exercício é praticar o uso do Git e do Github, e entender | ||
como será realizada a avaliação dos trabalhos de implementação da disciplina | ||
de Compiladores. | ||
|
||
Objetivos secundários do exercício é familiarizar o aluno com ferramentas de | ||
automação de testes da linguagem Python, como o `tox` e o `behave`. | ||
|
||
|
||
Instruções | ||
---------- | ||
|
||
O primeiro passo é realizar um _fork_ do projeto no | ||
[Github](https://github.com/exercicios-programacao/compiladores-t0), para o | ||
seu usuário. Esse passo irá criar um repositório do seu usuário que pode ser | ||
utilizado para o desenvolvimento do trabalho. | ||
|
||
Após, você deverá obter uma cópia local do projeto, utilizando o `git`: | ||
|
||
``` | ||
git clone https://github.com/<seu_usuario>/compiladores-t0 | ||
``` | ||
|
||
A partir dessa cópia local você irá implementar o código que falta para que | ||
os testes existentes completem com sucesso. | ||
|
||
Para executar os testes, utilize o comando `behave`. (Veja como preparar o | ||
ambiente de desenvolvimento no arquivo [README.md](README.md)). | ||
|
||
Uma vez que os testes executam corretamente, você pode verificar outras | ||
métricas de qualidade de código, executando programas como `flake8`, | ||
`pylint` ou `pydocstyle`. Estes programas fazem verificação de boas práticas | ||
de codificação na linguagem Python. | ||
|
||
A forma mais simples de executar todos os comandos é utilizando o programa | ||
`tox`, que foi configurado neste projeto para executar tanto os testes de | ||
avaliação do código, como os testes de verificação. | ||
|
||
``` | ||
tox | ||
``` | ||
|
||
Para executar apenas os testes de boas práticas de codificação, execute: | ||
|
||
``` | ||
tox -e lint | ||
``` | ||
|
||
Uma vez que você está satisfeito com os resultados (mesmo que sejam ainda | ||
resultados parciais), você pode _commitar_, localmente, seu trabalho: | ||
|
||
``` | ||
git add <arquivos_novos_ou_modificados> | ||
git commit | ||
``` | ||
|
||
Para verificar a avaliação oficial, você precisará criar um | ||
_pull request_. Para isso deve, primeiro, enviar seu trabalho para o seu | ||
repositório no Github: | ||
|
||
``` | ||
git pull | ||
``` | ||
|
||
Nesse caso, se executado na linha de comando, o git irá mostrar um link | ||
para criar o _pull request_ contra o repositório original. Basta completar | ||
as informações e criar o _pull request_, que a avaliação oficial será | ||
executada e pode ser acompanhada na aba _Actions_. | ||
|
||
Entre as informações que você precisa preencher estão: | ||
|
||
* Nome completo do aluno no _título_ do _pull request_. | ||
* Citar quais foram suas dificuldades no campo de texto do _pull request_. | ||
|
||
Caso você não utilize a linha de comando o processo de criação do | ||
_pull request_ deve ser realizado pelo Github, ou utilizando as ferramentas | ||
do seu ambiente de desenvolvimento escolhido. | ||
|
||
|
||
Tarefas | ||
------- | ||
|
||
Você deve completar o código de forma a passar nos testes automatizados. | ||
Para isso, você precisa implementar, no módulo `zero`, os métodos: | ||
|
||
* `procura_maior(dados: list) -> int` | ||
: Retorna o inteiro com o maior valor, presente na lista. | ||
* `procura_menor(dados: list) -> int` | ||
: Retorna o inteiro com o menor valor, presente na lista. | ||
* `procura_impares(dados: list) -> list` | ||
: Retorna a lista de elementos ímpares, presentes na lista. | ||
* `procura_pares(dados: list) -> list` | ||
: Retorna a lista de elementos pares, presentes na lista. | ||
|
||
Como exemplo, parte do trabalho já foi realizado, e foi incluida a | ||
implementação do método `procura_maior(dados: list) -> int`. | ||
|
||
|
||
Importante | ||
---------- | ||
|
||
* A nota final do trabalho será atribuída pelo professor, baseado na nota | ||
da avaliação automática, de acordo com o resultado disponível na data de | ||
entrega do trabalho. Um comentário irá marcar o número (_hash_) do _commit_ | ||
utilizado para a avaliação. | ||
|
||
* Sempre que você alterar o estado do _branch_ que você utilizou para criar | ||
o _pull request_, a avaliação será executada novamente, logo, você pode | ||
utilizar essa característica para acompanhar o seu desenvolvimento. | ||
|
||
* Para este trabalho, apenas o arquivo `src/zero.py` pode ser alterado. | ||
|
||
* O resultado desse exercício não fará parte da nota do grau. | ||
|
||
|
||
Sobre a Avaliação | ||
----------------- | ||
|
||
Ao requisitar o _pull request_ uma série de testes serão executados e uma | ||
indicação da nota obtida no trabalho será fornecida. Note que esta nota pode | ||
aumentar ou diminuir dependendo de outros fatores, como falhas nos testes de | ||
qualidade de código, que diminuiriam a nota, ou soluções criativas e/ou | ||
elegantes, que aumentariam a nota. | ||
|
||
> **IMPORTANTE:** não é permitida a alteração de **nenhum** arquivo fora do | ||
diretório `src`. Caso você queira adicionar mais testes, crie novos | ||
arquivos no diretório `features`, mas não modifique os arquivos existentes. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
compiladores-t0 | ||
==================== | ||
|
||
Exemplo de projeto com avaliação automática de resultados. | ||
|
||
Preparação para a execução do trabalho | ||
-------------------------------------- | ||
|
||
Para iniciar este trabalho, faça um _fork_ do repositório | ||
[https://github.com/exercicios-programacao/compiladores-t0](https://github.com/exercicios-programacao/compiladores-t0) | ||
para o seu usuário do Github. | ||
|
||
Siga as orientações para a preparação do ambiente de desenvolvimento | ||
contidas nesse documento. | ||
|
||
Todo o código implementado deve estar dentro do diretório `src`. Siga as | ||
instruções contidas no arquivo `INSTRUCOES.md`, que contém os objetivos e | ||
etapas para a realização do trabalho. | ||
|
||
|
||
Instalação das Dependências | ||
--------------------------- | ||
|
||
Para realizar este trabalho você deverá utilizar a linguagem de programação | ||
Python, na versão 3.11 ou superior. | ||
|
||
Para isolar o ambiente de desenvolvimento, é sugerido o uso de ambientes | ||
virtuais do Pyhton, e você pode criar um ambiente virtual corretamente | ||
configurado com os comandos: | ||
|
||
``` | ||
$ python -m venv /tmp/compiladores-t0 | ||
$ pip install -e . | ||
``` | ||
|
||
|
||
Desenvolvimento | ||
--------------- | ||
|
||
Durante o desenvolvimento do trabalho, você pode executar os testes, | ||
localmente, utilizando os comandos `tox` ou `behave`. A diferença entre os | ||
dois é que o `behave` executa apenas os testes funcionais e o `tox` executa | ||
os testes de qualidade de código, como formatação e boas práticas. | ||
|
||
É sugerido que se trabalhe em um cenário de cada vez, o que pode ser obtido | ||
utilizando-se o comando `behave --stop`, para que os testes funcionais | ||
parem na primeira falha. | ||
|
||
|
||
Entrega | ||
------- | ||
|
||
Para entregar o trabalho, faça commit do código, envie para o seu _fork_ no | ||
Github, e abra um _pull request_ contra o | ||
[repositório original](https://github.com/exercicios-programacao/compiladores-t0). | ||
|
||
O título do _pull request_ deve conter o nome do aluno que o está criando. | ||
Na mensagem deve constar o nome completo do autor do _pull request_, e de | ||
todos os alunos que realizaram o trabalho, no caso de trabalhos em grupo. | ||
Qualquer informação necessária para a entrega do trabalho deve estar | ||
presente no corpo dessa mensagem. | ||
|
||
Você deve garantir que os testes (`checks`) executaram corretamente, pois é | ||
a partir deles que será realizada a avaliação. | ||
|
||
|
||
Discussões Online | ||
----------------- | ||
|
||
Dúvidas e disccussões sobre o trabalho podem ser realizadas utilizando as | ||
[discussões do Github](https://github.com/exercicios-programacao/compiladores-t0/discussions). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# SPDX-License-Identifer: MIT | ||
|
||
"""Commom test functionality.""" | ||
|
||
import sys | ||
|
||
|
||
def import_module_error(module_name): | ||
"""Provide a better message when test module is not available.""" | ||
print(f"Você implementou o módulo '{module_name}'?", file=sys.stderr) | ||
sys.exit(1) | ||
|
||
|
||
def import_function_error_message(module_name, function_name): | ||
"""Generate a better message for unimplemented tested function.""" | ||
return ( | ||
f"Você implementou a função '{function_name}' " | ||
f"no módulo '{module_name}'?" | ||
) | ||
|
||
|
||
def import_function_error(module_name, function_name): | ||
"""Provide a better message when failed to importe tested function.""" | ||
print( | ||
import_function_error_message(module_name, function_name), | ||
file=sys.stderr, | ||
) | ||
sys.exit(1) | ||
|
||
|
||
def expected_observed_mismatch(expected, observed): | ||
"""Return a message when the expected/observed values mismatch.""" | ||
return f"Value mismatch: expected={expected} - observed={observed}" |
Oops, something went wrong.