Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
henrique-tostes-a3 committed Sep 2, 2024
0 parents commit 9e43dd6
Show file tree
Hide file tree
Showing 13 changed files with 330 additions and 0 deletions.
146 changes: 146 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Data
/data/

# Mac OS-specific storage files
.DS_Store

# vim
*.swp
*.swo

## https://github.com/github/gitignore/blob/4488915eec0b3a45b5c63ead28f286819c0917de/Python.gitignore

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# MkDocs documentation
docs/site/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/
26 changes: 26 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# .pre-commit-config.yaml
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
hooks:
- id: trailing-whitespace
- id: check-yaml
- id: check-added-large-files

- repo: https://github.com/psf/black
rev: 23.1.0
hooks:
- id: black
args: ["--config=pyproject.toml"]
language_version: python3

- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort

- repo: https://github.com/pycqa/flake8
rev: 6.1.0
hooks:
- id: flake8
args: ["--config=pyproject.toml"]
73 changes: 73 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Define o diretório do ambiente virtual
VENV_DIR = venv

# Define o nome do comando para o Python
PYTHON = python3

## Cria o ambiente virtual, se não existir
.PHONY: venv
venv:
@if [ ! -d "$(VENV_DIR)" ]; then \
echo "Criando o ambiente virtual..."; \
$(PYTHON) -m venv $(VENV_DIR); \
else \
echo "O ambiente virtual já existe."; \
fi

## Instala o Poetry no ambiente virtual
.PHONY: install-poetry
install-poetry: venv
@echo "Instalando o Poetry..."
$(VENV_DIR)/bin/pip install poetry

## Instala dependências com o Poetry
.PHONY: install-dependencies
install-dependencies: install-poetry
@echo "Instalando dependências com o Poetry..."
$(VENV_DIR)/bin/poetry lock
$(VENV_DIR)/bin/poetry install

## Instala os hooks de pre-commit com o Poetry
.PHONY: install-pre-commit
install-pre-commit: install-dependencies
@echo "Instalando hooks de pre-commit"
$(VENV_DIR)/bin/poetry run pre-commit install

## [PADRÃO] Prepara todo o repositório com o poetry e pre-commit
.PHONY: init
init: install-pre-commit

## Remove todo o ambiente virtual e desconfigura o pre-commit
.PHONY: clean
clean:
@echo "Removendo pre-commit..."
$(VENV_DIR)/bin/poetry run pre-commit uninstall
$(VENV_DIR)/bin/poetry run pre-commit clean
@echo "Removendo o ambiente virtual..."
rm -rf $(VENV_DIR)

## Atualiza as dependências no poetry, útil quando alterar bibliotecas em pyproject.toml
.PHONY: update
update:
@echo "Atualizando pacotes com poetry"
$(VENV_DIR)/bin/poetry lock
$(VENV_DIR)/bin/poetry install


#################################################################################
# Self Documenting Commands #
#################################################################################

.DEFAULT_GOAL := help

define PRINT_HELP_PYSCRIPT
import re, sys; \
lines = '\n'.join([line for line in sys.stdin]); \
matches = re.findall(r'\n## (.*)\n[\s\S]+?\n([a-zA-Z_-]+):', lines); \
print('Comandos disponíveis:\n'); \
print('\n'.join(['{:25}{}'.format(*reversed(match)) for match in matches]))
endef
export PRINT_HELP_PYSCRIPT

help:
@$(PYTHON) -c "${PRINT_HELP_PYSCRIPT}" < $(MAKEFILE_LIST)
56 changes: 56 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
```
├── api # Código da API para interagir com o modelo
│ └── __init__.py # Torna o diretório um módulo Python
├── config # Configurações de nível de projeto
│ ├── __init__.py # Torna o diretório um módulo Python
│ └── environments # Configurações de ambiente (ex. dotenv, YAML)
├── data # Organização dos dados
│ ├── external # Dados de fontes de terceiros
│ ├── interim # Dados intermediários que foram transformados
│ ├── processed # Conjuntos de dados finais e canônicos para modelagem
│ └── raw # Dados originais e imutáveis
├── deployment # Arquivos relacionados à implantação e DevOps
│ ├── docker # Arquivos para construção e gerenciamento de imagens Docker
│ ├── infrastructure # Código para gerenciar a infraestrutura do projeto
│ │ └── terraform # Arquivos Terraform para provisionamento de infraestrutura
│ ├── pipelines # Pipelines de CI/CD
│ └── scripts # Scripts de suporte para construção e implantação
├── docs # Um projeto mkdocs padrão
├── models # Modelos treinados e scripts relacionados
│ ├── __init__.py # Torna o diretório um módulo Python
│ ├── data # Scripts para coleta, leitura e processamento de dados
│ └── trained # Modelos treinados e serializados
├── notebooks # Notebooks Jupyter
├── reports # Análises e relatórios gerados
│ ├── figures # Gráficos e figuras gerados para os relatórios
│ └── html # Relatórios gerados em HTML
├── src # Código fonte para desenvolvimento do modelo
│ ├── __init__.py # Torna o diretório um módulo Python
│ ├── pipelines # Códigos para pipelines de treino, criação de features e predição
│ │ ├── features.py # Código para criação de features
│ │ ├── predict.py # Código para executar inferência com modelos treinados
│ │ └── train.py # Código para treinar modelos
│ └── utils # Scripts utilitários
├── tests # Scripts para execução de testes
├── ui # Interface de usuário para interagir com a API do modelo
│ ├── __init__.py # Torna o diretório um módulo Python
│ ├── static # Templates para a interface de usuário
│ └── templates # Arquivos estáticos (CSS, JS, imagens)
├── .gitignore # Lista de arquivos e/ou diretórios que não são armazenados no repositório
├── .pre-commit-config.yaml # Arquivo de configuração dos hooks de pre-commit
├── LICENSE # Licença de código aberto, se aplicável
├── Makefile # Arquivo para automatizar tarefas comuns de desenvolvimento
├── pyproject.toml # Configuração do projeto e dependências
└── README.md # Documentação do repositório
```
Empty file added api/__init__.py
Empty file.
Empty file added config/__init__.py
Empty file.
Empty file added config/config.py
Empty file.
Empty file added models/__init__.py
Empty file.
29 changes: 29 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[tool.poetry]
name = "my_project"
version = "0.1.0"
description = "Descricao do projeto"
authors = ["Henrique <henrique.tostes@a3data.com.br>"]
package-mode = false

[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.25.1"
pandas = "^2.0.0"

[tool.poetry.dev-dependencies]
pytest = "^6.2.4"
pre-commit = "^3.7.0"
flake8 = "6.1.0"
black = "23.1.0"

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.black]
line-length = 88
skip-string-normalization = true

[tool.flake8]
max-line-length = 88
extend-ignore = ["E203", "W503"]
Empty file added src/pipelines/features.py
Empty file.
Empty file added src/pipelines/predict.py
Empty file.
Empty file added src/pipelines/train.py
Empty file.
Empty file added ui/__init__.py
Empty file.

0 comments on commit 9e43dd6

Please sign in to comment.