├── .github ├── ISSUE_TEMPLATE │ ├── atividade_04.md │ ├── atividade_05.md │ ├── atividade_06.md │ ├── atividade_07.md │ ├── atividade_08.md │ ├── atividade_09.md │ └── config.yml └── workflows │ ├── application.yml.draft │ └── documentation.yml.draft ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── README.md ├── app.py ├── data ├── external │ └── .gitkeep ├── processed │ └── .gitkeep └── raw │ └── .gitkeep ├── docs ├── assets │ ├── css │ │ └── tables.css │ └── js │ │ └── mathjax.js ├── index.md └── notebooks │ ├── .gitkeep │ └── 01-exploratory_data_analysis.ipynb ├── mkdocs.yml ├── models └── .gitkeep ├── notebooks ├── .gitkeep └── 01-exploratory_data_analysis.ipynb ├── poetry.lock ├── pyproject.toml ├── references └── .gitkeep ├── requirements.txt └── src ├── __init__.py ├── data └── __init__.py ├── deployment └── __init__.py └── model └── __init__.py /.github/ISSUE_TEMPLATE/atividade_04.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 04 3 | about: Entendimento de negócio 4 | title: "[Atividade 04] Entendimento de negócio" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | Compreender completamente, de uma perspectiva de negócios, o que realmente deve ser feito no projeto, em seguida: 11 | 12 | - [ ] Modificar o arquivo README.md, contendo um resumo do projeto que será construído. Tente apresentar uma justificativa para o projeto. 13 | - [ ] Inserir um graphical abstract. 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/atividade_05.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 05 3 | about: Criação do dicionário de dados 4 | title: "[Atividade 05] Criação do dicionário de dados" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | - [ ] Realizar coleta inicial de dados, seja ela através de download ou criação de script para download automático dos dados. Você deverá criar um arquivo com os dados e colocá-lo na pasta `data/raw`. 11 | - [ ] Criar dicionário de dados, uma estrutura que servirá para explicar o dado que será trabalhado. Você poderá criar um dicionário python contendo as seguintes informações para cada uma das variáveis do conjunto de dados: 12 | - **variavel**: nome da coluna no pandas 13 | - **descricao**: descrição da coluna 14 | - **tipo**: quantitativa ou qualitativa 15 | - **subtipo**: nominal, ordinal, discreta, contínua 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/atividade_06.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 06 3 | about: Exploração de dados 4 | title: "[Atividade 06 5 | ] Exploração de dados" 6 | labels: enhancement 7 | assignees: '' 8 | 9 | --- 10 | 11 | Criar um notebook de análise exploratória `notebooks/01-exploratory_data_analysis.ipynb`, contendo as seguintes seções de texto: 12 | 13 | - [ ] **Descrição dos dados**: informações sobre a quantidade de instâncias, variáveis e seus tipos, quantidade de valores faltantes. Utilize o dicionário de dados nessa seção. 14 | - [ ] **Perguntas de partida e hipóteses**: que tipo de informações podem ser obtidas a partir dos dados e quais hipóteses podem ser levantadas? 15 | - [ ] **Insights**: respostas às perguntas feitas na seção anterior e quais informações interessantes podem ser levantadas através dos dados? 16 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/atividade_07.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 07 3 | about: Limpeza de dados 4 | title: "[Atividade 07] Limpeza de dados." 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | Criar todo o código necessário para a limpeza dos dados e inserí-lo no notebook `notebooks/02-comparative_analysis.ipynb` . O notebook deve conter os seguintes tratamentos: 11 | - [ ] **Tratamento de dados faltantes:** Identificar e remover linhas/colunas com dados faltantes insignificantes. Imputar valores ausentes usando estatísticas de tendência central ou modelos preditivos. 12 | - [ ] **Tratamento de dados discrepantes:** remover ou isolar outliers dependendo do contexto. 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/atividade_08.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 08 3 | about: Transformação de dados 4 | title: "[Atividade 08] Transformação de dados" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | Criar todo o código necessário para a transformação de dados e inserí-lo no notebook `notebooks/02-comparative_analysis.ipynb` . Além dos tratamentos referentes a limpeza de dados (dados faltantes e dados discrepantes), o notebook deve conter os seguintes tratamentos relacionados a transformação de variáveis: 11 | 12 | - [ ] **Codificação de variáveis**: efetuar toda e qualquer transformação necessária para o funcionamento do modelo, seja ela codificação de variáveis qualitativas (nominais ou ordinais), temporais ou textuais . 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/atividade_09.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Atividade 09 3 | about: Análise comparativa de modelos 4 | title: "[Atividade 09] Análise comparativa de modelos" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | Inserir as seções de texto `Obtenção de dados`, `Preparação de dados` e `Seleção de modelos` no notebook `notebooks/02-comparative_analysis.ipynb`, de acordo com o conteúdo visto em aula: 11 | - [ ] Deve-se utilizar um método de **validação cruzada** (holdout, k-fold, Monte Carlo) apresentado em sala de aula; 12 | - [ ] Apresentar **no mínimo quatro modelos**: um *baseline*, para servir de comparação a pelo menos outros três (ou mais) experimentos com modelos de **famílias diferentes**. Deverão ser utilizadas **pelo menos duas métricas** para efetuar a comparação entre os modelos; 13 | - [ ] Para que os resultados sejam avaliados, eles devem ser sintetizados através da utilização de **tabelas e/ou gráficos explicativos**; 14 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Ensinio 4 | url: https://atlanticoavanti.ensinio.com/g/bootcamp-ciencia-de-dados-copy 5 | about: Plataforma de ensino. 6 | - name: Discord 7 | url: https://discord.com/channels/1284129128307626067/1284129128425066635 8 | about: Comunidade do discord. 9 | - name: Dúvidas 10 | url: https://discord.com/channels/1284129128307626067/1284129128425066637 11 | about: Canal de dúvidas da nossa comunidade do discord. 12 | -------------------------------------------------------------------------------- /.github/workflows/application.yml.draft: -------------------------------------------------------------------------------- 1 | name: application 2 | on: 3 | push: 4 | branches: 5 | - master 6 | - main 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-python@v2 13 | with: 14 | python-version: 3.8 15 | - uses: akhileshns/heroku-deploy@v3.12.12 16 | with: 17 | heroku_api_key: ${{secrets.HEROKU_API_KEY}} 18 | heroku_app_name: ${{secrets.HEROKU_APP_NAME}} 19 | heroku_email: ${{secrets.HEROKU_EMAIL}} 20 | -------------------------------------------------------------------------------- /.github/workflows/documentation.yml.draft: -------------------------------------------------------------------------------- 1 | name: documentation 2 | on: 3 | push: 4 | branches: 5 | - master 6 | - main 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-python@v2 13 | with: 14 | python-version: 3.x 15 | - run: pip install -r requirements.txt 16 | - run: mkdocs gh-deploy --force 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=python,jupyternotebooks 4 | 5 | ### JupyterNotebooks ### 6 | # gitignore template for Jupyter Notebooks 7 | # website: http://jupyter.org/ 8 | 9 | .ipynb_checkpoints 10 | */.ipynb_checkpoints/* 11 | 12 | # IPython 13 | profile_default/ 14 | ipython_config.py 15 | 16 | # Remove previous ipynb_checkpoints 17 | # git rm -r .ipynb_checkpoints/ 18 | 19 | ### Python ### 20 | # Byte-compiled / optimized / DLL files 21 | __pycache__/ 22 | *.py[cod] 23 | *$py.class 24 | 25 | # C extensions 26 | *.so 27 | 28 | # Distribution / packaging 29 | .Python 30 | build/ 31 | develop-eggs/ 32 | dist/ 33 | downloads/ 34 | eggs/ 35 | .eggs/ 36 | lib/ 37 | lib64/ 38 | parts/ 39 | sdist/ 40 | var/ 41 | wheels/ 42 | share/python-wheels/ 43 | *.egg-info/ 44 | .installed.cfg 45 | *.egg 46 | MANIFEST 47 | 48 | # PyInstaller 49 | # Usually these files are written by a python script from a template 50 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 51 | *.manifest 52 | *.spec 53 | 54 | # Installer logs 55 | pip-log.txt 56 | pip-delete-this-directory.txt 57 | 58 | # Unit test / coverage reports 59 | htmlcov/ 60 | .tox/ 61 | .nox/ 62 | .coverage 63 | .coverage.* 64 | .cache 65 | nosetests.xml 66 | coverage.xml 67 | *.cover 68 | *.py,cover 69 | .hypothesis/ 70 | .pytest_cache/ 71 | cover/ 72 | 73 | # Translations 74 | *.mo 75 | *.pot 76 | 77 | # Django stuff: 78 | *.log 79 | local_settings.py 80 | db.sqlite3 81 | db.sqlite3-journal 82 | 83 | # Flask stuff: 84 | instance/ 85 | .webassets-cache 86 | 87 | # Scrapy stuff: 88 | .scrapy 89 | 90 | # Sphinx documentation 91 | docs/_build/ 92 | 93 | # PyBuilder 94 | .pybuilder/ 95 | target/ 96 | 97 | # Jupyter Notebook 98 | 99 | # IPython 100 | 101 | # pyenv 102 | # For a library or package, you might want to ignore these files since the code is 103 | # intended to run in multiple environments; otherwise, check them in: 104 | # .python-version 105 | 106 | # pipenv 107 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 108 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 109 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 110 | # install all needed dependencies. 111 | #Pipfile.lock 112 | 113 | # poetry 114 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 115 | # This is especially recommended for binary packages to ensure reproducibility, and is more 116 | # commonly ignored for libraries. 117 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 118 | #poetry.lock 119 | 120 | # pdm 121 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 122 | #pdm.lock 123 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 124 | # in version control. 125 | # https://pdm.fming.dev/#use-with-ide 126 | .pdm.toml 127 | 128 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 129 | __pypackages__/ 130 | 131 | # Celery stuff 132 | celerybeat-schedule 133 | celerybeat.pid 134 | 135 | # SageMath parsed files 136 | *.sage.py 137 | 138 | # Environments 139 | .env 140 | .venv 141 | env/ 142 | venv/ 143 | ENV/ 144 | env.bak/ 145 | venv.bak/ 146 | 147 | # Spyder project settings 148 | .spyderproject 149 | .spyproject 150 | 151 | # Rope project settings 152 | .ropeproject 153 | 154 | # mkdocs documentation 155 | /site 156 | 157 | # mypy 158 | .mypy_cache/ 159 | .dmypy.json 160 | dmypy.json 161 | 162 | # Pyre type checker 163 | .pyre/ 164 | 165 | # pytype static type analyzer 166 | .pytype/ 167 | 168 | # Cython debug symbols 169 | cython_debug/ 170 | 171 | # PyCharm 172 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 173 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 174 | # and can be added to the global gitignore or merged into this file. For a more nuclear 175 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 176 | #.idea/ 177 | 178 | # End of https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v2.4.0 4 | hooks: 5 | - id: check-ast 6 | - id: check-byte-order-marker 7 | - id: check-case-conflict 8 | - id: check-docstring-first 9 | - id: check-executables-have-shebangs 10 | - id: check-json 11 | - id: check-toml 12 | # - id: check-yaml # Até encontrar como resolver o problema com emojis 13 | - id: debug-statements 14 | - id: detect-private-key 15 | - id: end-of-file-fixer 16 | - id: trailing-whitespace 17 | - id: mixed-line-ending 18 | - id: check-added-large-files 19 | 20 | - repo: https://github.com/psf/black 21 | rev: 22.1.0 22 | hooks: 23 | - id: black 24 | args: ['--line-length=79'] 25 | files: '(\.pyi?|wscript|ipynb)$' 26 | language_version: python3 27 | additional_dependencies: [black-nb] 28 | - repo: https://github.com/pre-commit/mirrors-isort 29 | rev: v5.4.2 30 | hooks: 31 | - id: isort 32 | - repo: https://github.com/asottile/pyupgrade 33 | rev: v2.7.2 34 | hooks: 35 | - id: pyupgrade 36 | args: [--py36-plus] 37 | - repo: https://gitlab.com/pycqa/flake8 38 | rev: '3.8.3' 39 | hooks: 40 | - id: flake8 41 | - repo: https://github.com/GussSoares/create-requirements 42 | rev: 'v0.1.0' 43 | hooks: 44 | - id: create-requirements 45 | - repo: https://github.com/compilerla/conventional-pre-commit 46 | rev: 'v1.2.0' 47 | hooks: 48 | - id: conventional-pre-commit 49 | stages: [commit-msg] 50 | - repo: local 51 | hooks: 52 | - id: copy-notebooks 53 | name: copy-notebooks 54 | language: system 55 | entry: cp 56 | args: [-r, notebooks/, docs/] 57 | pass_filenames: false 58 | require_serial: true 59 | files: 'notebooks/' 60 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Madson Dias 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 2 | 3 | Insira aqui um resumo do projeto que será construído. Tente apresentar uma justificativa para o projeto. É desejável que também se insira um [graphical abstract](https://www.elsevier.com/authors/tools-and-resources/visual-abstract). 4 | 5 | ## Desenvolvedores 6 | - [Nome do desenvolvedor #1](url-do-github-do-desenvolvedor-#1) 7 | - [Nome do desenvolvedor #2](url-do-github-do-desenvolvedor-#2) 8 | - [Nome do desenvolvedor #3](url-do-github-do-desenvolvedor-#3) 9 | - [Nome do desenvolvedor #4](url-do-github-do-desenvolvedor-#4) 10 | - ... 11 | 12 | --- 13 | 14 | > **Nota**: todo o texto abaixo é somente para entendimento do usuário do template. Por favor remova-o quando for atualizar este `README.md`. 15 | 16 | ## Funcionalidades 17 | 18 | Esse template foi inicialmente baseado no [template de ciência de dados do cookiecutter](https://drivendata.github.io/cookiecutter-data-science/), mas ao longo do tempo várias modificações foram sendo realizadas. Atualmente o template tem as seguintes características: 19 | - Utilização do arquivo `pyproject.toml` como centralizador de dependências; 20 | - Configuração para criação de aplicação `streamlit`; 21 | - Utilização de [jupyter notebooks](https://jupyter.org/) para arquivos de análise; 22 | - Documentação com o [mkdocs](https://www.mkdocs.org/) ([material design](https://squidfunk.github.io/mkdocs-material/) theme) 23 | 24 | ## Instruções 25 | 26 | ### Requisitos 27 | 28 | Para utilizar este template, você precisará de um ambiente com os seguintes softwares: 29 | - git 30 | - Python 3.8 31 | - Poetry `1.1.13` ou superior 32 | 33 | É aconselhável o uso do `pyenv` para o gerenciamento de versões do Python. 34 | 35 | ### Iniciando um novo projeto 36 | 37 | Para iniciar um novo projeto você precisa ter instalado na sua máquina as aplicações citadas na seção anterior, depois disso basta: 38 | 39 | 1. clicar no botão **Use this template** (ou "Usar este modelo"). 40 | 2. Digitar um nome para seu repositório e uma descrição opcional. 41 | 3. Escolher a visibilidade do projeto (Publica ou privada). 42 | 4. Clicar em **Create repository from template** (Criar repositório a partir do modelo). 43 | 44 | Pronto, acaba de criar um repositório a partir deste modelo. Para mais informações sobre o uso de templates, acesse a [documentação oficial](https://docs.github.com/pt/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template). 45 | 46 | 47 | ### Contribuindo com um repositório já criado 48 | 49 | Depois de criar o repositório, para começar a modificá-lo e/ou contribuir com repositórios já criados, você precisa cloná-lo. Para isso, siga os seguintes passos: 50 | 51 | 1. Acima da lista de arquivos, clique no botão **Code** (em verde). 52 | 2. Copie a URL para o repositório. 53 | - Tente clonar utilizando uma chave **SSH**. Para isso, clique na aba **SSH** e em seguida clique no ícone de cópia. 54 | 3. Abra o terminal. 55 | 4. Altere o diretório de trabalho atual para o local que deseja ter o diretório clonado. 56 | 5. Digite `git clone` e cole a URL que você copiou anteriormente: 57 | 58 | ``` 59 | git clone git@github.com:NOME-DE-USUARIO/REPOSITORIO.git 60 | ``` 61 | 6. Pressione **Enter** para criar seu clone local. 62 | 63 | Proto, com isso você acaba de clonar um repositório. Para mais informações sobre a clonagem de arquivos, acesse a [documentação oficial](https://docs.github.com/pt/repositories/creating-and-managing-repositories/cloning-a-repository). 64 | 65 | Com o repositório clonado, você precisa navegar até a pasta local, usando o comando : 66 | 67 | ``` 68 | cd REPOSITORIO 69 | ``` 70 | 71 | Estando na pasta do repositório, basta instalar as dependências do projeto utilizando o comando: 72 | 73 | ``` 74 | poetry install 75 | ``` 76 | 77 | Ele irá instalar todas as dependências contidas no arquivo `pyproject.toml`. Depois disso basta ativar o ambiente virtual criado pelo Poetry utilizando o comando: 78 | 79 | ``` 80 | poetry shell 81 | ``` 82 | 83 | Para mais informações sobre os comandos do Poetry, visite a [documentação oficial](https://python-poetry.org/docs/). 84 | 85 | Para contribuir com um projeto, tente utilizar uma metodologia adequada. Utilize [este artigo](https://omadson.github.io/site/blog/2022/software-development-workflow/) para obter mais informações. 86 | 87 | 88 | ### Organização de diretórios 89 | 90 | 91 | ``` 92 | . 93 | ├── data/ # Diretório contendo todos os arquivos de dados 94 | │   ├── external/ # Arquivos de dados de fontes externas 95 | │   ├── interim/ # Arquivos de dados intermediários 96 | │   ├── processed/ # Arquivos de dados processados 97 | │   └── raw/ # Arquivos de dados originais, imutáveis 98 | ├── docs/ # Documentação gerada através da biblioteca mkdocs 99 | ├── models/ # Modelos treinados e serializados, predições ou resumos de modelos 100 | ├── notebooks/ # Diretório contendo todos os notebooks utilizados nos passos 101 | ├── references/ # Dicionários de dados, manuais e todo o material exploratório 102 | ├── src/ # Código fonte utilizado nesse projeto 103 | │   ├── data/ # Classes e funções utilizadas para download e processamento de dados 104 | │   ├── deployment/ # Classes e funções utilizadas para implantação do modelo 105 | │   └── model/ # Classes e funções utilizadas para modelagem 106 | ├── app.py # Arquivo com o código da aplicação do streamlit 107 | ├── Procfile # Arquivo de configuração do heroku 108 | ├── pyproject.toml # Arquivo de dependências para reprodução do projeto 109 | ├── poetry.lock # Arquivo com sub-dependências do projeto principal 110 | ├── README.md # Informações gerais do projeto 111 | └── tasks.py # Arquivo com funções para criação de tarefas utilizadas pelo invoke 112 | 113 | ``` 114 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | import streamlit as st 2 | 3 | st.title("Olá") 4 | if st.button("mundo!"): 5 | st.balloons() -------------------------------------------------------------------------------- /data/external/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/data/external/.gitkeep -------------------------------------------------------------------------------- /data/processed/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/data/processed/.gitkeep -------------------------------------------------------------------------------- /data/raw/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/data/raw/.gitkeep -------------------------------------------------------------------------------- /docs/assets/css/tables.css: -------------------------------------------------------------------------------- 1 | .md-typeset__table { 2 | min-width: 100%; 3 | } 4 | 5 | .md-typeset table:not([class]) { 6 | display: table; 7 | } 8 | 9 | .md-typeset table:not([class]) td { 10 | vertical-align: middle; 11 | } 12 | -------------------------------------------------------------------------------- /docs/assets/js/mathjax.js: -------------------------------------------------------------------------------- 1 | /* mathjax-loader.js file */ 2 | /* ref: http://facelessuser.github.io/pymdown-extensions/extensions/arithmatex/ */ 3 | (function (win, doc) { 4 | win.MathJax = { 5 | config: ["MMLorHTML.js"], 6 | extensions: ["tex2jax.js"], 7 | jax: ["input/TeX"], 8 | tex2jax: { 9 | inlineMath: [ ["\\(","\\)"] ], 10 | displayMath: [ ["\\[","\\]"] ] 11 | }, 12 | TeX: { 13 | TagSide: "right", 14 | TagIndent: ".8em", 15 | MultLineWidth: "85%", 16 | equationNumbers: { 17 | autoNumber: "AMS", 18 | }, 19 | unicode: { 20 | fonts: "STIXGeneral,'Arial Unicode MS'" 21 | } 22 | }, 23 | displayAlign: 'center', 24 | showProcessingMessages: false, 25 | messageStyle: 'none' 26 | }; 27 | })(window, document); 28 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Início 2 | 3 | 4 | 5 | ## Contextualização 6 | 7 | Contexto necessário para entender o problema a ser abordado. 8 | 9 | ## Problema 10 | 11 | O real problema que será abordado no projeto. 12 | 13 | ## Proposta 14 | 15 | Informações sobre o que será criado como solução tecnológica ao final do projeto. 16 | 17 | ## Equipe 18 | 19 | - [Nome do desenvolvedor #1](url-do-github-do-desenvolvedor-#1) 20 | - [Nome do desenvolvedor #2](url-do-github-do-desenvolvedor-#2) 21 | - [Nome do desenvolvedor #3](url-do-github-do-desenvolvedor-#3) 22 | - [Nome do desenvolvedor #4](url-do-github-do-desenvolvedor-#4) 23 | -------------------------------------------------------------------------------- /docs/notebooks/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/docs/notebooks/.gitkeep -------------------------------------------------------------------------------- /docs/notebooks/01-exploratory_data_analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Análise exploratória de dados" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pandas as pd" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": {}, 22 | "source": [ 23 | "## 1. Descrição dos dados" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": null, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": {}, 36 | "source": [ 37 | "## 2. Perguntas de partida e hipóteses" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": null, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [] 46 | }, 47 | { 48 | "cell_type": "markdown", 49 | "metadata": {}, 50 | "source": [ 51 | "## 3. Insights" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": null, 57 | "metadata": {}, 58 | "outputs": [], 59 | "source": [] 60 | } 61 | ], 62 | "metadata": { 63 | "kernelspec": { 64 | "display_name": "Python 3.8.10 ('.venv': poetry)", 65 | "language": "python", 66 | "name": "python3" 67 | }, 68 | "language_info": { 69 | "name": "python", 70 | "version": "3.8.10" 71 | }, 72 | "orig_nbformat": 4, 73 | "vscode": { 74 | "interpreter": { 75 | "hash": "eb3c3305d8b111f0102f4f519c5f17abd113fe74db6752c355e994a9008815ef" 76 | } 77 | } 78 | }, 79 | "nbformat": 4, 80 | "nbformat_minor": 2 81 | } 82 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: Nome do projeto 2 | plugins: 3 | - search 4 | 5 | theme: 6 | name: material 7 | icon: 8 | repo: fontawesome/brands/github 9 | logo: fontawesome/solid/database 10 | palette: 11 | - scheme: default 12 | primary: teal 13 | accent: teal 14 | toggle: 15 | icon: material/lightbulb 16 | name: Switch to dark mode 17 | - scheme: slate 18 | primary: teal 19 | accent: teal 20 | toggle: 21 | icon: material/lightbulb-outline 22 | name: Switch to light mode 23 | features: 24 | - navigation.tabs 25 | - navigation.top 26 | - navegation.expand 27 | - navigation.tabs.sticky 28 | - navigation.tracking 29 | markdown_extensions: 30 | - footnotes 31 | - pymdownx.arithmatex: 32 | generic: true 33 | - admonition 34 | - pymdownx.details 35 | - pymdownx.superfences 36 | - attr_list 37 | - md_in_html 38 | - pymdownx.emoji: 39 | emoji_index: !!python/name:materialx.emoji.twemoji 40 | emoji_generator: !!python/name:materialx.emoji.to_svg 41 | - pymdownx.keys 42 | 43 | extra_javascript: 44 | - assets/js/mathjax.js 45 | - https://polyfill.io/v3/polyfill.min.js?features=es6 46 | - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js 47 | - https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/tablesort.min.js 48 | - https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/sorts/tablesort.number.min.js 49 | - https://cdnjs.cloudflare.com/ajax/libs/tablesort/5.2.1/sorts/tablesort.date.min.js 50 | - https://unpkg.com/mermaid@8.8.4/dist/mermaid.min.js 51 | 52 | extra_css: 53 | - assets/css/tables.css 54 | 55 | # Repository 56 | repo_name: omadson/project-template 57 | repo_url: https://github.com/omadson/project-template 58 | -------------------------------------------------------------------------------- /models/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/models/.gitkeep -------------------------------------------------------------------------------- /notebooks/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/notebooks/.gitkeep -------------------------------------------------------------------------------- /notebooks/01-exploratory_data_analysis.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# Análise exploratória de dados" 8 | ] 9 | }, 10 | { 11 | "cell_type": "code", 12 | "execution_count": null, 13 | "metadata": {}, 14 | "outputs": [], 15 | "source": [ 16 | "import pandas as pd" 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "metadata": {}, 22 | "source": [ 23 | "## 1. Descrição dos dados" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": null, 29 | "metadata": {}, 30 | "outputs": [], 31 | "source": [] 32 | }, 33 | { 34 | "cell_type": "markdown", 35 | "metadata": {}, 36 | "source": [ 37 | "## 2. Perguntas de partida e hipóteses" 38 | ] 39 | }, 40 | { 41 | "cell_type": "code", 42 | "execution_count": null, 43 | "metadata": {}, 44 | "outputs": [], 45 | "source": [] 46 | }, 47 | { 48 | "cell_type": "markdown", 49 | "metadata": {}, 50 | "source": [ 51 | "## 3. Insights" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": null, 57 | "metadata": {}, 58 | "outputs": [], 59 | "source": [] 60 | } 61 | ], 62 | "metadata": { 63 | "kernelspec": { 64 | "display_name": "Python 3.8.10 ('.venv': poetry)", 65 | "language": "python", 66 | "name": "python3" 67 | }, 68 | "language_info": { 69 | "name": "python", 70 | "version": "3.8.10" 71 | }, 72 | "orig_nbformat": 4, 73 | "vscode": { 74 | "interpreter": { 75 | "hash": "eb3c3305d8b111f0102f4f519c5f17abd113fe74db6752c355e994a9008815ef" 76 | } 77 | } 78 | }, 79 | "nbformat": 4, 80 | "nbformat_minor": 2 81 | } 82 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "src" 3 | version = "0.1.0" 4 | description = "" 5 | authors = ["Madson Dias "] 6 | 7 | [tool.poetry.dependencies] 8 | python = "~3.10" 9 | numpy = "^1.22.3" 10 | pandas = "^1.4.2" 11 | matplotlib = "^3.5.1" 12 | mkdocs = "^1.3.0" 13 | streamlit = "^1.10.0" 14 | jupyterlab = "^3.4.4" 15 | mkdocs-material = "^8.3.9" 16 | pre-commit = "^2.20.0" 17 | seaborn = "^0.11.2" 18 | scikit-learn = "^1.3.0" 19 | 20 | [tool.poetry.dev-dependencies] 21 | pytest = "^5.2" 22 | 23 | [build-system] 24 | requires = ["poetry-core>=1.0.0"] 25 | build-backend = "poetry.core.masonry.api" 26 | -------------------------------------------------------------------------------- /references/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/references/.gitkeep -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aiofiles==22.1.0 ; python_version >= "3.10" and python_version < "3.11" 2 | aiosqlite==0.19.0 ; python_version >= "3.10" and python_version < "3.11" 3 | altair==5.0.1 ; python_version >= "3.10" and python_version < "3.11" 4 | anyio==3.7.1 ; python_version >= "3.10" and python_version < "3.11" 5 | appnope==0.1.3 ; python_version >= "3.10" and python_version < "3.11" and sys_platform == "darwin" or python_version >= "3.10" and python_version < "3.11" and platform_system == "Darwin" 6 | argon2-cffi-bindings==21.2.0 ; python_version >= "3.10" and python_version < "3.11" 7 | argon2-cffi==23.1.0 ; python_version >= "3.10" and python_version < "3.11" 8 | arrow==1.2.3 ; python_version >= "3.10" and python_version < "3.11" 9 | asttokens==2.2.1 ; python_version >= "3.10" and python_version < "3.11" 10 | attrs==23.1.0 ; python_version >= "3.10" and python_version < "3.11" 11 | babel==2.12.1 ; python_version >= "3.10" and python_version < "3.11" 12 | backcall==0.2.0 ; python_version >= "3.10" and python_version < "3.11" 13 | beautifulsoup4==4.12.2 ; python_version >= "3.10" and python_version < "3.11" 14 | bleach==6.0.0 ; python_version >= "3.10" and python_version < "3.11" 15 | blinker==1.6.2 ; python_version >= "3.10" and python_version < "3.11" 16 | cachetools==5.3.1 ; python_version >= "3.10" and python_version < "3.11" 17 | certifi==2023.7.22 ; python_version >= "3.10" and python_version < "3.11" 18 | cffi==1.15.1 ; python_version >= "3.10" and python_version < "3.11" 19 | cfgv==3.4.0 ; python_version >= "3.10" and python_version < "3.11" 20 | charset-normalizer==3.2.0 ; python_version >= "3.10" and python_version < "3.11" 21 | click==8.1.7 ; python_version >= "3.10" and python_version < "3.11" 22 | colorama==0.4.6 ; python_version >= "3.10" and python_version < "3.11" and platform_system == "Windows" or python_version >= "3.10" and python_version < "3.11" and sys_platform == "win32" 23 | comm==0.1.4 ; python_version >= "3.10" and python_version < "3.11" 24 | contourpy==1.1.0 ; python_version >= "3.10" and python_version < "3.11" 25 | cycler==0.11.0 ; python_version >= "3.10" and python_version < "3.11" 26 | debugpy==1.6.7.post1 ; python_version >= "3.10" and python_version < "3.11" 27 | decorator==5.1.1 ; python_version >= "3.10" and python_version < "3.11" 28 | defusedxml==0.7.1 ; python_version >= "3.10" and python_version < "3.11" 29 | distlib==0.3.7 ; python_version >= "3.10" and python_version < "3.11" 30 | exceptiongroup==1.1.3 ; python_version >= "3.10" and python_version < "3.11" 31 | executing==1.2.0 ; python_version >= "3.10" and python_version < "3.11" 32 | fastjsonschema==2.18.0 ; python_version >= "3.10" and python_version < "3.11" 33 | filelock==3.12.2 ; python_version >= "3.10" and python_version < "3.11" 34 | fonttools==4.42.1 ; python_version >= "3.10" and python_version < "3.11" 35 | fqdn==1.5.1 ; python_version >= "3.10" and python_version < "3.11" 36 | ghp-import==2.1.0 ; python_version >= "3.10" and python_version < "3.11" 37 | gitdb==4.0.10 ; python_version >= "3.10" and python_version < "3.11" 38 | gitpython==3.1.32 ; python_version >= "3.10" and python_version < "3.11" 39 | identify==2.5.27 ; python_version >= "3.10" and python_version < "3.11" 40 | idna==3.4 ; python_version >= "3.10" and python_version < "3.11" 41 | importlib-metadata==6.8.0 ; python_version >= "3.10" and python_version < "3.11" 42 | ipykernel==6.25.1 ; python_version >= "3.10" and python_version < "3.11" 43 | ipython-genutils==0.2.0 ; python_version >= "3.10" and python_version < "3.11" 44 | ipython==8.14.0 ; python_version >= "3.10" and python_version < "3.11" 45 | isoduration==20.11.0 ; python_version >= "3.10" and python_version < "3.11" 46 | jedi==0.19.0 ; python_version >= "3.10" and python_version < "3.11" 47 | jinja2==3.1.2 ; python_version >= "3.10" and python_version < "3.11" 48 | joblib==1.3.2 ; python_version >= "3.10" and python_version < "3.11" 49 | json5==0.9.14 ; python_version >= "3.10" and python_version < "3.11" 50 | jsonpointer==2.4 ; python_version >= "3.10" and python_version < "3.11" 51 | jsonschema-specifications==2023.7.1 ; python_version >= "3.10" and python_version < "3.11" 52 | jsonschema==4.19.0 ; python_version >= "3.10" and python_version < "3.11" 53 | jsonschema[format-nongpl]==4.19.0 ; python_version >= "3.10" and python_version < "3.11" 54 | jupyter-client==8.3.0 ; python_version >= "3.10" and python_version < "3.11" 55 | jupyter-core==5.3.1 ; python_version >= "3.10" and python_version < "3.11" 56 | jupyter-events==0.7.0 ; python_version >= "3.10" and python_version < "3.11" 57 | jupyter-server-fileid==0.9.0 ; python_version >= "3.10" and python_version < "3.11" 58 | jupyter-server-terminals==0.4.4 ; python_version >= "3.10" and python_version < "3.11" 59 | jupyter-server-ydoc==0.8.0 ; python_version >= "3.10" and python_version < "3.11" 60 | jupyter-server==2.7.2 ; python_version >= "3.10" and python_version < "3.11" 61 | jupyter-ydoc==0.2.5 ; python_version >= "3.10" and python_version < "3.11" 62 | jupyterlab-pygments==0.2.2 ; python_version >= "3.10" and python_version < "3.11" 63 | jupyterlab-server==2.24.0 ; python_version >= "3.10" and python_version < "3.11" 64 | jupyterlab==3.6.5 ; python_version >= "3.10" and python_version < "3.11" 65 | kiwisolver==1.4.4 ; python_version >= "3.10" and python_version < "3.11" 66 | markdown-it-py==3.0.0 ; python_version >= "3.10" and python_version < "3.11" 67 | markdown==3.4.4 ; python_version >= "3.10" and python_version < "3.11" 68 | markupsafe==2.1.3 ; python_version >= "3.10" and python_version < "3.11" 69 | matplotlib-inline==0.1.6 ; python_version >= "3.10" and python_version < "3.11" 70 | matplotlib==3.7.2 ; python_version >= "3.10" and python_version < "3.11" 71 | mdurl==0.1.2 ; python_version >= "3.10" and python_version < "3.11" 72 | mergedeep==1.3.4 ; python_version >= "3.10" and python_version < "3.11" 73 | mistune==3.0.1 ; python_version >= "3.10" and python_version < "3.11" 74 | mkdocs-material-extensions==1.1.1 ; python_version >= "3.10" and python_version < "3.11" 75 | mkdocs-material==8.5.11 ; python_version >= "3.10" and python_version < "3.11" 76 | mkdocs==1.5.2 ; python_version >= "3.10" and python_version < "3.11" 77 | nbclassic==1.0.0 ; python_version >= "3.10" and python_version < "3.11" 78 | nbclient==0.8.0 ; python_version >= "3.10" and python_version < "3.11" 79 | nbconvert==7.7.4 ; python_version >= "3.10" and python_version < "3.11" 80 | nbformat==5.9.2 ; python_version >= "3.10" and python_version < "3.11" 81 | nest-asyncio==1.5.7 ; python_version >= "3.10" and python_version < "3.11" 82 | nodeenv==1.8.0 ; python_version >= "3.10" and python_version < "3.11" 83 | notebook-shim==0.2.3 ; python_version >= "3.10" and python_version < "3.11" 84 | notebook==6.5.4 ; python_version >= "3.10" and python_version < "3.11" 85 | numpy==1.25.2 ; python_version >= "3.10" and python_version < "3.11" 86 | overrides==7.4.0 ; python_version >= "3.10" and python_version < "3.11" 87 | packaging==23.1 ; python_version >= "3.10" and python_version < "3.11" 88 | pandas==1.5.3 ; python_version >= "3.10" and python_version < "3.11" 89 | pandocfilters==1.5.0 ; python_version >= "3.10" and python_version < "3.11" 90 | parso==0.8.3 ; python_version >= "3.10" and python_version < "3.11" 91 | pathspec==0.11.2 ; python_version >= "3.10" and python_version < "3.11" 92 | pexpect==4.8.0 ; python_version >= "3.10" and python_version < "3.11" and sys_platform != "win32" 93 | pickleshare==0.7.5 ; python_version >= "3.10" and python_version < "3.11" 94 | pillow==9.5.0 ; python_version >= "3.10" and python_version < "3.11" 95 | platformdirs==3.10.0 ; python_version >= "3.10" and python_version < "3.11" 96 | pre-commit==2.21.0 ; python_version >= "3.10" and python_version < "3.11" 97 | prometheus-client==0.17.1 ; python_version >= "3.10" and python_version < "3.11" 98 | prompt-toolkit==3.0.39 ; python_version >= "3.10" and python_version < "3.11" 99 | protobuf==4.24.1 ; python_version >= "3.10" and python_version < "3.11" 100 | psutil==5.9.5 ; python_version >= "3.10" and python_version < "3.11" 101 | ptyprocess==0.7.0 ; python_version >= "3.10" and python_version < "3.11" and sys_platform != "win32" or python_version >= "3.10" and python_version < "3.11" and os_name != "nt" 102 | pure-eval==0.2.2 ; python_version >= "3.10" and python_version < "3.11" 103 | pyarrow==12.0.1 ; python_version >= "3.10" and python_version < "3.11" 104 | pycparser==2.21 ; python_version >= "3.10" and python_version < "3.11" 105 | pydeck==0.8.0 ; python_version >= "3.10" and python_version < "3.11" 106 | pygments==2.16.1 ; python_version >= "3.10" and python_version < "3.11" 107 | pymdown-extensions==10.1 ; python_version >= "3.10" and python_version < "3.11" 108 | pympler==1.0.1 ; python_version >= "3.10" and python_version < "3.11" 109 | pyparsing==3.0.9 ; python_version >= "3.10" and python_version < "3.11" 110 | python-dateutil==2.8.2 ; python_version >= "3.10" and python_version < "3.11" 111 | python-json-logger==2.0.7 ; python_version >= "3.10" and python_version < "3.11" 112 | pytz-deprecation-shim==0.1.0.post0 ; python_version >= "3.10" and python_version < "3.11" 113 | pytz==2023.3 ; python_version >= "3.10" and python_version < "3.11" 114 | pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.10" and python_version < "3.11" 115 | pywinpty==2.0.11 ; python_version >= "3.10" and python_version < "3.11" and os_name == "nt" 116 | pyyaml-env-tag==0.1 ; python_version >= "3.10" and python_version < "3.11" 117 | pyyaml==6.0.1 ; python_version >= "3.10" and python_version < "3.11" 118 | pyzmq==25.1.1 ; python_version >= "3.10" and python_version < "3.11" 119 | referencing==0.30.2 ; python_version >= "3.10" and python_version < "3.11" 120 | requests==2.31.0 ; python_version >= "3.10" and python_version < "3.11" 121 | rfc3339-validator==0.1.4 ; python_version >= "3.10" and python_version < "3.11" 122 | rfc3986-validator==0.1.1 ; python_version >= "3.10" and python_version < "3.11" 123 | rich==13.5.2 ; python_version >= "3.10" and python_version < "3.11" 124 | rpds-py==0.9.2 ; python_version >= "3.10" and python_version < "3.11" 125 | scikit-learn==1.3.0 ; python_version >= "3.10" and python_version < "3.11" 126 | scipy==1.11.2 ; python_version >= "3.10" and python_version < "3.11" 127 | seaborn==0.11.2 ; python_version >= "3.10" and python_version < "3.11" 128 | send2trash==1.8.2 ; python_version >= "3.10" and python_version < "3.11" 129 | setuptools==68.1.2 ; python_version >= "3.10" and python_version < "3.11" 130 | six==1.16.0 ; python_version >= "3.10" and python_version < "3.11" 131 | smmap==5.0.0 ; python_version >= "3.10" and python_version < "3.11" 132 | sniffio==1.3.0 ; python_version >= "3.10" and python_version < "3.11" 133 | soupsieve==2.4.1 ; python_version >= "3.10" and python_version < "3.11" 134 | stack-data==0.6.2 ; python_version >= "3.10" and python_version < "3.11" 135 | streamlit==1.25.0 ; python_version >= "3.10" and python_version < "3.11" 136 | tenacity==8.2.3 ; python_version >= "3.10" and python_version < "3.11" 137 | terminado==0.17.1 ; python_version >= "3.10" and python_version < "3.11" 138 | threadpoolctl==3.2.0 ; python_version >= "3.10" and python_version < "3.11" 139 | tinycss2==1.2.1 ; python_version >= "3.10" and python_version < "3.11" 140 | toml==0.10.2 ; python_version >= "3.10" and python_version < "3.11" 141 | tomli==2.0.1 ; python_version >= "3.10" and python_version < "3.11" 142 | toolz==0.12.0 ; python_version >= "3.10" and python_version < "3.11" 143 | tornado==6.3.3 ; python_version >= "3.10" and python_version < "3.11" 144 | traitlets==5.9.0 ; python_version >= "3.10" and python_version < "3.11" 145 | typing-extensions==4.7.1 ; python_version >= "3.10" and python_version < "3.11" 146 | tzdata==2023.3 ; python_version >= "3.10" and python_version < "3.11" 147 | tzlocal==4.3.1 ; python_version >= "3.10" and python_version < "3.11" 148 | uri-template==1.3.0 ; python_version >= "3.10" and python_version < "3.11" 149 | urllib3==2.0.4 ; python_version >= "3.10" and python_version < "3.11" 150 | validators==0.21.2 ; python_version >= "3.10" and python_version < "3.11" 151 | virtualenv==20.24.3 ; python_version >= "3.10" and python_version < "3.11" 152 | watchdog==3.0.0 ; python_version >= "3.10" and python_version < "3.11" 153 | wcwidth==0.2.6 ; python_version >= "3.10" and python_version < "3.11" 154 | webcolors==1.13 ; python_version >= "3.10" and python_version < "3.11" 155 | webencodings==0.5.1 ; python_version >= "3.10" and python_version < "3.11" 156 | websocket-client==1.6.1 ; python_version >= "3.10" and python_version < "3.11" 157 | y-py==0.6.0 ; python_version >= "3.10" and python_version < "3.11" 158 | ypy-websocket==0.8.4 ; python_version >= "3.10" and python_version < "3.11" 159 | zipp==3.16.2 ; python_version >= "3.10" and python_version < "3.11" 160 | -------------------------------------------------------------------------------- /src/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = '0.1.0' 2 | -------------------------------------------------------------------------------- /src/data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/src/data/__init__.py -------------------------------------------------------------------------------- /src/deployment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/src/deployment/__init__.py -------------------------------------------------------------------------------- /src/model/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/omadson/project-template/f7b9cdadabf0ec856db8e040b92c8e6e9bf21766/src/model/__init__.py --------------------------------------------------------------------------------