Skip to content

Commit

Permalink
New version: 1.0.0 (#28)
Browse files Browse the repository at this point in the history
  • Loading branch information
matheusfelipeog authored Oct 21, 2022
2 parents a9e5c08 + c9b971f commit 360b305
Show file tree
Hide file tree
Showing 14 changed files with 742 additions and 247 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Tests

on:
push:
branches: [master, develop]
pull_request:
branches: [master, develop]

jobs:
unittest:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.7', '3.8', '3.9', '3.10']

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pipenv
pipenv install
- name: Run Unittest
run: |
pipenv run python -m unittest discover ./tests/ --verbose
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,6 @@ dmypy.json

# Pyre type checker
.pyre/

# VSCode
.vscode
2 changes: 1 addition & 1 deletion Pipfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ name = "pypi"

[packages]
requests = ">=2.27.1"
pandas = ">=1.4.1"

[dev-packages]
pylint = "*"

[requires]
python_version = "3.8"
294 changes: 218 additions & 76 deletions Pipfile.lock

Large diffs are not rendered by default.

178 changes: 105 additions & 73 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<h1 align="center">
<img src="https://raw.githubusercontent.com/matheusfelipeog/filometro/master/.github/assets/images/logo.png" alt="Logo filômetro" width="100px" />
<br />Filômetro
<img src="https://raw.githubusercontent.com/matheusfelipeog/filometro/master/.github/assets/images/logo.png" alt="Logo filometro" width="100px" />
<br />Filometro
</h1>

<p align="center">
Expand All @@ -9,9 +9,6 @@
<a href="https://pypi.org/project/filometro/">
<img alt="PyPI" src="https://img.shields.io/pypi/v/filometro" />
</a>
<a href="https://github.com/matheusfelipeog/filometro/releases">
<img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/matheusfelipeog/filometro" />
</a>
<a href="https://github.com/matheusfelipeog/filometro/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/matheusfelipeog/filometro" alt="License MIT" />
</a>
Expand All @@ -26,6 +23,9 @@
<a href="https://pypi.org/project/filometro/">
<img alt="PyPI - Status" src="https://img.shields.io/pypi/status/filometro" />
</a>
<a href="https://github.com/matheusfelipeog/filometro/actions/workflows/tests.yml">
<img alt="Tests - Status" src="https://github.com/matheusfelipeog/filometro/actions/workflows/tests.yml/badge.svg" />
</a>
</p>


Expand All @@ -36,28 +36,30 @@
- [Demo](#demo)
- [Documentação](#documentação)
- [Como utilizar?](#como-utilizar)
- [Objeto Posto](#objeto-posto)
- [Métodos da classe Filometro](#métodos-da-classe-filometro)
- [Identificadores para filtragem (Enums)](#identificadores-para-filtragem-enumsidentificadores-para-filtragem-enums)
- [Identificadores para filtragem](#identificadores-para-filtragem)
- [Contribuições](#contribuições)
- [Licença](#licença)


## O que é?

Filômetro é um pacote que faz o papel de um wrapper (embrulho) do site [De Olho Na Fila](https://deolhonafila.prefeitura.sp.gov.br/), de modo a disponibilizar acesso a diversos dados sobre postos de vacinação em todo o Estado de São Paulo.
Filometro é um wrapper (embrulho) do site [De Olho Na Fila](https://deolhonafila.prefeitura.sp.gov.br/), de modo a disponibilizar acesso a diversos dados sobre os postos de vacinação em todo o Estado de São Paulo.

Com esse pacote você tem acesso aos seguintes dados dos postos:

- Equipamento
- Endereço
- Contatos
- Distrito
- Zona
- Os imunizantes
- Os imunizantes disponíveis
- Situação da fila
- Modalidade
- Data e hora da última atualização

As informações são exatamente as mesmas disponíveis no site oficial (De Olho na Fila), porém disponibilizados por meio de uma interface Python simples para facilitar o uso, manipulação e filtragem dos dados. Consulte a [documentação](#documentação) para saber como utiliza-lo.
As informações são exatamente as mesmas disponíveis no site oficial (De Olho na Fila), porém disponibilizados por meio de um pacote Python simples para facilitar a coleta, manipulação e filtragem dos dados. Consulte a [documentação](#documentação) para saber como utiliza-lo.


## Instalação
Expand All @@ -71,7 +73,7 @@ $ pip install filometro

## Demo

Obtenha uma lista de postos que tem disponível em seu estoque o imunizante da PFizer e mostre a situação da fila, o endereço e a zona em que o posto está localizado:
Obtenha uma lista de postos que tem disponível em seu estoque o imunizante da PFizer:

```python
>>> from filometro import Filometro
Expand All @@ -86,24 +88,9 @@ Obtenha uma lista de postos que tem disponível em seu estoque o imunizante da P
... # comprimido
Posto(equipment='UBS SANTA CRUZ', last_update='2021-12-22 12:46:35.190')
]

>>> for posto in postos:
... print(f'Fila: {posto.situation}')
... print(f'Endereço: {posto.address}')
... print(f'Zona: {posto.zone}', end='\n\n')

Fila: FILA PEQUENA
Endereço: R. HUMAITÁ, 520 - BELA VISTA - CEP: 01321-010 - Tel: 3241- 1632/ 3241-1163
Zona: CENTRO

... # comprimido

Fila: FILA PEQUENA
Endereço: Rua Santa Cruz, 1.191 - Vila Mariana
Zona: SUL
```

Verifique a documentação para obter informações sobre os métodos disponíveis no pacote.
Verifique a documentação para obter informações sobre os atributos e métodos disponíveis.


## Documentação
Expand Down Expand Up @@ -147,64 +134,109 @@ Para atualizar os dados dos postos armazenados em memória é indicado utilizar

Esse método recarrega todos os dados com as informações mais recentes disponíveis no site oficial.

Sempre que precisar, utilize a função `help()` em alguma classe, objeto ou método para obter ajuda:

```python
>>> help(filometro)
```

### Objeto Posto

Todos os métodos tem como retorno uma lista de dados, esses dados são representados no objeto Posto. Veja quais são seus atributos:

```python
>>> posto.equipment
>>> posto.address
>>> posto.district
>>> posto.zone
>>> posto.maps
>>> posto.contacts
>>> posto.astrazeneca
>>> posto.coronavac
>>> posto.coronavac_pediatrica
>>> posto.pfizer
>>> posto.pfizer_pediatrica
>>> posto.janssen
>>> posto.influenza
>>> posto.intercambialidade
>>> posto.situation
>>> posto.modality
>>> posto.last_update
```

### Métodos da classe Filometro

- `Filometro.reload(...)` - Recarregar os dados com as informações mais recentes.
- `Filometro.all_postos(...)` - Retorna os dados de todos os postos.
- `Filometro.all_postos_open(...)` - Retorna os dados de todos os postos abertos no momento da busca.
- `Filometro.all_postos_closed(...)` - Retorna os dados de todos os postos fechados no momento da busca.
- `Filometro.by_zone(...)` - Retorna os dados dos postos por zona selecionada.
- `Filometro.by_modality(...)` - Retorna os dados dos postos por modalidade selecionada.
- `Filometro.by_district(...)` - Retorna os dados dos postos por distrito selecionado.
- `Filometro.by_situation(...)` - Retorna os dados dos postos por situação selecionada.
- `Filometro.by_immunizing(...)` - Retorna os dados dos postos por imunizante selecionado.
- `Filometro.to_dict(...)` - Retorna uma lista de objetos do tipo `dict` contendo todos os dados de postos.
- `Filometro.to_json(...)` - Retorna uma string `json` contendo todos os dados de postos. Também há suporte para a manipulação do retorno utilizando os mesmos argumentos do [método json integrado ao Python](https://docs.python.org/3/library/json.html).
- `Filometro.to_dataframe(...)` - Retorna um [DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) contendo os dados de todos os postos.
```python
>>> filometro.reload() # Atualizar dados em memória.
>>> filometro.all_postos() # Obter todos os postos.
>>> filometro.all_postos_open() # Obter todos os postos abertos.
>>> filometro.all_postos_closed() # Obter todos os postos fechados.
>>> filometro.by_zone(...) # Obter todos postos de uma zona.
>>> filometro.by_modality(...) # Obter todos postos de uma modalidade.
>>> filometro.by_district(...) # Obter todos postos de um distrito.
>>> filometro.by_situation(...) # Obter todos postos por situação.
>>> filometro.by_immunizing(...) # Obter todos postos que possuem um imunizante.
>>> filometro.to_dict() # Obter todos postos convertidos para `dict`.
```

### Identificadores para filtragem (Enums)
### Identificadores para filtragem

Todos os Enums estão disponíveis para uso atráves da interface príncipal do pacote:
Todos os identificadores estão disponíveis para uso atráves da interface príncipal do pacote:

```python
>>> from filometro import Zone, Modality, District, Situation, Immunizing
```

> Para obter mais informações sobre cada um dos Enums, use as funções `dir()` ou `help()` passando um dos Enums como argumento.
`Zone` - Representa as zonas do Estado de São Paulo:

```python
>>> Zone.SUL
>>> Zone.OESTE
>>> Zone.NORTE
>>> Zone.LESTE
>>> Zone.CENTRO
>>> Zone.MEGA_DRIVES
```

`Modality` - Representa as modalidades dos postos:

```python
>>> Modality.PARQUES
>>> Modality.POSTO_FIXO
>>> Modality.POSTO_VOLANTE
>>> Modality.DRIVE_THRU
>>> Modality.MEGAPOSTO
```

`District` - Representa todos os distritos do Estado de São Paulo que disponíbilizam um imunizante em seus postos. Como há muitos distritos, use a função `dir` ou `help` para mais infomações:

- `Zone` - Representa as zonas do Estado de São Paulo.
- `Zone.SUL`
- `Zone.OESTE`
- `Zone.NORTE`
- `Zone.LESTE`
- `Zone.CENTRO`
- `Zone.MEGA_DRIVES`
```python
>>> help(District)
>>> dir(District)
```

- `Modality` - Representa as modalidades dos postos de saúde.
- `Modality.PARQUES`
- `Modality.POSTO_FIXO`
- `Modality.POSTO_VOLANTE`
- `Modality.DRIVE_THRU`
- `Modality.MEGAPOSTO`
`Situation` - Representa as situações das filas nos postos:

- `District` - Representa todos os distritos do Estado de São Paulo que disponíbilizam um imunizante em seus postos de saúde. Use a função `dir(District)` ou `help(District)` para mais infomações.
```python
>>> Situation.NAO_FUNCIONANDO
>>> Situation.SEM_FILA
>>> Situation.FILA_PEQUENA
>>> Situation.FILA_MEDIA
>>> Situation.FILA_GRANDE
```

- `Situation` - Representa as possíveis situações das filas nos postos de saúde.
- `Situation.NAO_FUNCIONANDO`
- `Situation.SEM_FILA`
- `Situation.FILA_PEQUENA`
- `Situation.FILA_MEDIA`
- `Situation.FILA_GRANDE`
`Immunizing` - Representa os imunizantes disponíveis nos postos no Estado de São Paulo:

- `Immunizing` - Representa os imunizantes disponíveis nos postos de saúde do Estado de São Paulo.
- `Immunizing.ASTRAZENECA`
- `Immunizing.INTERCAMBIALIDADE`
- `Immunizing.PFIZER`
- `Immunizing.PFIZER_PEDIATRICA`
- `Immunizing.CORONAVAC`
- `Immunizing.CORONAVAC_PEDIATRICA`
- `Immunizing.JANSSEN`
- `Immunizing.INFLUENZA`
```python
>>> Immunizing.ASTRAZENECA
>>> Immunizing.INTERCAMBIALIDADE
>>> Immunizing.PFIZER
>>> Immunizing.PFIZER_PEDIATRICA
>>> Immunizing.CORONAVAC
>>> Immunizing.CORONAVAC_PEDIATRICA
>>> Immunizing.JANSSEN
>>> Immunizing.INFLUENZA
```


## Contribuições
Expand All @@ -217,11 +249,11 @@ Abaixo mostro com o que você pode contribuir:

- Existe uma issue aberta e você quer resolve-la, quer implementar uma nova funcionalidade ou melhorar a documentação? Faça suas adições e me envie um *Pull Request*

- Gostou do projeto, mas não quer ou ainda não consegue contribuir com ele? Considere deixar uma estrela ⭐ para o **Filômetro**
- Gostou do projeto, mas não quer ou ainda não consegue contribuir com ele? Considere deixar uma estrela ⭐ para o **Filometro**

Obrigado pelo interesse em colaborar de alguma forma com o projeto 😄
Obrigado pelo interesse em colaborar de alguma forma com o projeto


## Licença

**Filômetro** utiliza a *licença MIT* em todo seu código, confira suas condições em [MIT License](https://github.com/matheusfelipeog/filometro/blob/master/LICENSE).
**Filometro** utiliza a *licença MIT* em todo seu código, confira suas condições em [MIT License](https://github.com/matheusfelipeog/filometro/blob/master/LICENSE).
4 changes: 1 addition & 3 deletions filometro/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
"""
filometro
---------
Expand All @@ -7,7 +6,6 @@
de todos os postos de saúde que são mostrados no site 'De Olho na Fila'.
"""


__all__ = [
'Zone',
'Modality',
Expand All @@ -16,7 +14,7 @@
'District',
'Filometro'
]
__version__ = '0.3.0'
__version__ = '1.0.0'
__author__ = 'Matheus Felipe'

from filometro.enums import Zone
Expand Down
Loading

0 comments on commit 360b305

Please sign in to comment.