Skip to content

Jonathan-R-Andrade/inventory-report

Repository files navigation

Inventory Reports

Projeto desenvolvido por Jonathan R. Andrade na Trybe.

Sobre

Gerador de relatórios escrito em Python que recebe como entrada arquivos de vários formatos contendo dados de um estoque e gera, como saída, um relatório sobre estes dados.

Os formatos de entrada dos arquivos suportados são: .xml, .csv e .json. É possível adicionar novos formatos de entrada facilmente graças ao uso do padrão de projeto Strategy, utilizado nas classes de importação de dados. Outro padrão de projeto, utilizado na classe ColoredReport, foi o Decorator para adicionar cor ao relatório sem precisar fazer grandes alterações no código.

Habilidades desenvolvidas

  • Aplicar conceitos de Orientação a Objetos em Python;
  • Aplicar padrões de projeto;
  • Ler e escrever arquivos XML, CSV e JSON;
  • Escrever testes unitários em Python.

Ferramentas/Tecnologias utilizadas

  • Python v3.10.6
  • Docker v24.0.2

Como executar

Siga os passos abaixo executando os comandos no terminal.

  1. Clone o repositório.

    • Exemplo com Git + HTTPS
      git clone https://github.com/Jonathan-R-Andrade/inventory-report.git
    • Exemplo com Git + SSH
      git clone git@github.com:Jonathan-R-Andrade/inventory-report.git
    • Usando GitHub CLI
      gh repo clone Jonathan-R-Andrade/inventory-report
  2. Entre na pasta do projeto.

    cd inventory-report
  3. Prepare o ambiente usando o Python instalado localmente ou o Docker.

    • Usando o Python instalado localmente.
      1. Crie o ambiente virtual.
      python3 -m venv .venv
      1. Ative o ambiente virtual.
      source .venv/bin/activate
      1. Instale as dependências.
      python3 -m pip install -r dev-requirements.txt
      1. Instale o projeto.
      python3 -m pip install .
    • Usando o Docker.
      1. Crie a imagem.
      docker image build -t inventory-report .
      1. Inicie o contêiner.
      docker run --name inventory-report -it inventory-report bash

      O comando acima cria um contêiner com o nome inventory-report e abre um terminal interativo dentro dele, execute os próximos comandos neste terminal.

  4. Execute o gerador de relatórios.

    O comando usado para executar o gerador de relatórios é inventory_report, ele recebe como argumento o caminho para um arquivo e uma string (simples ou completo) que representa o tipo de relatório a ser gerado.

  • Exemplo de um relatório simples usando um arquivo CSV.

    inventory_report inventory_report/data/inventory.xml simples
  • Exemplo de um relatório completo usando um arquivo JSON.

    inventory_report inventory_report/data/inventory.json completo
  1. Execute os testes.

    Poucos testes foram escritos para este projeto, apenas para demonstrar o uso de testes unitários em Python.

    python3 -m pytest

    Ou simplesmente.

    pytest