/python_project_template

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

python_project_template

project template for python projects

Python

A intenção desse documento é auxiliar no gerenciamento do meu desenvolvimento com Python 3, além de entender e estruturar códigos no geral.

Se estiver perdido, comece por: Roadmap.sh

Triangle-headed Arrows with Bent Tips

Conteúdos:

📁 Estrutura básica de todo código

Baseado nesse artigo aqui:

project_name/
↳ docs/ # pasta para o sphinx construir a documentação
↳	logs/ # pasta para enventuais logs
↳	src/ # código fonte
			↳ __init__.py
			↳ classes/
				↳ __init__.py
↳	tests/ # código teste
↳	README.md
↳	requirements.txt
↳	.gitignore
↳	.env
↳	LICENSE

# opcionais
↳ data/ # pasta para guardar dados (csv,etc)
↳notebooks/ # notebooks para eventuais testes
↳ queries/ # arquivos de consulta no banco de dados

🧪 Estrutura dos testes

Use o pytest, de preferência

tests/
		↳__init__.py # por algum motivo, isso é necessário
		↳test_classes/
								↳ test_example.py	
		↳test_helpers/
								↳ test_example_2.py

Exemplo de código de teste test_new_logger.py

from src.helpers import new_logger # importando a função
from datetime import datetime

class Test_new_logger():
    def test_now_time(self):
        r = new_logger.now_date_time_str(True)
        now = datetime.now().strftime("%d-%m-%y")
        assert r == now

🐍 Estilo do código

PEP8: https://peps.python.org/pep-0008/

https://marketplace.visualstudio.com/items?itemName=ms-python.autopep8

https://pypi.org/project/autopep8/

⏲️ Medindo performance

Instead use “perf_counter()”. This will give you the most accurate way for calculating how much time taken by the code to run.

from time import perf_counter
def checking_performance():
  start_time = perf_counter()
  time.sleep(1)
  end_time = perf_counter()
  print(end_time - start_time)

python topics

Best Practices

[AI to improve your code](https://www.notion.so/AI-to-improve-your-code-ec92610490a94a95898523d13039eeed?pvs=21)

Software Design Document Template

Documentation

[Code Diagnosis & Documentation](https://www.notion.so/Code-Diagnosis-Documentation-d063331228c14292927b3bedac8bff5e?pvs=21)

SPHINX

OOP

OOP

Async

Async

Code Architecture

Factory Method

Dependency Inversion and Injection

Testing

Unit Testing

CI/CD

Random

Django

Materiais diversos

Logs