From e3bd000995e044eba06ec011e849a39d3b0eb1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=A3=20Bida=20Vacaro?= Date: Mon, 25 Nov 2024 13:18:53 -0300 Subject: [PATCH] linting pt.2 --- docs/source/conf.py | 10 ++++++-- pysus/__init__.py | 2 -- pysus/data/__init__.py | 1 - pysus/ftp/__init__.py | 6 ++--- pysus/ftp/databases/ciha.py | 31 +++++++++++++----------- pysus/ftp/databases/ibge_datasus.py | 5 ++-- pysus/ftp/databases/sih.py | 19 ++++++++------- pysus/ftp/databases/territory.py | 11 --------- pysus/online_data/Infogripe.py | 8 +++---- pysus/online_data/SIM.py | 4 ++-- pysus/online_data/territory.py | 13 +++------- pysus/online_data/vaccine.py | 19 ++++++++------- pysus/preprocessing/SIM.py | 37 ++++++++++++++++++----------- 13 files changed, 82 insertions(+), 84 deletions(-) delete mode 100644 pysus/ftp/databases/territory.py diff --git a/docs/source/conf.py b/docs/source/conf.py index 7beac09..a006f43 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -154,7 +154,7 @@ # html_logo = None # The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # # html_favicon = None @@ -265,7 +265,13 @@ # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, "PySUS.tex", "PySUS Documentation", "Flavio Codeco Coelho", "manual"), + ( + master_doc, + "PySUS.tex", + "PySUS Documentation", + "Flavio Codeco Coelho", + "manual" + ), ] # The name of an image file (relative to this directory) to place at the top of diff --git a/pysus/__init__.py b/pysus/__init__.py index 4165183..0ba1d68 100644 --- a/pysus/__init__.py +++ b/pysus/__init__.py @@ -3,8 +3,6 @@ from importlib import metadata as importlib_metadata -from . import preprocessing, utilities - def get_version() -> str: try: diff --git a/pysus/data/__init__.py b/pysus/data/__init__.py index 55e534f..c6ca202 100644 --- a/pysus/data/__init__.py +++ b/pysus/data/__init__.py @@ -1,4 +1,3 @@ -import logging import os import struct from datetime import datetime diff --git a/pysus/ftp/__init__.py b/pysus/ftp/__init__.py index d8d0030..71f50d0 100644 --- a/pysus/ftp/__init__.py +++ b/pysus/ftp/__init__.py @@ -5,7 +5,7 @@ import pathlib from datetime import datetime from ftplib import FTP -from typing import Any, Dict, List, Optional, Set, Tuple, Union +from typing import Any, Dict, List, Optional, Tuple, Union import humanize from aioftp import Client @@ -473,8 +473,8 @@ def __repr__(self) -> str: def content(self) -> List[Union[Directory, File]]: """ Lists Database content. The `paths` will be loaded if this property is - called or if explicitly using `load()`. To add specific Directory inside - content, `load()` the directory and call `content` again. + called or if explicitly using `load()`. To add specific Directory + inside content, `load()` the directory and call `content` again. """ if not self.__content__: logger.info( diff --git a/pysus/ftp/databases/ciha.py b/pysus/ftp/databases/ciha.py index c1a4da8..7e7ac38 100644 --- a/pysus/ftp/databases/ciha.py +++ b/pysus/ftp/databases/ciha.py @@ -11,20 +11,23 @@ class CIHA(Database): "long_name": "Comunicação de Internação Hospitalar e Ambulatorial", "source": "http://ciha.datasus.gov.br/CIHA/index.php", "description": ( - "A CIHA foi criada para ampliar o processo de planejamento, programação, " - "controle, avaliação e regulação da assistência à saúde permitindo um " - "conhecimento mais abrangente e profundo dos perfis nosológico e " - "epidemiológico da população brasileira, da capacidade instalada e do " - "potencial de produção de serviços do conjunto de estabelecimentos de saúde " - "do País. O sistema permite o acompanhamento das ações e serviços de saúde " - "custeados por: planos privados de assistência à saúde; planos públicos; " - "pagamento particular por pessoa física; pagamento particular por pessoa " - "jurídica; programas e projetos federais (PRONON, PRONAS, PROADI); recursos " - "próprios das secretarias municipais e estaduais de saúde; DPVAT; gratuidade " - "e, a partir da publicação da Portaria GM/MS nº 2.905/2022, consórcios públicos. " - "As informações registradas na CIHA servem como base para o processo de " - "Certificação de Entidades Beneficentes de Assistência Social em Saúde (CEBAS) " - "e para monitoramento dos programas PRONAS e PRONON." + "A CIHA foi criada para ampliar o processo de planejamento, " + "programação, controle, avaliação e regulação da assistência à " + "saúde permitindo um conhecimento mais abrangente e profundo dos " + "perfis nosológico e epidemiológico da população brasileira, da " + "capacidade instalada e do potencial de produção de serviços do " + "conjunto de estabelecimentos de saúde do País. O sistema permite " + "o acompanhamento das ações e serviços de saúde custeados " + "por: planos privados de assistência à saúde; planos públicos; " + "pagamento particular por pessoa física; pagamento particular por " + "pessoa jurídica; programas e projetos federais (PRONON, PRONAS, " + "PROADI); recursos próprios das secretarias municipais e estaduais" + " de saúde; DPVAT; gratuidade e, a partir da publicação da " + "Portaria GM/MS nº 2.905/2022, consórcios públicos. As " + "informações registradas na CIHA servem como base para o processo " + "de Certificação de Entidades Beneficentes de Assistência Social " + "em Saúde (CEBAS) e para monitoramento dos programas PRONAS e " + "PRONON" ), } groups = { diff --git a/pysus/ftp/databases/ibge_datasus.py b/pysus/ftp/databases/ibge_datasus.py index 962cf29..e7b2732 100644 --- a/pysus/ftp/databases/ibge_datasus.py +++ b/pysus/ftp/databases/ibge_datasus.py @@ -1,8 +1,7 @@ from typing import List, Literal, Optional, Union -from loguru import logger from pysus.ftp import Database, Directory, File -from pysus.ftp.utils import to_list, zfill_year +from pysus.ftp.utils import zfill_year class IBGEDATASUS(Database): @@ -12,7 +11,7 @@ class IBGEDATASUS(Database): Directory("/dissemin/publicos/IBGE/censo"), Directory("/dissemin/publicos/IBGE/POPTCU"), Directory("/dissemin/publicos/IBGE/projpop"), - # Directory("/dissemin/publicos/IBGE/Auxiliar") # this has a different file name pattern + # Directory("/dissemin/publicos/IBGE/Auxiliar") # this has a different file name pattern # noqa ) metadata = { "long_name": "Populaçao Residente, Censos, Contagens " diff --git a/pysus/ftp/databases/sih.py b/pysus/ftp/databases/sih.py index 42a7bc5..e0289e2 100644 --- a/pysus/ftp/databases/sih.py +++ b/pysus/ftp/databases/sih.py @@ -13,20 +13,21 @@ class SIH(Database): metadata = { "long_name": "Sistema de Informações Hospitalares", "source": ( - "https://datasus.saude.gov.br/acesso-a-informacao/morbidade-hospitalar-do-sus-sih-sus/", - "https://datasus.saude.gov.br/acesso-a-informacao/producao-hospitalar-sih-sus/", + "https://datasus.saude.gov.br/acesso-a-informacao/morbidade-hospitalar-do-sus-sih-sus/", # noqa + "https://datasus.saude.gov.br/acesso-a-informacao/producao-hospitalar-sih-sus/", # noqa ), "description": ( "A finalidade do AIH (Sistema SIHSUS) é a de transcrever todos os " "atendimentos que provenientes de internações hospitalares que " "foram financiadas pelo SUS, e após o processamento, gerarem " - "relatórios para os gestores que lhes possibilitem fazer os pagamentos " - "dos estabelecimentos de saúde. Além disso, o nível Federal recebe " - "mensalmente uma base de dados de todas as internações autorizadas " - "(aprovadas ou não para pagamento) para que possam ser repassados às " - "Secretarias de Saúde os valores de Produção de Média e Alta complexidade " - "além dos valores de CNRAC, FAEC e de Hospitais Universitários – em suas " - "variadas formas de contrato de gestão." + "relatórios para os gestores que lhes possibilitem fazer os " + "pagamentos dos estabelecimentos de saúde. Além disso, o nível " + "Federal recebe mensalmente uma base de dados de todas as " + "internações autorizadas (aprovadas ou não para pagamento) para " + "que possam ser repassados às Secretarias de Saúde os valores de " + "Produção de Média e Alta complexidade além dos valores de CNRAC, " + "FAEC e de Hospitais Universitários – em suas variadas formas de " + "contrato de gestão." ), } groups = { diff --git a/pysus/ftp/databases/territory.py b/pysus/ftp/databases/territory.py deleted file mode 100644 index bfa65e1..0000000 --- a/pysus/ftp/databases/territory.py +++ /dev/null @@ -1,11 +0,0 @@ -from typing import List, Optional, Union - -from pysus.ftp import Database, Directory, File -from pysus.ftp.utils import to_list, zfill_year - - -class Territory(Database): - paths = (Directory("/territorio/tabelas"), Directory("territorio/mapas")) - - def get_files(self): - return [f for f in self.files if f.extension.upper() == ".ZIP"] diff --git a/pysus/online_data/Infogripe.py b/pysus/online_data/Infogripe.py index 642d35b..a576219 100644 --- a/pysus/online_data/Infogripe.py +++ b/pysus/online_data/Infogripe.py @@ -4,12 +4,12 @@ import pandas as pd -BASEURL = r"https://gitlab.fiocruz.br/marcelo.gomes/infogripe/-/raw/master/Dados/InfoGripe/" +BASEURL = r"https://gitlab.fiocruz.br/marcelo.gomes/infogripe/-/raw/master/Dados/InfoGripe/" # noqa DATASETS = { "Alerta de situação": r"tabela_de_alerta.csv", - "Casos por idade, sexo e virus": r"dados_semanais_faixa_etaria_sexo_virus.csv.gz", - "Casos Totais e estimativas": r"serie_temporal_com_estimativas_recentes.csv.gz", - "Valores esperados por localidades": "valores_esperados_por_localidade.csv", + "Casos por idade, sexo e virus": r"dados_semanais_faixa_etaria_sexo_virus.csv.gz", # noqa + "Casos Totais e estimativas": r"serie_temporal_com_estimativas_recentes.csv.gz", # noqa + "Valores esperados por localidades": "valores_esperados_por_localidade.csv", # noqa } diff --git a/pysus/online_data/SIM.py b/pysus/online_data/SIM.py index 47bdc3a..c021111 100644 --- a/pysus/online_data/SIM.py +++ b/pysus/online_data/SIM.py @@ -227,7 +227,7 @@ def get_municipios(cache=True): try: ftp.retrbinary("RETR {}".format(fname), open(fname, "wb").write) - except: + except Exception: raise Exception("Could not download {}".format(fname)) dbf = DBF(fname, encoding="iso-8859-1") @@ -272,7 +272,7 @@ def get_ocupations(cache=True): try: ftp.retrbinary("RETR {}".format(fname), open(fname, "wb").write) - except: + except Exception: raise Exception("Could not download {}".format(fname)) dbf = DBF(fname, encoding="iso-8859-1") diff --git a/pysus/online_data/territory.py b/pysus/online_data/territory.py index ddf5a62..404a5ad 100644 --- a/pysus/online_data/territory.py +++ b/pysus/online_data/territory.py @@ -1,11 +1,6 @@ -from pathlib import Path -from typing import Dict, List, Union +from typing import List, Union -import pandas as pd from pysus.ftp import CACHEPATH, Directory, File -from pysus.ftp.databases.territory import Territory - -ter = Territory().load() def list_tables() -> List[File]: @@ -26,8 +21,6 @@ def download(fname: Union[str, list], data_path: str = CACHEPATH): + Directory("/territorio/mapas").content ) for file in files: - if fname in [ - str(file), - file.name, - ]: # handles suffixed and no suffixed `fname`s + if fname in [str(file), file.name]: + # handles suffixed and no suffixed `fname`s return file.download() diff --git a/pysus/online_data/vaccine.py b/pysus/online_data/vaccine.py index 5a01943..28b4275 100644 --- a/pysus/online_data/vaccine.py +++ b/pysus/online_data/vaccine.py @@ -3,7 +3,7 @@ This module contains function to download from specific campains: -- COVID-19 in 2020-2021 Downloaded as described [here](http://opendatasus.saude.gov.br/dataset/b772ee55-07cd-44d8-958f-b12edd004e0b/resource/5916b3a4-81e7-4ad5-adb6-b884ff198dc1/download/manual_api_vacina_covid-19.pdf) +- COVID-19 in 2020-2021 Downloaded as described [here](http://opendatasus.saude.gov.br/dataset/b772ee55-07cd-44d8-958f-b12edd004e0b/resource/5916b3a4-81e7-4ad5-adb6-b884ff198dc1/download/manual_api_vacina_covid-19.pdf) # noqa """ import json import os @@ -21,12 +21,12 @@ def download_covid(uf=None, only_header=False): Download covid vaccination data for a give UF :param uf: 'RJ' | 'SP', etc. :param only_header: Used to see the header of the data before downloading. - :return: dataframe iterator as returned by pandas `read_csv('Vaccine_temp_.csv.gz', chunksize=5000)` + :return: dataframe iterator as returned by pandas + `read_csv('Vaccine_temp_.csv.gz', chunksize=5000)` """ user = "imunizacao_public" pwd = "qlto5t&7r_@+#Tlstigi" - index = "desc-imunizacao" - url = f"https://imunizacao-es.saude.gov.br/_search?scroll=1m" + url = "https://imunizacao-es.saude.gov.br/_search?scroll=1m" if uf is None: query = {"query": {"match_all": {}}, "size": 10000} UF = "BR" @@ -41,7 +41,8 @@ def download_covid(uf=None, only_header=False): tempfile = os.path.join(CACHEPATH, f"Vaccine_temp_{UF}.csv.gz") if os.path.exists(tempfile): print( - "loading from cache. Returning an iterator of Dataframes in chunks of 5000." + "loading from cache. Returning an iterator of Dataframes in chunks" + " of 5000." ) return pd.read_csv(tempfile, chunksize=5000) @@ -51,7 +52,7 @@ def download_covid(uf=None, only_header=False): if only_header: df = pd.DataFrame(next(data_gen)) logger.warning( - f"Downloading data sample for visualization of {df.shape[0]} rows..." + f"Downloading data sample for visualization of {df.shape[0]} rows" ) return df @@ -83,9 +84,9 @@ def elasticsearch_fetch(uri, auth, json_body={}): json_body["scroll_id"] = scroll_id json_body["scroll"] = "1m" if "query" in json_body: - del json_body[ - "query" - ] # for the continuation of the download, query parameter is not allowed + del json_body["query"] + # for the continuation of the download, + # query parameter is not allowed del json_body["size"] try: s = requests.Session() diff --git a/pysus/preprocessing/SIM.py b/pysus/preprocessing/SIM.py index 7a43501..5db5f78 100644 --- a/pysus/preprocessing/SIM.py +++ b/pysus/preprocessing/SIM.py @@ -34,10 +34,12 @@ def group_and_count( dataframe, group_columns, count_column="COUNTS", decimal_counts=False ): """ - Agrupa e conta as variáveis passadas como parâmetro no dataframe. Cria uma nova - coluna de contagem, com o tipo Decimal para possibilitar redistribuição pro rata posterior e maior precisão. + Agrupa e conta as variáveis passadas como parâmetro no dataframe. Cria uma + nova coluna de contagem, com o tipo Decimal para possibilitar + redistribuição pro rata posterior e maior precisão. :param dataframe: dataframe pandas - :param group_columns: lista de string contendo o nome das colunas a serem agrupadas no dataframe. + :param group_columns: lista de string contendo o nome das colunas a serem + agrupadas no dataframe. :param count_columns: nome da coluna de counts a ser criada. :return: """ @@ -57,11 +59,13 @@ def redistribute_missing( counts, filter_columns, count_column="COUNTS", nan_string="nan" ): """ - Realiza redistribuição pro rata das contagens do SIM com algum dado faltante. - O dataframe deve conter uma coluna float64 chamada CONTAGEM e as demais colunas devem ser - do tipo category, tendo os dados faltantes em uma categoria definida pelo parâmetro nan_string. + Realiza redistribuição pro rata das contagens do SIM com algum dado + faltante. O dataframe deve conter uma coluna float64 chamada CONTAGEM e as + demais colunas devem ser do tipo category, tendo os dados faltantes em uma + categoria definida pelo parâmetro nan_string. :param counts: dataframe pandas contendo coluna com soma chamada CONTAGEM - :param filter_columns: variáveis a serem consideradas para filtro de redistribuição pro rata + :param filter_columns: variáveis a serem consideradas para filtro de + redistribuição pro rata :param count_columns: nome da coluna de counts. :param nan_string: string usada na categoria de dado faltante :return: @@ -72,7 +76,7 @@ def redistribute_missing( condition_dict = {var: nan_string, count_column: 0.0} counts = counts[~logical_and_from_dict(counts, condition_dict)] - ### Dataframes de dados faltantes + # Dataframes de dados faltantes variables_dict = [{x: nan_string} for x in filter_columns] @@ -119,10 +123,12 @@ def redistribute_cid_chapter( count_columns="COUNTS", ): """ - Realiza redistribuição pro rata das contagens do SIM de um capítulo do CID10 passado. - Por padrão o capítulo XVIII, de causas mal definidas, é redistribuído. + Realiza redistribuição pro rata das contagens do SIM de um capítulo do + CID10 passado. Por padrão o capítulo XVIII, de causas mal definidas, + é redistribuído. :param counts: dataframe pandas contendo coluna com contagem - :param filter_columns: variáveis a serem consideradas para filtro na redistribuição pro rata + :param filter_columns: variáveis a serem consideradas para filtro na + redistribuição pro rata :param chapter: capítulo do CID10 a ser redistribuído :param chapter_column: nome da coluna de capítulo :param count_columns: nome da coluna de counts @@ -140,10 +146,13 @@ def redistribute_rows_pro_rata( counts, filter_columns, redistribute_list, count_columns="COUNTS" ): """ - Redistribui as contagens do dataframe conforme as colunas de filtro passadas. + Redistribui as contagens do dataframe conforme as colunas de filtro + passadas. :param counts: dataframe pandas contendo coluna de contagem - :param filter_columns: variáveis a serem consideradas para filtro na redistribuição pro rata - :param redistribute_list: dataframe contendo as linhas que serão redistribuídas + :param filter_columns: variáveis a serem consideradas para filtro na + redistribuição pro rata + :param redistribute_list: dataframe contendo as linhas que serão + redistribuídas :param count_columns: nome da coluna de counts :return: """