Skip to content

isabelarfloriano/trybe-is-not-google

Repository files navigation

Projeto TING (Trybe is not Google)! :red_circle::yellow_circle::computer::green_circle::large_blue_circle:

Foi desenvolvida uma aplicação em Python que simula um algoritmo de indexação de documentos semelhante ao do Google, com capacidade para detectar ocorrências em arquivos TXT.

Objetivos de prática
  • Manipular Pilhas
  • Manipular Deque
  • Manipular Nó & Listas Ligadas
  • Manipular Listas Duplamente Ligadas
Rodando Localmente a Aplicação

Para executar a aplicação e os testes, siga os passos abaixo:

  1. Clone o projeto.
  2. Abra o terminal e navegue até a raiz do projeto.
  3. Crie o ambiente virtual com o comando python3 -m venv .venv.
  4. Ative o ambiente virtual com o comando source .venv/bin/activate.
  5. Instale as dependências com o comando python3 -m pip install -r dev-requirements.txt.
  6. Para executar todos os testes, execute o comando python3 -m pytest na raiz do projeto.

A seguir estão os exemplos para executar a aplicação, descritos no arquivo main.py. Para executar a aplicação, digite o seguinte comando: python3 -m main

  1. Para criar uma instância da classe Queue e adicionar informações presentes nos arquivos TXT localizados no diretório 'statics':
    queue = Queue()
    process('statics/arquivo_teste.txt', queue)
    process('statics/nome_pedro.txt', queue)
    print('--> Primeiro Elemento da Fila:', queue.search(0))
    print('--> Segundo Elemento da Fila:', queue.search(1))
  2. Para localizar as informações por meio do índice usando a função 'file_metadata':
    file_metadata(queue, 0) - Retorna o primeiro elemento
    file_metadata(queue, 1) - Retorna o segundo elemento
    file_metadata(queue, 99) - Retorna "Posição inválida"
  3. Para criar um relatório de busca de palavras presentes na instância usando as funções 'exists_word' e 'search_by_word':
    print(exists_word('adoção', queue))
    Retorno: [ { 'palavra': 'adoção', 'arquivo': 'statics/arquivo_teste.txt, 'ocorrencias': [ {'linha': 2}, ], }, ]
    print(search_by_word('adoção', queue))
    Retorno: [ { 'palavra': 'adoção', 'arquivo': 'statics/arquivo_teste.txt, 'ocorrencias': [ { 'linha': 2, 'conteudo': 'é fundamental ressaltar que a adoção de políticas descentralizadoras nos obriga' }, ], }, ]
  4. Para remover as informações presentes na instância criada, use a função 'remove':
    remove(queue) - Arquivo statics/arquivo_teste.txt removido com sucesso
    remove(queue) - Arquivo statics/nome_pedro.txt removido com sucesso
    file_metadata(queue, 0) - Retorna "Posição inválida"
Estrutura do Projeto
.
├──statics
│   ├──🔸arquivo_teste.csv
│   ├──🔸arquivo_teste.txt
│   ├──🔸nome_pedro.txt
│   ├──🔸novo_paradigma_globalizado-min.txt
│   └──🔸novo_paradigma_globalizado.txt
├──tests
│   ├──priority_queue
│   │   ├──🔹test_priority_queue.py
│   │   └──🔸__init__.py
│   └──🔸__init__.py
├──ting_file_management
│   ├──🔸__init__.py
│   ├──🔸abstract_queue.py
│   ├──🔹file_management.py
│   ├──🔹file_process.py
│   ├──🔸priority_queue.py
│   └──🔹queue.py
├──ting_word_searches
│   ├──🔸__init__.py
│   └──🔹word_search.py
├──🔸dev-requirements.txt
├──🔹main.py
├── 🔸pyproject.toml
├── 🔹README.md
├── 🔸requirements.txt
├── 🔸setup.cfg
└── 🔸setup.py

  Legenda:
🔸Arquivos de propriedade intelectual da Trybe
🔹Arquivos desenvolvidos por mim
Detalhes sobre Teste Desenvolvido

tests/priority_queue/test_priority_queue.py

  • Implementação dos testes para a classe PriorityQueue
  • Garante que arquivos com menos de 5 linhas são armazenados de forma prioritária na fila.
Detalhes sobre Classes Desenvolvidos

ting_file_management/queue.py

  • Classe criada para armazenamento de arquivos por filas

ting_file_management/file_management.py

  • Função capaz de ler os arquivos TXT e retorna em formato de array/lista

ting_file_management/file_process.py

  • Função process - importa informações do arquivo TXT e adicionar na instância da Classe Queue informada
  • Função remove - remove o primeiro arquivo presente na instância informada
  • Função file_metadata - encontra um dado presente na instância atráves do index informado

ting_word_searches/word_search.py

  • Função exists_word - verifica existência de uma palavra em todos os arquivos processados, retornando um relatório simplificado
  • Função search_by_word - verifica existência de uma palavra em todos os arquivos processados, retornando um relatório completo

About

Python application that simulates an indexing algorithm

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages