Criando uma Estrutura de Pacote Completa
Agora que entendemos os princípios básicos dos pacotes Python e o papel do arquivo __init__.py, vamos criar uma estrutura de pacote mais completa que segue as melhores práticas. Isso ajudará você a organizar projetos maiores de forma eficaz.
Melhores Práticas para a Estrutura do Pacote
Um pacote Python bem organizado normalmente segue esta estrutura:
package_name/
├── __init__.py
├── module1.py
├── module2.py
├── subpackage1/
│ ├── __init__.py
│ └── module3.py
├── subpackage2/
│ ├── __init__.py
│ └── module4.py
├── README.md
├── setup.py
└── tests/
├── __init__.py
├── test_module1.py
└── test_module2.py
Vamos implementar uma versão simplificada desta estrutura para nosso pacote de calculadora:
- Crie um arquivo README.md:
touch ~/project/calculator_package/README.md
- Abra o arquivo README.md no WebIDE e adicione:
Pacote Calculator
Um pacote Python simples que fornece funções básicas e avançadas de calculadora.
Recursos
- Operações aritméticas básicas (adição, multiplicação)
- Operações científicas avançadas (raiz quadrada, potência)
Uso
from calculator_package import add_two_numbers, multiply_two_numbers
from calculator_package.advanced import square_root, power
## Operações básicas
result1 = add_two_numbers(5, 3)
result2 = multiply_two_numbers(4, 2)
## Operações avançadas
result3 = square_root(16)
result4 = power(2, 3)
- Crie um diretório de testes:
mkdir ~/project/calculator_package/tests
touch ~/project/calculator_package/tests/__init__.py
- Crie arquivos de teste:
touch ~/project/calculator_package/tests/test_basic.py
- Abra
test_basic.py no WebIDE e adicione:
import unittest
from calculator_package import add_two_numbers, multiply_two_numbers
class TestBasicOperations(unittest.TestCase):
def test_addition(self):
self.assertEqual(add_two_numbers(5, 3), 8)
self.assertEqual(add_two_numbers(-1, 1), 0)
def test_multiplication(self):
self.assertEqual(multiply_two_numbers(5, 3), 15)
self.assertEqual(multiply_two_numbers(-2, 3), -6)
if __name__ == '__main__':
unittest.main()
- Crie um arquivo setup.py para distribuição do pacote:
touch ~/project/setup.py
- Abra
setup.py no WebIDE e adicione:
from setuptools import setup, find_packages
setup(
name="calculator_package",
version="0.1.0",
author="Your Name",
author_email="your.email@example.com",
description="Um pacote de calculadora simples",
packages=find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
)
- Vamos executar os testes unitários:
cd ~/project
python3 -m calculator_package.tests.test_basic
Você deve ver uma saída semelhante a:
Pacote Calculator v0.1.0 inicializado
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
Isso confirma que nosso pacote está bem estruturado e os testes estão funcionando corretamente.
Documentação do Pacote com Docstrings
Boa documentação é essencial para qualquer pacote Python. Vamos adicionar docstrings adequadas ao nosso pacote:
- Atualize o arquivo
calculator_package/__init__.py para incluir uma docstring em nível de pacote:
"""
Pacote Calculator - Uma coleção de funções de calculadora.
Este pacote fornece várias funções de calculadora, incluindo operações
aritméticas básicas e operações científicas avançadas.
"""
## Importa funções de módulos
from .addition import add_two_numbers, add_multiple_numbers
from .multiplication import multiply_two_numbers, multiply_multiple_numbers
## Define variáveis em nível de pacote
__version__ = "0.1.0"
__author__ = "Your Name"
## Imprime uma mensagem quando o pacote é importado
print(f"Pacote Calculator v{__version__} inicializado")
## Importa o subpacote avançado
from . import advanced
- Você pode visualizar a docstring usando a função help do Python:
cd ~/project
python3 -c "import calculator_package; help(calculator_package)"
Isso deve exibir a documentação do pacote:
Help on package calculator_package:
NAME
calculator_package - Pacote Calculator - Uma coleção de funções de calculadora.
DESCRIPTION
Este pacote fornece várias funções de calculadora, incluindo operações
aritméticas básicas e operações científicas avançadas.
PACKAGE CONTENTS
addition
advanced (package)
multiplication
tests (package)
DATA
__author__ = 'Your Name'
__version__ = '0.1.0'
FILE
/home/labex/project/calculator_package/__init__.py
Esta documentação ajuda os usuários a entender o propósito e as capacidades do seu pacote.