Aplicativo de exemplo para contar itens alvo em uma imagem ou vídeo.
Certifique-se de ter python e pip instalados.
python --version
pip --version
No diretório raiz, execute o seguinte comando para instalar as dependências: pip install -r requirements.txt
Você pode executar o aplicativo usando este comando: python -m uvicorn src.api.index:app --reload
Depois de executado, você pode navegar até http://127.0.0.1:8000/docs
para visualizar a documentação interativa da API.
Existem algumas etapas que precisam ser executadas antes de poder executar e desenvolver adequadamente o código neste repositório.
A seguir está uma lista de etapas que devem acontecer antes de começar a trabalhar/testar os pipelines deste repositório:
O projeto vem com um Makefile
( não suportado no Windows! ) que pode ser utilizado para executar comandos que tornarão a interação com este projeto muito mais suave. Lembre-se de que pastas com espaços nos nomes podem causar problemas.
Pode-se ver todas as opções disponíveis por:
$: make
Available rules:
add-licenses Add licenses to Python files
all-start Starts both the API service and the local development service
all-stop Stops both the API service and the local development service
all-web Open up all web endpoints
api-build Build API image
api-start Start API image container
api-stop Stop API image container
api-web Open API in web browser
clean Removes artifacts from the build stage, and other common Python artifacts.
clean-build Remove build artifacts
clean-images Clean left-over images
clean-model-files Remove files related to pre-trained models
clean-pyc Removes Python file artifacts
clean-secrets Removes secret artifacts - Serverless
clean-test Remove test and coverage artifacts
create-environment Creates the Python environment
create-envrc Set up the envrc file for the project.
delete-environment Deletes the Python environment
delete-envrc Delete the local envrc file of the project
destroy Remove ALL of the artifacts + Python environments
docker-local-dev-build Build local development image
docker-local-dev-login Start a shell session into the docker container
docker-local-dev-start Start service for local development
docker-local-dev-stop Stop service for local development
docker-prune Clean Docker images
git-flow-install Install git-flow
init Initialize the repository for code development
lint Run the ' pre-commit ' linting step manually
pip-upgrade Upgrade the version of the ' pip ' package
pre-commit-install Installing the pre-commit Git hook
pre-commit-uninstall Uninstall the pre-commit Git hook
requirements Install Python dependencies into the Python environment
show-params Show the set of input parameters
sort-requirements Sort the project packages requirements file
streamlit-app-build Build Streamlit App image
streamlit-app-start Start Streamlit App image container
streamlit-app-stop Stop Streamlit App image container
streamlit-app-web Open Streamlit App in web browser
test Run all Python unit tests with verbose output and logs
NOTA : Se você estiver usando
Windows
, pode ser necessário copiar e modificar até certo ponto os comandos que fazem parte doMakefile
para algumas tarefas.
Para trabalhar em recursos atuais/novos, pode-se usar o Docker para iniciar um novo contêiner e iniciar o processo de desenvolvimento local.
Para construir a imagem Docker, deve-se seguir os seguintes passos:
Makefile
: # Go the project's directory
cd /path/to/directory
# Build the Docker iamge and start a container
make docker-local-dev-start
# Log into the container
make docker-local-dev-login
# Log into the container
➜$: make docker-local-dev-login
direnv: error /opt/program/.envrc is blocked. Run ` direnv allow ` to approve its content
Veremos o erro
direnv
porquedirenv
está instalado e é necessário permitir que as alterações tenham efeito.
direnv
# Accept the changes
$: direnv allow
direnv: loading /opt/program/.envrc
init
: $: make init
Isso executará as seguintes tarefas:
.envrc
usado por direnv
.direnv allow
para permitir modificações direnv
.pip
pre-commit
para linting e verificação de código.git-flow
, sempre que possível.Essas etapas permitem que o usuário desenvolva novos recursos dentro do Docker, o que torna mais fácil para os desenvolvedores terem exatamente o mesmo conjunto de ferramentas disponíveis.
O projeto vem com uma solução pronta para uso para iniciar e parar o endpoint da API via Docker.
Para iniciar o contêiner com o endpoint da API, deve-se executar o seguinte comando:
# Start API service
make api-start
Este serviço iniciará um contêiner Docker que expõe a porta interna 80
à porta 8090
do host local. Depois que a imagem for construída e um contêiner iniciado, pode-se ir para a página principal do serviço usando o seguinte comando:
# Go the URL of the API endpoint
make api-web
Isso direcionará o usuário para o seguinte URL: http://localhost:8090/docs
Para interromper o serviço API, pode-se executar o seguinte comando:
# Stop the API service
make api-stop
À medida que alguém personaliza o FastAPI com novos recursos e muito mais, essas alterações serão exibidas automaticamente no URL acima.
Semelhante às seções acima, é possível ativar ou desativar todos os serviços de uma vez com a ajuda de 2 comandos, ou seja, all-start
e all-stop
.
Para ativar o serviço de API e o de desenvolvimento local , pode-se executar:
make all-start
Este comando executará ambos os serviços e será possível fazer login no contêiner para desenvolvimento local, bem como conectar-se à API através do navegador.
Da mesma forma, para desacelerar todos os serviços, basta executar:
make all-stop
Isso interromperá ambos os serviços e excluirá todos os contêineres Docker não utilizados.
Os testes de unidade podem ser encontrados na pasta src
junto com o código-fonte. Os arquivos de teste terminam com _test
. O comando a seguir executará todos os testes.
python -m pytest -v -s
O argumento -v
é para saída detalhada. O argumento -s
serve para desligar o modo de captura para que as instruções de impressão sejam impressas no console.
Também existe um comando Makefile para executá-los. Veja make test
.
Aqui está uma lista de comandos que podem ser úteis ao interagir com este projeto.
Liste todos os contêineres Docker:
docker ps -a
Para ajudar a facilitar o desenvolvimento local, você pode instalar a extensão Visual Studio Code Dev Containers para VS Code. Isso permitirá que você se conecte ao contêiner Docker de desenvolvimento local e desenvolva recursos com mais facilidade.