-
Notifications
You must be signed in to change notification settings - Fork 1
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
Criação do Client.occurrences()
#31
Conversation
Creio que não. Ou pelo menos, não é dever nosso (de quem escreve o pacote) levantar esse erro. O que eu quero dizer é que isso tem que ser requisito da API. Se ID do estado é obrigatório, não podemos ter Isso levanta um erro. Mas o que fazemos (nós) não é levantar o erro, é refletir no design da API a situação : ) |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Fiz uma requisição para {"page": 1, "take": 50, "itemCount": 39795, "pageCount": 796, "hasPreviousPage": false, "hasNextPage": true}
{"page": 1, "take": 50, "itemCount": 8866, "pageCount": 178, "hasPreviousPage": false, "hasNextPage": true}
{"page": 1, "take": 50, "itemCount": 2065, "pageCount": 42, "hasPreviousPage": false, "hasNextPage": true} Digamos que cada requisição leve 0,5 segundo. Se formos retornar todas as ocorrências para a primeira UF, isso demoraria quase 7min. Acho uma péssima experiência para quem está utilizando. Melhor descartar a ideia de retornar todas as ocorrências de uma vez. Pensei em talvez for count, occurence in enumerate(client.occurences(state_id=42), 1):
print(occurence)
if count == 51:
break Como a API retorna 50 por página, esse código geraria apenas duas requisições (ao invés de 796). Isso poderia ser implementado. Quando chamamos sequenceDiagram
autonumber
actor User
User->>Occurences: next()
rect rgb(239,224,209)
Occurences->>Buffer: Checks if buffer is empty
rect rgb(239,239,239)
Note over Buffer, API Fogo Cruzado: Only when buffer is empty
Buffer->>API Fogo Cruzado: HTTP request
API Fogo Cruzado->>Buffer: HTTP response
end
Buffer->>Occurences: occurence
Note over Occurences, API Fogo Cruzado: Generator
end
Occurences->>User: yield
ATUALIZAÇÃO Esqueci de mencionar, que o buffer pode ser só uma fila FIFO nativa: In [1]: from queue import Queue
In [2]: q = Queue()
In [3]: q.put(1)
In [4]: q.put(2)
In [5]: q.put(3)
In [6]: q.get()
Out[6]: 1
In [7]: q.get()
Out[7]: 2 |
Client.occurrences()
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as resolved.
This comment was marked as resolved.
Cria testes para a classe `Occurences`
This comment was marked as resolved.
This comment was marked as resolved.
…a load_occurrences
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as outdated.
This comment was marked as outdated.
…lf.params e atualizaçao do self.next_page
…ona side_effect no teste de mais de uma requisição
…de pagina em load_occurrences
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
Algum motivo para o PR continuar como draft? Se não tiver, pode dar o merge na minha opnião : ) |
uma revisão sua ;) |
@cuducos comecei a criação do
client.occurrences()
.Na documentação são apresentados alguns exemplos de uso. eu fiz alguns testes e algumas coisas me chamara a atenção. Já me comuniquei com o Davi, desenvolvedor deles, para confirmar alguns pontos, como:
Em se confirmando que para acessar dados de ocorrência temos que informar o id do estado, seria o caso de levantar um erro, né?
Alguns pontos para trabalhar:
O parâmetrotypeOccurrence=withVictim
ainda não foi implementado pois não seri quais seriam os valores possíveis.Adicionar ao Occurrences o parâmetros typeOccurrence #39
Podem ser solicitadas mais de uma cidade;Occurrences deve poder retornar dados de mais de uma cidade #38
criar testes específicos para cada parametro de OcurrenceCriar testes para parâmetros de Occurrences #40