Giter Site home page Giter Site logo

trybe-is-not-google's Introduction

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

trybe-is-not-google's People

Contributors

isabelarfloriano avatar trybe-tech-ops avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.