Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[infra] Criar função search para o módulo download.py #1011

Closed
5 tasks
vmussa opened this issue Dec 8, 2021 · 0 comments
Closed
5 tasks

[infra] Criar função search para o módulo download.py #1011

vmussa opened this issue Dec 8, 2021 · 0 comments
Assignees
Labels
download enhancement New feature or request python

Comments

@vmussa
Copy link
Collaborator

vmussa commented Dec 8, 2021

Descrição do problema

Atualmente o módulo download.py não tem uma função de busca, já que está limitado às APIs da Google Cloud. No entanto, com a implementação dos novos endpoints do website/CKAN, é possível, agora, fazer uma função de busca.

Solução proposta

Implementar uma função search que usará o endpoint bd_dataset_search da API do website.

Proposta de estrutura da função:

def search(query, order_by):
    """This function works as a wrapper to the `bd_dataset_search` website API
    enpoint.

    Args:
        query (str):
            String to search in datasets and tables' metadata.
        order_by (str): score|popular|recent
            Field by which the results will be ordered.

    Returns:
        pd.DataFrame:
            Response from the API presented as a pandas DataFrame. Each row is
            a table. Each column is a field identifying the table.
    """

    pass

Lista de tarefas

  • Subir ambiente local. Ver documentação de como fazê-lo aqui.
  • Escrever código da função
  • Criar testes unitários para a função e testá-la localmente.
  • Documentar a função com docstrings, caso necessário (a estrutura proposta já contêm docstrings, mas dependendo da implementação, algum ajuste será necessário.
  • Abrir um pull request (PR) neste repositório com a proposta de código para a função. Caso precise, há uma sugestão de workflow para a criação de pull requests aqui. Basta reproduzir isso no seu fork. Mais sobre PRs e forks aqui.

Você pode criar o PR antes de terminar o código e abri-lo para discussão caso tenha dúvidas ou ache necessário por qualquer motivo que seja.

Contexto adicional

Entendendo o bd_dataset_search e a API do basedosdados

Para investigar e interagir com o endpoint bd_dataset_search, você utilizar o link https://basedosdados.org/openapi, que possui uma documentação interativa da API como um todo. Lá, entre os endpoints listados, você poderá achar o bd_dataset_search, visualizar seus parâmetros e experimentar algumas chamadas. Se preferir, você pode usar um software como Postman, que permite visualizar respostas de APIs de uma forma mais fácil do que no navegador.

Pacotes do Python a considerar

O pacote requests te permitirá interagir com a API dentro do Python, fazendo pedidos HTTP. O pacote json te ajudará a transformar a resposta bruta da API num dict do Python. Para exibir o resultado de uma forma legível, você poderá utilizar o pacote pandas para criar um DataFrame.


Este issue é uma derivação do issue #900. Ele servirá como desafio na seleção de novxs desenvolvedorxs Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
download enhancement New feature or request python
Projects
None yet
Development

No branches or pull requests

3 participants