omnisus 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- omnisus-0.2.0/.gitignore +41 -0
- omnisus-0.2.0/CHANGELOG.md +105 -0
- omnisus-0.2.0/LICENSE +21 -0
- omnisus-0.2.0/PKG-INFO +169 -0
- omnisus-0.2.0/README.md +113 -0
- omnisus-0.2.0/pyproject.toml +137 -0
- omnisus-0.2.0/src/omnisus/__init__.py +643 -0
- omnisus-0.2.0/src/omnisus/_loop.py +24 -0
- omnisus-0.2.0/src/omnisus/_version.py +1 -0
- omnisus-0.2.0/src/omnisus/cli/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/cli/main.py +442 -0
- omnisus-0.2.0/src/omnisus/data/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/data/auxiliares-bootstrap.zip +0 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_cid10.yaml +25 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_municipios.yaml +57 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_ocupacoes.yaml +20 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_paises.yaml +17 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_sigtap_procedimentos.yaml +52 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/aux_uf.yaml +22 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_dados_complementares.yaml +532 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_equipamentos.yaml +204 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_equipes.yaml +616 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_estabelecimentos.yaml +191 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_estabelecimentos_ensino.yaml +247 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_estabelecimentos_filantropicos.yaml +249 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_gestao_metas.yaml +232 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_habilitacoes.yaml +234 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_incentivos.yaml +232 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_leitos.yaml +294 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_regras_contratuais.yaml +196 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/cnes_servicos_especializados.yaml +220 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/ibge_populacao.yaml +32 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_acompanhamento_bariatrica.yaml +489 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_acompanhamento_multiprofissional.yaml +168 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_cirurgia_bariatrica.yaml +506 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_fistula_arteriovenosa.yaml +504 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_laudos_diversos.yaml +413 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_medicamentos.yaml +460 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_nefrologia.yaml +610 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_quimioterapia.yaml +499 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_radioterapia.yaml +564 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_apac_tratamento_dialitico.yaml +471 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_atencao_domiciliar.yaml +407 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_bpa_individualizado.yaml +301 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_producao_ambulatorial.yaml +550 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_producao_ambulatorial_1994_2007.yaml +72 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sia_psicossocial.yaml +382 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sih_aih_reduzida.yaml +2544 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sih_aih_reduzida_1992_2007.yaml +462 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sih_aih_rejeitada.yaml +1671 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sih_aih_rejeitada_erro.yaml +659 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sih_servicos_profissionais.yaml +109 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos.yaml +1956 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos_cid9.yaml +236 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos_externos.yaml +1754 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos_fetais.yaml +603 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos_infantis.yaml +1754 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sim_obitos_maternos.yaml +1754 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sinan_chagas.yaml +549 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sinan_hanseniase.yaml +495 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sinan_tuberculose.yaml +1173 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sinasc_1994_1995.yaml +76 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sinasc_nascidos_vivos.yaml +1111 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/Ativ_Ens.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/ESTABENS.CNV +2 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/ESTABFIL.CNV +2 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/Esp_leit.CNV +71 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/Flux_Cli.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/IND_SUS.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/NIVELDEP.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/Srv_Caract.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/TPGESTAO.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/TP_DESAT.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/TP_ESTAB.CNV +46 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/TurnosAt.CNV +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/Vinc_SUS.cnv +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/motdesat.cnv +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/tip1leit.cnv +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/tipoeqpC.cnv +65 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/CNV/tiposegm.cnv +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/DadosComplementares.def +443 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Equipamento.def +238 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Equipes.def +521 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Estabel_Ensino.def +196 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Estabel_Filantropico.def +192 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Estabelecimento.def +487 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Gestao_de_Metas.def +193 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Habilitacao.def +201 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Incentivos.def +202 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Leitos_Especialidade.def +195 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Regras_Contratuais.def +195 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/cnes/Servico_Especializado_200803_.def +200 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Cirurgia_Bariatica.DEF +455 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Confeccao_de_Fistula.DEF +365 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Laudos_Diversos.DEF +438 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Medicamentos.DEF +443 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Nefrologia.DEF +455 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Pos_Cirurgia_Bariatica.def +366 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Quimioterapia.DEF +484 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Radioterapia.DEF +478 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/APAC_Tratamento_Dialitico.DEF +317 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/Atencao_Domiciliar.def +408 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/ACES_VASC.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/ALTA.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/CARAT_AT.CNV +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/CNCDO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/COBERTURA.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/COMPLEX.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/CONT_TRAT.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/ENCERRAM.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/ESTADIO.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/FINALID.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/FL_IDADE.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/GESTANTE.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/HBSAG.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/INDICA.cnv +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/Invasao.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/LINF_INV.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/LOC_REALIZ.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/MANT_IND.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/MOTSAIPE.CNV +23 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/OBITO.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/PERMANEN.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/RACA_COR.CNV +11 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/REGRA_C.cnv +20 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/SEXO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TP_APAC.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TP_ATEND.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TP_ESTAB.CNV +43 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TP_GESTAO.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TRANSFER.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/TRANSPL.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/destino.cnv +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/CNV/origem.cnv +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/Producao_Ambulatorial.DEF +522 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sia/RAAS_Psicossocial.def +337 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/CARATEND.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/COMPLEX2.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/CONTRAC.CNV +14 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/FINANC.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/GESTAO.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/IDENT.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/INSTRU.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/LEITOS.CNV +42 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/MARCAUCI.cnv +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/MARCAUTI.CNV +18 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/MORTES.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/NACION3D.CNV +333 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/NATUREZA.CNV +19 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/RACACOR.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/REGCT.cnv +21 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/SAIDAPERM.CNV +29 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/SEXO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/SIMNAO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/TP_DIAGSEC.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/TP_VAL.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/VINCPREV.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/motbloqueio.cnv +45 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/sitbloqueio.cnv +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/CNV/sitrejeicao.cnv +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/DBF/MOTERRO.dbf +0 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/Motivo_de_Erro.DEF +74 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/RD2008.DEF +532 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/RJ2008.DEF +489 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih/SP2008.DEF +310 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih_199201_199712/MORTES.CNV +3 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih_199201_199712/RD.DEF +547 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih_199201_199712/VINCPREV.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih_199801_200307/RD.DEF +550 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sih_200308_200712/RD.DEF +549 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/ACIDTRAB.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/ASSMEDIC.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/ATESTANT.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/CBO2002.CNV +2430 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/CODIFICA1.cnv +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/DONOVA.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/ESCAGR1.CNV +15 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/ESTCIV.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/FONTEINV.CNV +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/FONTINFO.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/GRAVIDEZ.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/INSTRUC.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/INVESTIG.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/LOCOCOR.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/OBITOFE1.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/OBITOFE2.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/OMUFER.CNV +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/Obito_1979_95_CID-09.DEF +217 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/Obito_1996_CID10.def +1096 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/PARTO.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/RACACOR.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/SEMANAS.CNV +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/SERIEFAL.CNV +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/TIPOACID.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/TIPOBITO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/TIPOVIOL.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/VERSCB.CNV +23 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/obitoPUE.cnv +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/obitogra.cnv +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sim/oparto.cnv +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/AvaliaN.cnv +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/ChagasNET.def +643 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/Escolarnet.cnv +13 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/HansNET.def +492 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/SAIDAhans.cnv +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/TuberculNET5_0.def +514 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinan/reacional.cnv +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ANOMAL.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/CONSULT.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ESC2010.CNV +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ESCAGR1.CNV +15 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ESTCIV.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/GRAVIDEZ.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/INSTRUC.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/KOTELCHUCK.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/LOCOCOR.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/NASCIDO.def +876 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ORIGEM.CNV +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/PARAPRE.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/PARTO.CNV +5 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/RACA.CNV +8 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/ROBSON.CNV +12 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/SEMANAS.CNV +9 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/SEXO.CNV +4 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/STPARTO.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/TPASSIST.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/TPFUNC.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/TPMETODO.CNV +7 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/sinasc/idanomal.cnv +6 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/cnv/vinculos.json +1743 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/sources/registry.json +554 -0
- omnisus-0.2.0/src/omnisus/data/dicionarios/versoes.json +152 -0
- omnisus-0.2.0/src/omnisus/lake/__init__.py +14 -0
- omnisus-0.2.0/src/omnisus/lake/_transactions.py +15 -0
- omnisus-0.2.0/src/omnisus/lake/catalog.py +107 -0
- omnisus-0.2.0/src/omnisus/lake/connection.py +137 -0
- omnisus-0.2.0/src/omnisus/lake/locking.py +55 -0
- omnisus-0.2.0/src/omnisus/lake/maintenance.py +37 -0
- omnisus-0.2.0/src/omnisus/lake/operations.py +633 -0
- omnisus-0.2.0/src/omnisus/lake/publication.py +449 -0
- omnisus-0.2.0/src/omnisus/lake/schema.py +28 -0
- omnisus-0.2.0/src/omnisus/lake/session.py +213 -0
- omnisus-0.2.0/src/omnisus/lake/sql.py +17 -0
- omnisus-0.2.0/src/omnisus/metadata.py +218 -0
- omnisus-0.2.0/src/omnisus/products.py +91 -0
- omnisus-0.2.0/src/omnisus/py.typed +0 -0
- omnisus-0.2.0/src/omnisus/research.py +406 -0
- omnisus-0.2.0/src/omnisus/sources/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/_base.py +179 -0
- omnisus-0.2.0/src/omnisus/sources/cnes/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/cnes/importers/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/cnes/importers/master.py +212 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/_cache.py +144 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/_ftp.py +41 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/_runner.py +604 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/datasets.py +242 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/dbc.py +199 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/dbf_batches.py +172 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/dbf_contract.py +149 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/fetch.py +214 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/filenames.py +96 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/identity.py +75 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/inventory.py +438 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/native.py +40 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/parse.py +87 -0
- omnisus-0.2.0/src/omnisus/sources/datasus_ftp/staging.py +242 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/fetch.py +140 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/importers/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/importers/pop.py +100 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/parse.py +88 -0
- omnisus-0.2.0/src/omnisus/sources/ibge/products.py +60 -0
- omnisus-0.2.0/src/omnisus/sources/medicamentos/__init__.py +5 -0
- omnisus-0.2.0/src/omnisus/sources/medicamentos/horus.py +137 -0
- omnisus-0.2.0/src/omnisus/sources/sigtap/__init__.py +172 -0
- omnisus-0.2.0/src/omnisus/transforms/__init__.py +0 -0
- omnisus-0.2.0/src/omnisus/transforms/age.py +226 -0
- omnisus-0.2.0/src/omnisus/transforms/analytics.py +252 -0
- omnisus-0.2.0/src/omnisus/transforms/cnv.py +235 -0
- omnisus-0.2.0/src/omnisus/transforms/columns.py +113 -0
- omnisus-0.2.0/src/omnisus/transforms/dictionaries.py +253 -0
omnisus-0.2.0/.gitignore
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
__marimo__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.so
|
|
5
|
+
.venv/
|
|
6
|
+
.uv/
|
|
7
|
+
.pytest_cache/
|
|
8
|
+
.ruff_cache/
|
|
9
|
+
.mypy_cache/
|
|
10
|
+
htmlcov/
|
|
11
|
+
.coverage
|
|
12
|
+
coverage.xml
|
|
13
|
+
dist/
|
|
14
|
+
build/
|
|
15
|
+
native/**/target/
|
|
16
|
+
native/**/fuzz/artifacts/
|
|
17
|
+
native/**/fuzz/corpus/
|
|
18
|
+
*.whl
|
|
19
|
+
*.egg-info/
|
|
20
|
+
.DS_Store
|
|
21
|
+
.idea/
|
|
22
|
+
.vscode/
|
|
23
|
+
|
|
24
|
+
# DuckLake / DuckDB local artifacts
|
|
25
|
+
*.ducklake
|
|
26
|
+
*.ducklake-catalog.sqlite
|
|
27
|
+
*.duckdb
|
|
28
|
+
/data/
|
|
29
|
+
|
|
30
|
+
# Notebook results (tables and citations)
|
|
31
|
+
/resultados/
|
|
32
|
+
|
|
33
|
+
# Fixtures cached
|
|
34
|
+
tests/.cache/
|
|
35
|
+
|
|
36
|
+
# Docs build
|
|
37
|
+
site/
|
|
38
|
+
|
|
39
|
+
# Tool scratch directories
|
|
40
|
+
.hypothesis/
|
|
41
|
+
.playwright-mcp/
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## v0.2.0 — 2026-10-01
|
|
4
|
+
|
|
5
|
+
### Rust decoder by default
|
|
6
|
+
|
|
7
|
+
- `omnisus` depends on `omnisus-dbf` 0.2.0, now on PyPI, on Linux x86_64, macOS
|
|
8
|
+
(arm64, x86_64) and Windows x86_64 (#38). The `auto` backend then reads DBF and
|
|
9
|
+
decompresses DBC in Rust; other platforms keep the Python decoders, and no install
|
|
10
|
+
needs a Rust toolchain. `OMNISUS_DBF_BACKEND=python` and `OMNISUS_DBC_BACKEND=python`
|
|
11
|
+
still select Python. The `--find-links` install is gone.
|
|
12
|
+
- A `dbf-v*` tag publishes `omnisus-dbf` to PyPI after the full native matrix passes
|
|
13
|
+
(#37).
|
|
14
|
+
|
|
15
|
+
### On PyPI
|
|
16
|
+
|
|
17
|
+
- `omnisus` is published to PyPI: `pip install omnisus`. The Colab notebook and the
|
|
18
|
+
PEP 723 header of every marimo notebook install `omnisus==0.2.0` from PyPI instead
|
|
19
|
+
of a git commit.
|
|
20
|
+
|
|
21
|
+
### Import alias (breaking for copied code)
|
|
22
|
+
|
|
23
|
+
- Docs, notebooks and examples use `import omnisus as sus` instead of `odb` (#21).
|
|
24
|
+
Only the alias in examples changed; the API names are the same.
|
|
25
|
+
|
|
26
|
+
### SIH dictionaries
|
|
27
|
+
|
|
28
|
+
- RD: `regct` gets the `REGCT.CNV` map, conflicts between the CNVs and the older
|
|
29
|
+
map are resolved in favour of the CNV (#5); `tpdisec1`–`tpdisec9` get
|
|
30
|
+
`TP_DIAGSEC.CNV` (#14); `diagsec1`–`diagsec9` link to `aux_cid10` (#22).
|
|
31
|
+
- RD and RJ: `nacional`, `contracep1`, `contracep2` and RJ `st_mot_blo` get the
|
|
32
|
+
TAB_SIH maps (#20).
|
|
33
|
+
- `sih_aih_reduzida_1992_2007` gets the maps of `TAB_SIH_199201-199712.zip`, checked
|
|
34
|
+
against the three packages of the era (#23, #36).
|
|
35
|
+
- Each identical CNV is stored once, and the evidence of the three RD eras is
|
|
36
|
+
generated instead of written by hand (#36).
|
|
37
|
+
|
|
38
|
+
### Dictionary versions
|
|
39
|
+
|
|
40
|
+
- `src/omnisus/data/dicionarios/versoes.json` locks each dictionary's `x-version`
|
|
41
|
+
to its content; a changed dictionary needs a higher version (#35).
|
|
42
|
+
- A publication's `parser_version` hashes only what the import reads from the
|
|
43
|
+
dictionary, so editing a label or a claim no longer forces `replace` on scopes
|
|
44
|
+
already imported (#19).
|
|
45
|
+
|
|
46
|
+
### Docs and notebooks
|
|
47
|
+
|
|
48
|
+
- README and site for researchers, Colab notebook, generated dataset arguments (#4);
|
|
49
|
+
notebooks use only the public API (#16); leaner `AGENTS.md` (#15).
|
|
50
|
+
|
|
51
|
+
## v0.1.0 — 2026-09-25
|
|
52
|
+
|
|
53
|
+
First release of `omnisus` in this repository. It continues the `omnisus-db` package
|
|
54
|
+
(last release v0.3.2, in the repository's earlier history, which is not carried over).
|
|
55
|
+
The sections below say what the package does and what changed since `omnisus-db` v0.3.2.
|
|
56
|
+
|
|
57
|
+
### What the package does
|
|
58
|
+
|
|
59
|
+
- Imports DATASUS FTP datasets (SIM and its subsets, SINASC, SIH, SIA, CNES, SINAN
|
|
60
|
+
Chagas, hanseníase and tuberculose), IBGE population editions, CNES establishment
|
|
61
|
+
names, SIGTAP and Hórus stock into a DuckLake lake. [Datasets](docs/datasets.md) lists
|
|
62
|
+
every registry row.
|
|
63
|
+
- Records each imported scope as a publication with its server files and their
|
|
64
|
+
SHA-256; `odb.cite` turns a snapshot into a citation.
|
|
65
|
+
- `odb.load`, `odb.label` and `odb.check_columns` cover an analysis from download to
|
|
66
|
+
labelled rows. Labels come from dictionaries whose claims cite official documents
|
|
67
|
+
registered with URL and SHA-256.
|
|
68
|
+
- Decodes DBC and DBF in Python, or in Rust with the optional `omnisus-dbf` package.
|
|
69
|
+
|
|
70
|
+
### Renamed: `omnisus-db` is now `omnisus` (breaking)
|
|
71
|
+
|
|
72
|
+
- Distribution, import and CLI are `omnisus`: `import omnisus as odb`,
|
|
73
|
+
`omnisus import ...`. The native package is `omnisus-dbf` (import `omnisus_dbf`),
|
|
74
|
+
in `native/omnisus-dbf`. No `omnisus_db` alias is kept.
|
|
75
|
+
- The inventory cache moves from `<cache>/omnisus-db/inventory` to
|
|
76
|
+
`<cache>/omnisus/inventory`; the old one is only a cache and is rebuilt.
|
|
77
|
+
- Citations say "Importado com omnisus <versão>".
|
|
78
|
+
- Environment variables (`OMNISUS_*`) and lake tables (`_omnisus_*`) keep their
|
|
79
|
+
names: existing lakes open unchanged.
|
|
80
|
+
|
|
81
|
+
### Removed since `omnisus-db` v0.3.2
|
|
82
|
+
|
|
83
|
+
- **`cnes_profissionais` (CNES `PF`).** The file names each professional with CPF and
|
|
84
|
+
CNS and answers no clinical question. Its registry row, dictionary, DEF and fixture
|
|
85
|
+
are gone.
|
|
86
|
+
- **`omnisus.transforms.cns`.** It deciphered the patient CNS of SIA files and had no
|
|
87
|
+
public consumer.
|
|
88
|
+
- `Lake.vacuum` and `omnisus lake vacuum`, already deprecated: use `cleanup_files` /
|
|
89
|
+
`lake cleanup-files`. Also the uncalled `import_st_scope` and
|
|
90
|
+
`lake.schema.canonical_type`/`ddl_for_field`.
|
|
91
|
+
- Runtime dependencies nothing imported: `pandera`, `obstore`, `pydantic`,
|
|
92
|
+
`pydantic-settings`, `tomli-w`; `moto` and `pyfakefs` from `dev`. `frictionless`
|
|
93
|
+
is now a `dev` dependency.
|
|
94
|
+
- Tutorials 01–05 (they repeated the per-base notebooks), the exploration and
|
|
95
|
+
development notebooks, and the 2026-09-10 audit snapshot pages (`catalogo.md`,
|
|
96
|
+
`campos.csv`, `cobertura.csv`, `fontes/registro.json`) with their generator.
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- Notebooks live in `notebooks/`, one per base plus `linkage.py`, and pin
|
|
101
|
+
`marimo>=0.25.0,<0.26` like the `notebooks` extra.
|
|
102
|
+
- Evidence cited by dictionaries, tests and docs lives in `evidence/`.
|
|
103
|
+
- URLs point to `github.com/raphaelfh/omnisus` and `raphaelfh.github.io/omnisus`.
|
|
104
|
+
- Docs match the code: `skip_same` skips without downloading, `not_listed` versus
|
|
105
|
+
`fetch_failed`, a second writer fails at once with `WriterBusyError`.
|
omnisus-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Raphael Federicci
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
omnisus-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: omnisus
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Python library for ingesting Brazilian public health databases into DuckLake
|
|
5
|
+
Project-URL: Homepage, https://github.com/raphaelfh/omnisus
|
|
6
|
+
Project-URL: Documentation, https://raphaelfh.github.io/omnisus
|
|
7
|
+
Project-URL: Repository, https://github.com/raphaelfh/omnisus
|
|
8
|
+
Author-email: Raphael Federicci <rfh.federicci@gmail.com>
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: brazil,datasus,duckdb,ducklake,epidemiology,health,polars
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Science/Research
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
19
|
+
Requires-Python: >=3.12
|
|
20
|
+
Requires-Dist: dbfread2<2.0,>=0.1.0
|
|
21
|
+
Requires-Dist: duckdb<2.0,>=1.5.5
|
|
22
|
+
Requires-Dist: httpx>=0.28.1
|
|
23
|
+
Requires-Dist: omnisus-dbf>=0.2.0; (sys_platform == 'linux' and platform_machine == 'x86_64') or sys_platform == 'darwin' or (sys_platform == 'win32' and platform_machine == 'AMD64')
|
|
24
|
+
Requires-Dist: polars<2.0,>=1.44.2
|
|
25
|
+
Requires-Dist: pyarrow>=25.0.1
|
|
26
|
+
Requires-Dist: pyyaml>=6.0.3
|
|
27
|
+
Requires-Dist: rich>=13.8.0
|
|
28
|
+
Requires-Dist: structlog>=26.1.0
|
|
29
|
+
Requires-Dist: typer>=0.27.2
|
|
30
|
+
Requires-Dist: tzdata>=2026.3; sys_platform == 'win32'
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: frictionless>=5.19.0; extra == 'dev'
|
|
33
|
+
Requires-Dist: hypothesis>=6.168.0; extra == 'dev'
|
|
34
|
+
Requires-Dist: marimo<0.26,>=0.25.0; extra == 'dev'
|
|
35
|
+
Requires-Dist: mypy>=2.3.1; extra == 'dev'
|
|
36
|
+
Requires-Dist: pre-commit>=4.6.2; extra == 'dev'
|
|
37
|
+
Requires-Dist: pytest-asyncio>=1.4.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: pytest-benchmark>=5.3.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: pytest-cov>=7.1.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-xdist>=3.8.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest>=9.1.1; extra == 'dev'
|
|
42
|
+
Requires-Dist: respx>=0.23.1; extra == 'dev'
|
|
43
|
+
Requires-Dist: ruff>=0.16.6; extra == 'dev'
|
|
44
|
+
Requires-Dist: sqlglot>=30.18.0; extra == 'dev'
|
|
45
|
+
Requires-Dist: types-pyyaml>=6.0.12.20260906; extra == 'dev'
|
|
46
|
+
Provides-Extra: docs
|
|
47
|
+
Requires-Dist: mkdocs-material>=9.7.7; extra == 'docs'
|
|
48
|
+
Requires-Dist: mkdocs<2.0,>=1.6.1; extra == 'docs'
|
|
49
|
+
Requires-Dist: mkdocstrings[python]>=1.0.6; extra == 'docs'
|
|
50
|
+
Provides-Extra: notebooks
|
|
51
|
+
Requires-Dist: marimo<0.26,>=0.25.0; extra == 'notebooks'
|
|
52
|
+
Requires-Dist: sqlglot>=30.18.0; extra == 'notebooks'
|
|
53
|
+
Provides-Extra: postgres
|
|
54
|
+
Requires-Dist: psycopg[binary]>=3.3.5; extra == 'postgres'
|
|
55
|
+
Description-Content-Type: text/markdown
|
|
56
|
+
|
|
57
|
+
# omnisus
|
|
58
|
+
|
|
59
|
+
Importa bases públicas de saúde do Brasil (DATASUS, IBGE, CNES) para um lake
|
|
60
|
+
[DuckLake](https://ducklake.select), no seu computador, no Google Drive ou na nuvem, com
|
|
61
|
+
a procedência necessária para citar cada resultado.
|
|
62
|
+
|
|
63
|
+
*Brazilian public health data (DATASUS, IBGE, CNES) in a DuckLake lake (on your computer, on Google
|
|
64
|
+
Drive or in the cloud), with the provenance needed to cite it. Documentation: <https://raphaelfh.github.io/omnisus/>.*
|
|
65
|
+
|
|
66
|
+
> [!WARNING]
|
|
67
|
+
> **Trabalho em construção.** A API ainda pode mudar entre versões menores, e
|
|
68
|
+
> nem todo dicionário foi conferido contra o documento oficial. Antes de publicar um
|
|
69
|
+
> número, confira as contagens, as colunas e os rótulos (veja
|
|
70
|
+
> [Confira antes de usar](#confira-antes-de-usar)). Um rótulo errado é um bug:
|
|
71
|
+
> [abra uma issue](https://github.com/raphaelfh/omnisus/issues/new/choose).
|
|
72
|
+
|
|
73
|
+
## Instalação
|
|
74
|
+
|
|
75
|
+
Python 3.12 ou mais novo:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pip install omnisus
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Em Linux x86_64, macOS (arm64/x86_64) e Windows x86_64 isso instala também o
|
|
82
|
+
decodificador Rust `omnisus-dbf`. Nas demais plataformas, o Python
|
|
83
|
+
decodifica os mesmos arquivos.
|
|
84
|
+
|
|
85
|
+
## Início rápido
|
|
86
|
+
|
|
87
|
+
Sem instalar nada:
|
|
88
|
+
|
|
89
|
+
[](https://colab.research.google.com/github/raphaelfh/omnisus/blob/main/notebooks/colab.ipynb)
|
|
90
|
+
[](https://molab.marimo.io/github/raphaelfh/omnisus/blob/main/notebooks/sim_obitos.py)
|
|
91
|
+
|
|
92
|
+
O Colab baixa os óbitos de Roraima em 2023, põe rótulos, confere as colunas e imprime a
|
|
93
|
+
citação, com o lake opcionalmente no seu Google Drive. O molab abre os notebooks marimo
|
|
94
|
+
de cada base. Outros caminhos (marimo no seu computador, Jupyter) estão em
|
|
95
|
+
[Comece aqui](https://raphaelfh.github.io/omnisus/pesquisa/).
|
|
96
|
+
|
|
97
|
+
Em Python:
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
import omnisus as sus
|
|
101
|
+
|
|
102
|
+
dados = sus.load("sim_obitos", years=[2023], ufs=["RR"]) # baixa e devolve as linhas
|
|
103
|
+
dados = sus.label("sim_obitos", dados, columns=["sexo", "racacor"]) # + sexo_rotulo, racacor_rotulo
|
|
104
|
+
sus.check_columns("sim_obitos", dados) # vazios, códigos sem rótulo, datas
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
O lake fica em `data/raw/` no diretório de trabalho, e um segundo `load` do mesmo
|
|
108
|
+
recorte não baixa nada. Toda função documenta seus parâmetros com um exemplo:
|
|
109
|
+
`help(sus.load)`.
|
|
110
|
+
|
|
111
|
+
Para ir além:
|
|
112
|
+
|
|
113
|
+
- [Guia do pesquisador](https://raphaelfh.github.io/omnisus/pesquisa/): qual base
|
|
114
|
+
responde a cada pergunta, o que um registro representa e como citar.
|
|
115
|
+
- [Notebooks](https://github.com/raphaelfh/omnisus/blob/main/notebooks/README.md): um por base, com as mesmas seis etapas, que abrem no
|
|
116
|
+
navegador pelo molab.
|
|
117
|
+
- [Getting Started](https://raphaelfh.github.io/omnisus/guides/getting-started/):
|
|
118
|
+
onde fica o lake, Colab, linha de comando e lakes na nuvem.
|
|
119
|
+
- [Bases e argumentos](https://raphaelfh.github.io/omnisus/datasets/): cada base, com o
|
|
120
|
+
que passar em `years`, `ufs` e `months` e quais colunas têm rótulo. É gerada do
|
|
121
|
+
código a cada versão, como a [API](https://raphaelfh.github.io/omnisus/api/);
|
|
122
|
+
`help(sus.load)` mostra o mesmo na versão instalada.
|
|
123
|
+
|
|
124
|
+
## Confira antes de usar
|
|
125
|
+
|
|
126
|
+
- **Contagens.** Compare o total de linhas com o que o DATASUS publica (TabNet, painéis
|
|
127
|
+
oficiais) antes de analisar. `sus.check_columns` mostra, por coluna, a proporção de
|
|
128
|
+
vazios, os códigos que o dicionário não conhece e as datas mínima e máxima.
|
|
129
|
+
- **Rótulos.** Um código que o dicionário não conhece fica sem rótulo (`None`); ele nunca
|
|
130
|
+
é adivinhado. Cada mapa de códigos diz se foi conferido no documento oficial:
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
campo = next(f for f in sus.describe_dataset("sim_obitos")["fields"]
|
|
134
|
+
if f["field"]["name"] == "sexo")
|
|
135
|
+
[(c["status"], c["evidence"]) for c in campo["claims"] if c["target"] == "/field/codes"]
|
|
136
|
+
# status: verified_in_source, conflicting ou unreviewed; evidence: documento e página
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Só use um rótulo `unreviewed` ou `conflicting` depois de conferir o documento você
|
|
140
|
+
mesmo.
|
|
141
|
+
- **Escopo das regras.** Idade em anos, sexo e datas harmonizados só aparecem para os
|
|
142
|
+
arquivos cujo SHA-256 foi auditado (`describe_dataset(...)["analytics"]`); os outros
|
|
143
|
+
saem como publicados.
|
|
144
|
+
|
|
145
|
+
## De onde vêm os dados e os rótulos
|
|
146
|
+
|
|
147
|
+
| O que | Onde |
|
|
148
|
+
| --- | --- |
|
|
149
|
+
| Arquivo de origem de cada linha importada | `reader.publications()` e `sus.cite(reader)` num `sus.LakeReader()`: caminho no servidor, SHA-256, `snapshot_id` |
|
|
150
|
+
| Diretório do FTP de cada base | [Bases e argumentos](https://raphaelfh.github.io/omnisus/datasets/) |
|
|
151
|
+
| Dicionários (de-para de códigos, descrições, tipos) | [`src/omnisus/data/dicionarios/<base>.yaml`](https://github.com/raphaelfh/omnisus/tree/main/src/omnisus/data/dicionarios), campo `x-decode` |
|
|
152
|
+
| Documentos oficiais citados (PDF, TabWin), com URL e SHA-256 | [`src/omnisus/data/dicionarios/sources/registry.json`](https://github.com/raphaelfh/omnisus/blob/main/src/omnisus/data/dicionarios/sources/registry.json) |
|
|
153
|
+
| Tabelas CNV do TabWin de onde saem muitos rótulos | [`src/omnisus/data/dicionarios/sources/cnv/`](https://github.com/raphaelfh/omnisus/tree/main/src/omnisus/data/dicionarios/sources/cnv) |
|
|
154
|
+
| Auditorias que sustentam as regras (contagens, hashes, reprodução) | [`evidence/`](https://github.com/raphaelfh/omnisus/tree/main/evidence) |
|
|
155
|
+
|
|
156
|
+
O [dicionário de dados](https://raphaelfh.github.io/omnisus/dicionario/) explica como
|
|
157
|
+
ler esses arquivos e como conferir um rótulo.
|
|
158
|
+
|
|
159
|
+
## Como contribuir
|
|
160
|
+
|
|
161
|
+
Leia o [CONTRIBUTING.md](https://github.com/raphaelfh/omnisus/blob/main/CONTRIBUTING.md). Em resumo: todo fato no código ou na
|
|
162
|
+
documentação vem do servidor do DATASUS ou de um arquivo com SHA-256 registrado, todo
|
|
163
|
+
teste roda sobre trechos de arquivos reais, e o repositório é público. Um rótulo
|
|
164
|
+
errado, uma base que falta ou uma contagem que não bate com o DATASUS são boas
|
|
165
|
+
primeiras issues.
|
|
166
|
+
|
|
167
|
+
## Licença
|
|
168
|
+
|
|
169
|
+
[MIT](https://github.com/raphaelfh/omnisus/blob/main/LICENSE).
|
omnisus-0.2.0/README.md
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# omnisus
|
|
2
|
+
|
|
3
|
+
Importa bases públicas de saúde do Brasil (DATASUS, IBGE, CNES) para um lake
|
|
4
|
+
[DuckLake](https://ducklake.select), no seu computador, no Google Drive ou na nuvem, com
|
|
5
|
+
a procedência necessária para citar cada resultado.
|
|
6
|
+
|
|
7
|
+
*Brazilian public health data (DATASUS, IBGE, CNES) in a DuckLake lake (on your computer, on Google
|
|
8
|
+
Drive or in the cloud), with the provenance needed to cite it. Documentation: <https://raphaelfh.github.io/omnisus/>.*
|
|
9
|
+
|
|
10
|
+
> [!WARNING]
|
|
11
|
+
> **Trabalho em construção.** A API ainda pode mudar entre versões menores, e
|
|
12
|
+
> nem todo dicionário foi conferido contra o documento oficial. Antes de publicar um
|
|
13
|
+
> número, confira as contagens, as colunas e os rótulos (veja
|
|
14
|
+
> [Confira antes de usar](#confira-antes-de-usar)). Um rótulo errado é um bug:
|
|
15
|
+
> [abra uma issue](https://github.com/raphaelfh/omnisus/issues/new/choose).
|
|
16
|
+
|
|
17
|
+
## Instalação
|
|
18
|
+
|
|
19
|
+
Python 3.12 ou mais novo:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
pip install omnisus
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Em Linux x86_64, macOS (arm64/x86_64) e Windows x86_64 isso instala também o
|
|
26
|
+
decodificador Rust `omnisus-dbf`. Nas demais plataformas, o Python
|
|
27
|
+
decodifica os mesmos arquivos.
|
|
28
|
+
|
|
29
|
+
## Início rápido
|
|
30
|
+
|
|
31
|
+
Sem instalar nada:
|
|
32
|
+
|
|
33
|
+
[](https://colab.research.google.com/github/raphaelfh/omnisus/blob/main/notebooks/colab.ipynb)
|
|
34
|
+
[](https://molab.marimo.io/github/raphaelfh/omnisus/blob/main/notebooks/sim_obitos.py)
|
|
35
|
+
|
|
36
|
+
O Colab baixa os óbitos de Roraima em 2023, põe rótulos, confere as colunas e imprime a
|
|
37
|
+
citação, com o lake opcionalmente no seu Google Drive. O molab abre os notebooks marimo
|
|
38
|
+
de cada base. Outros caminhos (marimo no seu computador, Jupyter) estão em
|
|
39
|
+
[Comece aqui](https://raphaelfh.github.io/omnisus/pesquisa/).
|
|
40
|
+
|
|
41
|
+
Em Python:
|
|
42
|
+
|
|
43
|
+
```python
|
|
44
|
+
import omnisus as sus
|
|
45
|
+
|
|
46
|
+
dados = sus.load("sim_obitos", years=[2023], ufs=["RR"]) # baixa e devolve as linhas
|
|
47
|
+
dados = sus.label("sim_obitos", dados, columns=["sexo", "racacor"]) # + sexo_rotulo, racacor_rotulo
|
|
48
|
+
sus.check_columns("sim_obitos", dados) # vazios, códigos sem rótulo, datas
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
O lake fica em `data/raw/` no diretório de trabalho, e um segundo `load` do mesmo
|
|
52
|
+
recorte não baixa nada. Toda função documenta seus parâmetros com um exemplo:
|
|
53
|
+
`help(sus.load)`.
|
|
54
|
+
|
|
55
|
+
Para ir além:
|
|
56
|
+
|
|
57
|
+
- [Guia do pesquisador](https://raphaelfh.github.io/omnisus/pesquisa/): qual base
|
|
58
|
+
responde a cada pergunta, o que um registro representa e como citar.
|
|
59
|
+
- [Notebooks](https://github.com/raphaelfh/omnisus/blob/main/notebooks/README.md): um por base, com as mesmas seis etapas, que abrem no
|
|
60
|
+
navegador pelo molab.
|
|
61
|
+
- [Getting Started](https://raphaelfh.github.io/omnisus/guides/getting-started/):
|
|
62
|
+
onde fica o lake, Colab, linha de comando e lakes na nuvem.
|
|
63
|
+
- [Bases e argumentos](https://raphaelfh.github.io/omnisus/datasets/): cada base, com o
|
|
64
|
+
que passar em `years`, `ufs` e `months` e quais colunas têm rótulo. É gerada do
|
|
65
|
+
código a cada versão, como a [API](https://raphaelfh.github.io/omnisus/api/);
|
|
66
|
+
`help(sus.load)` mostra o mesmo na versão instalada.
|
|
67
|
+
|
|
68
|
+
## Confira antes de usar
|
|
69
|
+
|
|
70
|
+
- **Contagens.** Compare o total de linhas com o que o DATASUS publica (TabNet, painéis
|
|
71
|
+
oficiais) antes de analisar. `sus.check_columns` mostra, por coluna, a proporção de
|
|
72
|
+
vazios, os códigos que o dicionário não conhece e as datas mínima e máxima.
|
|
73
|
+
- **Rótulos.** Um código que o dicionário não conhece fica sem rótulo (`None`); ele nunca
|
|
74
|
+
é adivinhado. Cada mapa de códigos diz se foi conferido no documento oficial:
|
|
75
|
+
|
|
76
|
+
```python
|
|
77
|
+
campo = next(f for f in sus.describe_dataset("sim_obitos")["fields"]
|
|
78
|
+
if f["field"]["name"] == "sexo")
|
|
79
|
+
[(c["status"], c["evidence"]) for c in campo["claims"] if c["target"] == "/field/codes"]
|
|
80
|
+
# status: verified_in_source, conflicting ou unreviewed; evidence: documento e página
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Só use um rótulo `unreviewed` ou `conflicting` depois de conferir o documento você
|
|
84
|
+
mesmo.
|
|
85
|
+
- **Escopo das regras.** Idade em anos, sexo e datas harmonizados só aparecem para os
|
|
86
|
+
arquivos cujo SHA-256 foi auditado (`describe_dataset(...)["analytics"]`); os outros
|
|
87
|
+
saem como publicados.
|
|
88
|
+
|
|
89
|
+
## De onde vêm os dados e os rótulos
|
|
90
|
+
|
|
91
|
+
| O que | Onde |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| Arquivo de origem de cada linha importada | `reader.publications()` e `sus.cite(reader)` num `sus.LakeReader()`: caminho no servidor, SHA-256, `snapshot_id` |
|
|
94
|
+
| Diretório do FTP de cada base | [Bases e argumentos](https://raphaelfh.github.io/omnisus/datasets/) |
|
|
95
|
+
| Dicionários (de-para de códigos, descrições, tipos) | [`src/omnisus/data/dicionarios/<base>.yaml`](https://github.com/raphaelfh/omnisus/tree/main/src/omnisus/data/dicionarios), campo `x-decode` |
|
|
96
|
+
| Documentos oficiais citados (PDF, TabWin), com URL e SHA-256 | [`src/omnisus/data/dicionarios/sources/registry.json`](https://github.com/raphaelfh/omnisus/blob/main/src/omnisus/data/dicionarios/sources/registry.json) |
|
|
97
|
+
| Tabelas CNV do TabWin de onde saem muitos rótulos | [`src/omnisus/data/dicionarios/sources/cnv/`](https://github.com/raphaelfh/omnisus/tree/main/src/omnisus/data/dicionarios/sources/cnv) |
|
|
98
|
+
| Auditorias que sustentam as regras (contagens, hashes, reprodução) | [`evidence/`](https://github.com/raphaelfh/omnisus/tree/main/evidence) |
|
|
99
|
+
|
|
100
|
+
O [dicionário de dados](https://raphaelfh.github.io/omnisus/dicionario/) explica como
|
|
101
|
+
ler esses arquivos e como conferir um rótulo.
|
|
102
|
+
|
|
103
|
+
## Como contribuir
|
|
104
|
+
|
|
105
|
+
Leia o [CONTRIBUTING.md](https://github.com/raphaelfh/omnisus/blob/main/CONTRIBUTING.md). Em resumo: todo fato no código ou na
|
|
106
|
+
documentação vem do servidor do DATASUS ou de um arquivo com SHA-256 registrado, todo
|
|
107
|
+
teste roda sobre trechos de arquivos reais, e o repositório é público. Um rótulo
|
|
108
|
+
errado, uma base que falta ou uma contagem que não bate com o DATASUS são boas
|
|
109
|
+
primeiras issues.
|
|
110
|
+
|
|
111
|
+
## Licença
|
|
112
|
+
|
|
113
|
+
[MIT](https://github.com/raphaelfh/omnisus/blob/main/LICENSE).
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "omnisus"
|
|
3
|
+
dynamic = ["version"]
|
|
4
|
+
description = "Python library for ingesting Brazilian public health databases into DuckLake"
|
|
5
|
+
requires-python = ">=3.12"
|
|
6
|
+
license = { text = "MIT" }
|
|
7
|
+
authors = [{ name = "Raphael Federicci", email = "rfh.federicci@gmail.com" }]
|
|
8
|
+
readme = "README.md"
|
|
9
|
+
keywords = ["datasus", "duckdb", "ducklake", "polars", "brazil", "health", "epidemiology"]
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Development Status :: 3 - Alpha",
|
|
12
|
+
"Intended Audience :: Science/Research",
|
|
13
|
+
"License :: OSI Approved :: MIT License",
|
|
14
|
+
"Programming Language :: Python :: 3.12",
|
|
15
|
+
"Programming Language :: Python :: 3.13",
|
|
16
|
+
"Programming Language :: Python :: 3.14",
|
|
17
|
+
"Topic :: Scientific/Engineering :: Bio-Informatics",
|
|
18
|
+
]
|
|
19
|
+
dependencies = [
|
|
20
|
+
"duckdb>=1.5.5,<2.0",
|
|
21
|
+
"polars>=1.44.2,<2.0",
|
|
22
|
+
"pyarrow>=25.0.1",
|
|
23
|
+
"dbfread2>=0.1.0,<2.0",
|
|
24
|
+
"typer>=0.27.2",
|
|
25
|
+
"rich>=13.8.0",
|
|
26
|
+
"structlog>=26.1.0",
|
|
27
|
+
"httpx>=0.28.1",
|
|
28
|
+
"pyyaml>=6.0.3",
|
|
29
|
+
# Windows has no system time-zone database; pyarrow needs it to convert the
|
|
30
|
+
# TIMESTAMPTZ columns that expire_snapshots and cleanup_files return.
|
|
31
|
+
"tzdata>=2026.3; sys_platform == 'win32'",
|
|
32
|
+
# Rust DBF reader and DBC decompressor, on the platforms with a published
|
|
33
|
+
# wheel; elsewhere the Python decoders run (ADR 0001).
|
|
34
|
+
"omnisus-dbf>=0.2.0; (sys_platform == 'linux' and platform_machine == 'x86_64') or sys_platform == 'darwin' or (sys_platform == 'win32' and platform_machine == 'AMD64')",
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
[project.optional-dependencies]
|
|
38
|
+
postgres = [
|
|
39
|
+
"psycopg[binary]>=3.3.5",
|
|
40
|
+
]
|
|
41
|
+
dev = [
|
|
42
|
+
"pytest>=9.1.1",
|
|
43
|
+
"pytest-asyncio>=1.4.0",
|
|
44
|
+
"pytest-benchmark>=5.3.0",
|
|
45
|
+
"pytest-cov>=7.1.0",
|
|
46
|
+
"pytest-xdist>=3.8.0",
|
|
47
|
+
"hypothesis>=6.168.0",
|
|
48
|
+
"respx>=0.23.1",
|
|
49
|
+
# Validates every packaged dictionary (tests/unit/transforms/test_frictionless_schemas.py).
|
|
50
|
+
"frictionless>=5.19.0",
|
|
51
|
+
"ruff>=0.16.6",
|
|
52
|
+
"mypy>=2.3.1",
|
|
53
|
+
"types-PyYAML>=6.0.12.20260906",
|
|
54
|
+
"pre-commit>=4.6.2",
|
|
55
|
+
# The notebook tests import marimo; keep one pin, in the notebooks extra.
|
|
56
|
+
"omnisus[notebooks]",
|
|
57
|
+
]
|
|
58
|
+
docs = [
|
|
59
|
+
"mkdocs>=1.6.1,<2.0",
|
|
60
|
+
"mkdocs-material>=9.7.7",
|
|
61
|
+
"mkdocstrings[python]>=1.0.6",
|
|
62
|
+
]
|
|
63
|
+
notebooks = [
|
|
64
|
+
"marimo>=0.25.0,<0.26",
|
|
65
|
+
# marimo parses mo.sql cells with sqlglot; no library code imports it.
|
|
66
|
+
"sqlglot>=30.18.0",
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
[project.scripts]
|
|
70
|
+
omnisus = "omnisus.cli.main:app"
|
|
71
|
+
|
|
72
|
+
[project.urls]
|
|
73
|
+
Homepage = "https://github.com/raphaelfh/omnisus"
|
|
74
|
+
Documentation = "https://raphaelfh.github.io/omnisus"
|
|
75
|
+
Repository = "https://github.com/raphaelfh/omnisus"
|
|
76
|
+
|
|
77
|
+
[build-system]
|
|
78
|
+
requires = ["hatchling>=1.32.0,<2.0"]
|
|
79
|
+
build-backend = "hatchling.build"
|
|
80
|
+
|
|
81
|
+
[tool.hatch.version]
|
|
82
|
+
# The version has one home: _version.py.
|
|
83
|
+
path = "src/omnisus/_version.py"
|
|
84
|
+
|
|
85
|
+
# Without this list hatch packs the whole checkout (evidence, notebooks,
|
|
86
|
+
# fixtures) into the sdist.
|
|
87
|
+
[tool.hatch.build.targets.sdist]
|
|
88
|
+
only-include = ["src/omnisus", "README.md", "CHANGELOG.md", "LICENSE"]
|
|
89
|
+
|
|
90
|
+
[tool.hatch.build.targets.wheel]
|
|
91
|
+
packages = ["src/omnisus"]
|
|
92
|
+
|
|
93
|
+
[tool.hatch.build.targets.wheel.force-include]
|
|
94
|
+
"src/omnisus/data/auxiliares-bootstrap.zip" = "omnisus/data/auxiliares-bootstrap.zip"
|
|
95
|
+
|
|
96
|
+
[tool.ruff]
|
|
97
|
+
target-version = "py312"
|
|
98
|
+
line-length = 99
|
|
99
|
+
src = ["src", "tests"]
|
|
100
|
+
|
|
101
|
+
[tool.ruff.lint]
|
|
102
|
+
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM", "RUF", "ASYNC"]
|
|
103
|
+
ignore = ["E501"]
|
|
104
|
+
|
|
105
|
+
[tool.ruff.lint.flake8-bugbear]
|
|
106
|
+
extend-immutable-calls = ["typer.Argument", "typer.Option"]
|
|
107
|
+
|
|
108
|
+
[tool.ruff.lint.per-file-ignores]
|
|
109
|
+
# marimo displays final expressions and injects imported classes as cell arguments.
|
|
110
|
+
"notebooks/**/*.py" = ["B018", "N803", "N806"]
|
|
111
|
+
# Archived evidence scripts import the package under its old name, omnisus_db,
|
|
112
|
+
# which isort no longer knows as first-party. They stay byte-for-byte as recorded.
|
|
113
|
+
"evidence/**/*.py" = ["I001"]
|
|
114
|
+
|
|
115
|
+
[tool.ruff.format]
|
|
116
|
+
quote-style = "double"
|
|
117
|
+
# Ruff 0.16 includes Markdown by default. Keep the existing Python-only
|
|
118
|
+
# formatting scope; historical design documents contain illustrative snippets.
|
|
119
|
+
exclude = ["*.md"]
|
|
120
|
+
|
|
121
|
+
[tool.pytest.ini_options]
|
|
122
|
+
testpaths = ["tests"]
|
|
123
|
+
pythonpath = ["src"]
|
|
124
|
+
python_files = ["test_*.py", "bench_*.py"]
|
|
125
|
+
asyncio_mode = "auto"
|
|
126
|
+
markers = [
|
|
127
|
+
"rust_dbf: requires the optional native DBF extension",
|
|
128
|
+
"integration: tests that hit external resources or real lake",
|
|
129
|
+
"e2e: full-stack end-to-end tests (slow, manual/cron)",
|
|
130
|
+
"perf: performance benchmarks",
|
|
131
|
+
]
|
|
132
|
+
addopts = "-ra --strict-markers"
|
|
133
|
+
|
|
134
|
+
[tool.mypy]
|
|
135
|
+
python_version = "3.12"
|
|
136
|
+
strict = false
|
|
137
|
+
ignore_missing_imports = true
|