Contribution
Regras para realizar upload {commit} no projeto myfempy
Este repositório destina-se ao gerenciamento das versões de desenvolvimento do projeto myfempy. Para que se tenha um código claro e limpo, as seguintes regras são aplicadas para manter um padrão geral do projeto.
1 - Estilos gerais utilizados no projeto
1.1 - Estilo dos códigos .py
O padrão utilizado na sintax da escrita dos códigos é o PEP8.
1.1.1 - Padrão de criação de classes class AbcAbc
# the file name is abcabc.py
class AbcAbc: # class name
def __init__(self, x:int, y:float, z:str): # constructor method in python
# add parameter in class
self.x = x
self.y = y
self.z = z
1.1.2 - Padrão de criação de funções def abc_abc
# the file name is abcabc.py
def abc_abc(x:int, y:float): # function
soma_x = x + x
div_y = x/y
return div_y
1.2 - __doc__
de classes e funções
Toda classe e função deve conter sua documentação interna {__doc__
}.
1.2.1 - Procedimento
-
Utilizar a referência PEP8.
-
Apresentar em uma única linha o que aquela classe ou função executa.
-
Use comentarios para informações adicionais.
-
Todas as entradas e saídas e a tipagem de dados deve ser indicados.
-
O idioma padrão é o inglês técnico.
Exemplo:
# the file name is abcabc.py
# '__doc__' to a short documentation, try AbcAbc.__doc__ ....
__doc__ = """
This is a short documentation of class AbcAbc...
"""
class AbcAbc: # class name
"""
Abc: class
This class do...
"""
def __init__(self, x:int, y:float, z:str): # constructor method in python
"""
This class do...
Args:
x (int): int number
y (float): float number
z (str): string name
"""
# add parameter in class
self.x = x
self.y = y
self.z = z
def abc_abc(self): # class function
"""
This function do...
Returns:
div_y (float): _description_
"""
soma_x = self.x + self.x
div_y = self.x/soma_x
return div_y
1.3 - Documentação online
O padrão utilizado para escrever a documentação oficial do projeto é no formato Markdown.
Atualmente o projeto utiliza o pacote mkdocs para gerar a documentação online {.html}, que é hospedada no site GitHub Page.
O sphinx converte arquivos .rst {reStruturedText} para .html/pdf de uma forma prática. Também é possível converter arquivos .md {markdown} em .rst, uma opção interessante é mdToRst ou de forma onlline com o vertopal.
1.3.1 - Procedimento de atualização da documentação online
-
Para editar a documentação online oficial do projeto basta atualizar os arquivos .md na pasta \docs.
-
Gere uma documentação automática a partir do arquivo de configuração mkdocs.yml com o comando:
>> mkdocs build # constroe os arquivos em \site
>> mkdocs gh-deploy # deploy para o endereço de hospedagem no github pages
Veja a seção [1.2 - __doc__
de classes e funções]
6.Verificar se não a bugs na documentação.
2 - Testes, bugs, e documentação
2.1 - Utilizando o line_profiler para verificar performance do código, linha-linha
@profile
def slow_function(a, b, c):
...
>> kernprof -l -v 'script_to_profile.py'
>> python -m line_profiler script_to_profile.py.lprof
2.2 - Teste de verificação manual, antes realizar o commit para o main
Executar na pasta principal do projeto \myfempy
>> black nome_do_script.py/<pasta> # biblioteca que formata o código de acordo com a PEP 8
>> flake8 --extend-ignore=E501{line too long (82>79 characters) erro} nome_do_script.py/<pasta> #framework que checa o estilo e qualidade de código Python
>> isort nome_do_script.py/<pasta> # biblioteca Python para formatar automaticamente as importações de acordo com a PEP 8
>> interrogate -vv nome_do_script.py/<pasta> # framework para verificar a ausência de documentações (docstring) no código.
Estes sistemas também podem ser verificados de forma automatica via Makefile. Faça,
>> make install # instala o pacote com poetry
>> make format # verifica a formação com black e isort
>> make lint # verifica a o estilo (PEP 08) com flake8 e interrogate
>> make test # test arquivos de itegração do pacote com pytest
>> make sec # verifica vulnerabilidades com pip-audit
https://medium.com/gbtech/aprimorando-qualidade-de-c%C3%B3digo-python-com-black-flake8-isort-e-interrogate-d5c089121357
3 - Git
Utilize commits para subir atualizações no repositório do github (https://github.com/easycae-3d/simple_myfempy_oop).
Faça,
git status # verifica as modificações no sistema
git add <file>... # to update what will be committed
git commit -m 'Commit menssage' # commit
git push # push para a _main_ do projeto
Após realizar o envio das modificações, faça realeases quando necessário, utilize tags das versões como marcadores e gere os changelogs para documentar as modificações ao longo do projeto.
4 - Instalação do pacote
Faça,
pip install . # instala o pacote myfempy do pyproject.toml