Skip to content

Commit

Permalink
Merge 5470b81 into 329add9
Browse files Browse the repository at this point in the history
  • Loading branch information
Lary15 authored Aug 23, 2021
2 parents 329add9 + 5470b81 commit 5996cc9
Show file tree
Hide file tree
Showing 12 changed files with 207 additions and 56 deletions.
13 changes: 5 additions & 8 deletions dodfminer/extract/polished/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def extract_multiple_acts(path, types, backend):
if os.path.isfile(path):
ContentExtractor.extract_text(path, single=True)
for type in types:
df = extract_single(path.replace('.pdf', '.txt'), type, backend=backend)
df, _= extract_single(path.replace('.pdf', '.txt'), type, backend=backend)
df.to_csv(os.path.join(os.path.dirname(path), type+'.csv'))
else:
ContentExtractor.extract_to_txt(path)
Expand Down Expand Up @@ -91,10 +91,7 @@ def extract_multiple(files, type, backend, txt_out=False, txt_path="./results"):
"""
res = []
for file in files:
res_obj = ActsExtractor.get_act_obj(type, file, backend)
print(res_obj._backend)
res_df = res_obj.data_frame
res_txt = res_obj.acts_str
res_df, res_txt = extract_single(file, type, backend)
if not res_df.empty:
res.append(res_df)
if txt_out:
Expand Down Expand Up @@ -122,16 +119,16 @@ def extract_single(file, type, backend):
backend (str): what backend will be used to extract Acts {regex, ner}
Returns:
A dataframe containing all instances of the desired act
including the texts found.
A tuple containing, respectively: a dataframe containing all instances of the desired act
including the texts found, and a list of the segmented text blocks, and .
"""
res_obj = ActsExtractor.get_act_obj(type, file, backend)
res_df = res_obj.data_frame
res_txt = res_obj.acts_str
res_df['text'] = res_txt

return res_df
return res_df, res_txt


def build_act_txt(acts, name, save_path="./results/"):
Expand Down
5 changes: 3 additions & 2 deletions dodfminer/extract/pure/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,14 @@ def extract_text(cls, file, single=False, block=False, is_json=True, sep=' ', no
drawboxes_text += (norm_text + sep)
else:
drawboxes_text += (text[4] + sep)

if block:
if not single:
return list_of_boxes
elif is_json:
cls._save_single_file(file, 'json', json.dumps(list_of_boxes))
return cls._save_single_file(file, 'json', json.dumps(list_of_boxes))
else:
cls._save_single_file(file, 'txt', drawboxes_text)
return cls._save_single_file(file, 'txt', drawboxes_text)

drawboxes_text = cls._normalize_text(drawboxes_text, norm)
return drawboxes_text if not single else cls._save_single_file(file, 'txt', drawboxes_text)
Expand Down
3 changes: 3 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'helpers'))
Empty file added tests/helpers/__init__.py
Empty file.
31 changes: 31 additions & 0 deletions tests/helpers/decorators.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import os
import sys
import shutil
import functools

def clean_extra_files(folder_path):
def _clean_extra_files(f):
@functools.wraps(f)
def wrapper(*args, **kwargs):
original_file_system_entries = os.listdir(folder_path)
f(*args, **kwargs)
final_file_system_entries = os.listdir(folder_path)

extra_file_system_entries= filter_extra_files(original_file_system_entries, final_file_system_entries)
for entry in extra_file_system_entries:
delete_file_or_folder(entry, folder_path)

return wrapper
return _clean_extra_files

def filter_extra_files(original, final):
is_not_original = lambda x : x not in original
return list(filter(is_not_original, final))

def delete_file_or_folder(entry, folder_path):
if os.path.isfile(os.path.join(folder_path, entry)):
os.remove(os.path.join(folder_path, entry))
else:
shutil.rmtree(os.path.join(folder_path, entry), ignore_errors=True)


45 changes: 40 additions & 5 deletions tests/support/dodf_pdfs/cessoes.csv
Original file line number Diff line number Diff line change
@@ -1,6 +1,41 @@
,nome,matricula,cargo_efetivo,classe,padrao,orgao_cedente,orgao_cessionario,onus,fundamento legal,processo_SEI,vigencia,matricula_SIAPE,cargo_orgao_cessionario,simbolo,hierarquia_lotacao
0,ARLETE OLIVEIRA SANTOS GONDAR,124.604-6,,,,,,ONUS FINANCEIRO: orgao cedente.,,00138-00007294/2019-45,,, com alicerce no art. 2o,,
1,ROBERT WAGNER DE SANTANA,1.430.783-9,,,,,,ONUS FINANCEIRO: orgao cedente.,,04019-00000669/2019-17.,,, com alicerce no art. 2o,,
,nome,matricula,cargo_efetivo,classe,padrao,orgao_cedente,orgao_cessionario,onus,fundamento legal,processo_SEI,vigencia,matricula_SIAPE,cargo_orgao_cessionario,simbolo,hierarquia_lotacao,text
0,ARLETE OLIVEIRA SANTOS GONDAR,124.604-6,,,,,,ONUS FINANCEIRO: orgao cedente.,,00138-00007294/2019-45,,, com alicerce no art. 2o,,,"Processo: 00138-00007294/2019-45 Interessada: ARLETE OLIVEIRA SANTOS GONDAR Assunto:
CESSAO DE SERVIDOR.
AUTORIZO, com alicerce no art. 2o, inciso III, da Portaria no 42, de 28/01/2019, c/c o art. 20, do
Decreto no 39.009, de 26/04/2018, cessao da servidora ARLETE OLIVEIRA SANTOS GONDAR,
matricula no 124.604-6, Analista em Politicas Publicas e Gestao Governamental, da Secretaria de
Desenvolvimento Economico do Distrito Federal - SDE/DF, para ter exercicio no Cargo de Natureza
Especial, Simbolo CNE-07, de Chefe, da Assessoria Tecnica, do Gabinete, da Administracao Regional
da Ceilandia, na forma que se segue: I - ONUS FINANCEIRO: orgao cedente. II - INICIO DO
AFASTAMENTO: a contar do oficio de apresentacao do servidor ao cessionario. III - VIGENCIA: ate
a exoneracao do cargo comissionado ou revogacao deste ato. IV - FUNDAMENTO LEGAL: art. 152,
I, ""a"", art. 153, I e II, art. 154, paragrafo unico, II, da Lei Complementar no 840, de 23/12/2011, e
arts. 2o, 5o, 7o, 10, 19 e 21, 4o do Decreto no 39.009/2018. V - "
1,ROBERT WAGNER DE SANTANA,1.430.783-9,,,,,,ONUS FINANCEIRO: orgao cedente.,,04019-00000669/2019-17.,,, com alicerce no art. 2o,,,"Processo: 04019-00000669/2019-17. Interessado: ROBERT WAGNER DE SANTANA. Assunto: CESSAO
DE SERVIDOR.
AUTORIZO, com alicerce no art. 2o, inciso III, da Portaria no 42, de 28/01/2019, c/c o art. 20, do Decreto
no 39.009, de 26/04/2018, a cessao do servidor ROBERT WAGNER DE SANTANA, matricula no
1.430.783-9, Analista em Politicas Publicas e Gestao Governamental, da Secretaria de Estado de
Desenvolvimento Economico do Distrito Federal, para ter exercicio no Cargo de Natureza Especial,
Simbolo CNE-04, de Ouvidor, da Junta Comercial, Industrial e Servicos do Distrito Federal, na forma que
se segue: I - ONUS FINANCEIRO: orgao cedente. II - INICIO DO AFASTAMENTO: a contar do oficio
de apresentacao do servidor ao cessionario. III - VIGENCIA: ate a exoneracao do cargo comissionado ou
revogacao deste ato. IV - FUNDAMENTO LEGAL: art. 152, I, ""a"", art. 153, I e II, art. 154, paragrafo
unico, II, da Lei Complementar no 840, de 23/12/2011, e arts. 2o, 5o, 7o, 10, 19 e 21, 4o do Decreto no
39.009/2018. V - "
2,JULIO CESAR MENEGOTTO,74.682-7,,,,,,"onus para o orgao
de origem, conforme Decisao da Diretoria Executiva, exarada pela Sessao no 4.",,00112-00037276/2019-21.,,, usando das atribuicoes conferidas pelo Art. 25,,
3,SADI PERES MARTINS,79.206-3,,,,,,"ONUS FINANCEIRO: orgao cessionario, com ressarcimento mensal a origem.",,-,,, resolve: SUSPENDER,,
de origem, conforme Decisao da Diretoria Executiva, exarada pela Sessao no 4.",,00112-00037276/2019-21.,,, usando das atribuicoes conferidas pelo Art. 25,,,"Processo: 00112-00037276/2019-21. Interessado: JULIO CESAR MENEGOTTO. Assunto: CESSAO DE
EMPREGADO.
AUTORIZO, usando das atribuicoes conferidas pelo Art. 25, do Estatuto Social da Companhia
Urbanizadora da Nova Capital do Brasil, com fulcro no art. 26, do Decreto n.o 39.009, de 26 de abril de
2018, na forma do Parecer Juridico SEI-GDF n.o 405/2018 - PGDF/GAB/PRCON, c/c o Parecer no
1053/2017-PRCON/PGDF (SEI no 7116843), bem como na Lei no 2.469, de 21 de outubro de 1999, a
cessao do empregado publico JULIO CESAR MENEGOTTO, matricula n.o 74.682-7, Tecnico Agricola, da
Companhia Urbanizadora da Nova Capital do Brasil, para exercer a Funcao de Confianca, de Assistente
Tecnico, Simbolo TC-FC-03, desse egregio Tribunal de Contas do Distrito Federal, com onus para o orgao
de origem, conforme Decisao da Diretoria Executiva, exarada pela Sessao no 4.474a, de 26/12/2019 (SEI
no 33322114) e o Oficio no 458/19-P/AA, de 12 de dezembro de 2019 (SEI no 32762098). A cessao
termina com a exoneracao do cargo para o qual o empregado foi cedido ou com a revogacao do ato pela
"
3,SADI PERES MARTINS,79.206-3,,,,,,"ONUS FINANCEIRO: orgao cessionario, com ressarcimento mensal a origem.",,-,,, resolve: SUSPENDER,,,"Processo SEI- GDF no 00040-00000957/2020-69, resolve: SUSPENDER, a contar de 14 de janeiro de 2020, por necessidade de servico, as ferias do servidor SADI PERES MARTINS, matricula no 79.206-3, Coordenador, da Coordenacao de Captacao de Recursos Transferencias Voluntarias, da Subsecretaria de Captacao de Recursos, da Secretaria Adjunta de Planejamento e Orcamento, da Secretaria de Estado de Economia do Distrito Federal, marcadas para o periodo de 06 a 24 de janeiro de 2020, restando-lhe, deste periodo, 11 (onze) dias de ferias, assegurando ao servidor a fruicao em periodo a ser marcado oportunamente. ANDRE CLEMENTE LARA DE OLIVEIRA SECRETARIA DE ESTADO DE ECONOMIA SECRETARIA EXECUTIVA DE GESTAO ADMINISTRATIVA DESPACHO DO SECRETARIO EXECUTIVO
Em 24 de janeiro de 2020 Processo: 00002-00000265/2020-11. Interessada: RAQUEL LOPES JORGE. Assunto: CESSAO DE S E RV I D O R A AUTORIZO, com alicerce no art. 2o, inciso III, da Portaria no 42, de 28/01/2019, c/c o art. 20, do Decreto no 39.009, de 26/04/2018, a cessao de RAQUEL LOPES JORGE, matricula no 245.196-4, Agente Socioeducativa, da Secretaria de Estado de Justica e Cidadania do Distrito Federal, para ter exercicio no Cargo em Comissao, Codigo CJ-02, de Secretaria-Executiva, do Tribunal Regional Federal da 1a Regiao, na forma que se segue: I - ONUS FINANCEIRO: orgao cessionario, com ressarcimento mensal a origem. II - INICIO DO AFASTAMENTO: a contar do oficio de apresentacao da servidora ao cessionario. III - VIGENCIA: ate a exoneracao do cargo comissionado ou revogacao deste ato. IV - FUNDAMENTO LEGAL: art. 26, II, art. 27, I, art. 152, I, ""b"", art. 153, I e II e art. 154, Paragrafo Unico, I, da Lei Complementar no 840, de 23/12/2011, e nos arts. 2o, 5o, 7o, 9o, I, 18 e 21, 4o, do Decreto no 39.009/2018. V - "
32 changes: 27 additions & 5 deletions tests/support/dodf_pdfs/sem_efeito_aposentadoria.csv
Original file line number Diff line number Diff line change
@@ -1,8 +1,30 @@
,tipo_ato,tipo_documento,numero_documento,data_documento,numero_dodf,data_dodf,pagina_dodf,nome,matricula,matricula_SIAPE,cargo_efetivo,classe,padrao,quadro,orgao,processo_SEI,tipo_edicao
0,Atos tornados sem efeito - aposentadoria,,,,137,19/07/2017,. 42, DELFINO BERNARDES RABELO,100.652-5. ,,,,,,,0070-001865/2016,normal
,tipo_ato,tipo_documento,numero_documento,data_documento,numero_dodf,data_dodf,pagina_dodf,nome,matricula,matricula_SIAPE,cargo_efetivo,classe,padrao,quadro,orgao,processo_SEI,tipo_edicao,text
0,Atos tornados sem efeito - aposentadoria,,,,137,19/07/2017,. 42, DELFINO BERNARDES RABELO,100.652-5. ,,,,,,,0070-001865/2016,normal,"TORNAR SEM EFEITO, no DODF n 137, de 19/07/2017, pag. 42, o ato que retificou a averbacao
de tempo de servico de DELFINO BERNARDES RABELO, matricula no 100.652-5. Processo SEI No
0070-001865/2016.
"
1,Atos tornados sem efeito - aposentadoria,,,05 de fevereiro de 1990,248,"29 de
dezembro de 2017", 39.,"MARCO
ANTONIO CATTANI FRANCA","129661-2,",, 129.661-2,,,,,271.000.680/2017,normal
ANTONIO CATTANI FRANCA","129661-2,",, 129.661-2,,,,,271.000.680/2017,normal,"TORNAR SEM EFEITO A AVERBACAO DE TEMPO DE SERVICO do servidor MARCO
ANTONIO CATTANI FRANCA, 129661-2, 129.661-2, Medico Cirurgia Geral, Secretaria de Estado
de Saude do DF, 1103 dias, conforme Certidao de tempo de servico expedida pelo Ministerio da
Defesa, nos periodos de 1o de janeiro de 1987 a 05 de fevereiro de 1990, contados somente para fins
de aposentadoria, conforme processo no 271.000.680/2017, publicada no DODF No 248 de 29 de
dezembro de 2017, pagina 39.
"
2,Atos tornados sem efeito - aposentadoria,Ordem de Servico,,03 de dezembro de 2019,04,04 de dezembro de 2019,," FRANCINEIDE
DANIEL DE LIMA",66.260-7,, no Cargo de Professor de Educacao Basica,,,,,00040-00024368/2019-32,normal
3,Atos tornados sem efeito - aposentadoria,,,26 de fevereiro de 2019,42,28 de fevereiro 2019, 29,GENI TEREZINHA SPIES DA SILVEIRA,30735-1,, totalizando 731 dias,,,,,00401.00003406/2019-59,normal
DANIEL DE LIMA",66.260-7,, no Cargo de Professor de Educacao Basica,,,,,00040-00024368/2019-32,normal,"TORNAR SEM EFEITO na Ordem de Servico no 306 de 03 de dezembro de 2019, publicada no
Diario Oficial do Distrito Federal, de 04 de dezembro de 2019, o ato que aposentou FRANCINEIDE
DANIEL DE LIMA, matricula 66.260-7, no Cargo de Professor de Educacao Basica, Padrao 25, Etapa
IV, do Quadro de Pessoal do Distrito Federal. Processo 00040-00024368/2019-32.
"
3,Atos tornados sem efeito - aposentadoria,,,26 de fevereiro de 2019,42,28 de fevereiro 2019, 29,GENI TEREZINHA SPIES DA SILVEIRA,30735-1,, totalizando 731 dias,,,,,00401.00003406/2019-59,normal,"TORNAR SEM EFEITO a Ordem de
Servico no 35, de 26 de fevereiro de 2019, publicada no DODF no 42, de 28 de fevereiro 2019,
pagina 29, que averbou o tempo de servico em funcao de trabalho prestado a Secretaria de Estado
de Educacao do Distrito Federal, pela servidora GENI TEREZINHA SPIES DA SILVEIRA, matricula
30735-1, totalizando 731 dias, relativos ao periodo de 04/05/1999 a 03/05/2001, contados para fins de
anuenios, aposentadoria e disponibilidade, nos termos do inciso II, do artigo 166, da Lei
Complementar no 840/2011 c/c a alinea ""a"", do item 17, do Manual de Normas e Procedimentos
Administrativos do Tribunal de Contas do Distrito Federal, conforme exarado no processo SEI no
00401.00003406/2019-59.
"
Binary file added tests/support/polished/DODF 001 02-01-2019.pdf
Binary file not shown.
File renamed without changes.
83 changes: 65 additions & 18 deletions tests/test_extract_polished_helper.py
Original file line number Diff line number Diff line change
@@ -1,40 +1,87 @@
import os
import pytest

import pandas as pd
from pandas.core.frame import DataFrame

from dodfminer.extract.pure.core import ContentExtractor
from dodfminer.extract.polished.acts.nomeacao import NomeacaoComissionados
from dodfminer.extract.polished.helper import xml_multiple, get_files_path, print_dataframe, build_act_txt, extract_single, extract_multiple, extract_multiple_acts

from decorators import clean_extra_files

FOLDER_PATH = f"{os.path.dirname(__file__)}/support/polished"

###################### FIXTURES ######################

@pytest.fixture
def folder_path():
return FOLDER_PATH

@pytest.fixture
def file_path(folder_path):
def _file_path(extension="pdf"):
return f"{folder_path}/DODF 001 01-01-2019 EDICAO ESPECIAL.{extension}"
return _file_path

from dodfminer.extract.polished.helper import xml_multiple, get_files_path, print_dataframe, build_act_txt

def test_helper_xml_multiple():
dir = ""+os.path.dirname(__file__)+"/support/support_supporter"
###################### TESTS ######################
@clean_extra_files(FOLDER_PATH)
def test_helper_xml_multiple(folder_path):
try:
xml_multiple(dir, "regex")
assert "1_1.1.2019.xml" in os.listdir(dir)
os.remove(os.path.join(dir, "1_1.1.2019.xml"))
xml_multiple(folder_path, "regex")
xml_files_list = list(filter(lambda x : ".xml" in x, os.listdir(folder_path)))

assert "1_1.1.2019.xml" in xml_files_list
except:
assert False

# def test_helper_extract_multiple_acts():
# extract_multiple_acts(path, types, backend)
@clean_extra_files(FOLDER_PATH)
def test_helper_extract_multiple(folder_path):
ContentExtractor.extract_to_txt(folder_path)
files = get_files_path(f"{folder_path}/results/txt", 'txt')
df = extract_multiple(files, "nomeacao", "regex", txt_path="./results")

assert len(df) > 0

@clean_extra_files(FOLDER_PATH)
def test_helper_extract_single(file_path):
ContentExtractor.extract_text(file_path(extension="pdf"), single=True)
df, texts = extract_single(file_path(extension="txt"), "nomeacao", "regex")

# def test_helper_extract_multiple():
# extract_multiple(files, type, backend, txt_out=False, txt_path="./results")
assert type(df) is DataFrame
assert type (texts) is list

# def test_helper_extract_single():
# extract_single(file, type, backend)
assert len(df) > 0
assert len(texts) > 0

@clean_extra_files(FOLDER_PATH)
def test_helper_extract_multiple_acts(folder_path, file_path):
extract_multiple_acts(folder_path, ["nomeacao"], "regex")
multiple_files_df = pd.read_csv(f"{folder_path}/nomeacao.csv")
extract_multiple_acts(file_path(extension="pdf"), ["nomeacao"], "regex")
single_file_df = pd.read_csv(f"{folder_path}/nomeacao.csv")

assert len(multiple_files_df) > 0
assert len(single_file_df) > 0
assert len(multiple_files_df) > len(single_file_df)

@clean_extra_files(FOLDER_PATH)
def test_helper_build_act_txt():
dir = ""+os.path.dirname(__file__)+"/support/"
build_act_txt(["aposentadoria"], "crioutxt", save_path=dir)

assert "crioutxt.txt" in os.listdir(dir)

os.remove(os.path.join(dir, "crioutxt.txt"))

# def test_helper_print_dataframe():
# df = print_dataframe(pd.DataFrame())
# assert isinstance(df, pd.io.formats.style.Styler)

def test_helper_get_files_path():
dir = ""+os.path.dirname(__file__)+"/support/support_supporter/"
files = get_files_path(dir, "txt")
assert files == [""+os.path.dirname(__file__)+'/support/support_supporter/valid.txt']
files = get_files_path(dir, "pdf")
assert files == [""+os.path.dirname(__file__)+'/support/support_supporter/DODF 001 01-01-2019 EDICAO ESPECIAL.pdf']
def test_helper_get_files_path(folder_path):
files = get_files_path(folder_path, "txt")
assert len(files) > 0
files = get_files_path(folder_path, "pdf")
assert len(files) > 0

Loading

0 comments on commit 5996cc9

Please sign in to comment.