lbxtoolkit 2.0.2__tar.gz → 2.0.3__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.
- {lbxtoolkit-2.0.2/lbxtoolkit.egg-info → lbxtoolkit-2.0.3}/PKG-INFO +20 -3
- lbxtoolkit-2.0.2/PKG-INFO → lbxtoolkit-2.0.3/README.md +18 -24
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/lbxtoolkit/__init__.py +80 -0
- lbxtoolkit-2.0.2/README.md → lbxtoolkit-2.0.3/lbxtoolkit.egg-info/PKG-INFO +41 -2
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/lbxtoolkit.egg-info/requires.txt +1 -0
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/setup.py +3 -2
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/LICENSE +0 -0
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/lbxtoolkit.egg-info/SOURCES.txt +0 -0
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/lbxtoolkit.egg-info/dependency_links.txt +0 -0
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/lbxtoolkit.egg-info/top_level.txt +0 -0
- {lbxtoolkit-2.0.2 → lbxtoolkit-2.0.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: lbxtoolkit
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.3
|
|
4
4
|
Summary: Biblioteca de ferramentas LBX S/A
|
|
5
5
|
Author: Cristiano P. Ferrari
|
|
6
6
|
Author-email: boxferrari@gmail.com
|
|
@@ -19,6 +19,7 @@ Requires-Dist: requests
|
|
|
19
19
|
Requires-Dist: selenium
|
|
20
20
|
Requires-Dist: webdriver-manager
|
|
21
21
|
Requires-Dist: validators
|
|
22
|
+
Requires-Dist: pygetwindow
|
|
22
23
|
|
|
23
24
|
# Biblioteca de ferramentas LBX S/A
|
|
24
25
|
|
|
@@ -43,15 +44,21 @@ Esta biblioteca possui ferramentas de uso recorrente para interação com banco
|
|
|
43
44
|
- _.auth_base_: Autentica (HTTPBasicAuth) sessão na API
|
|
44
45
|
- _.auth_bearer_: Autentica sessão na API pelos métodos: OAuth, JWT, Bearer
|
|
45
46
|
- _.endpoint_json_: Realizad chama ao endpoint. Payload em formato `json` opcional.
|
|
47
|
+
- _.trata_erro_sienge_: Retorna a mensagem de erro do Sienge caso código de retorno seja diferente de 200.
|
|
46
48
|
- _.close_: Encerra a sessão autenticada
|
|
47
49
|
|
|
48
50
|
**lbx_logger**: Manipula e formata as mensagens de saída do script para direcioná-las para tela (stdout) e/ou arquivo de log
|
|
49
51
|
- _.add_: Adiciona a mensagem a um _buffer_ sem exibir, acumulando até a próxima chamada em algum dos níveis abaixo.
|
|
50
52
|
- _.print_: Contorna o manipulador de log e imprime diretamente na tela (stdout), sem formatar a mensagem nem registrar no arquivo
|
|
51
|
-
- _.debug, .info, .aviso, .erro, .critico_:
|
|
52
|
-
Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
53
|
+
- _.debug, .info, .aviso, .erro, .critico_: Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
53
54
|
- _.stop_logging_: Interrompe a manipulação das saídas pelo logger e restaura as saídas padrão (stdout/stderr) para a tela
|
|
54
55
|
|
|
56
|
+
**misc**: Classe de miscelâneas/diversos
|
|
57
|
+
- _.seleciona_arquivo_: Abre um picker do sistema operacionar para selecionar um *arquivo* e retorna seu path
|
|
58
|
+
- _.seleciona_dir_: Abre um picker do sistema operacionar para selecionar um *diretório* e retorna seu path
|
|
59
|
+
- _.normaliza_: Limpa caracteres especiais e espaços de strings e retorna tudo em minúsculo
|
|
60
|
+
- _.get_cmd_window_: Captura a referencia da janela atual (cmd.exe) para retornar o foco à ela depois de chamar os pickers
|
|
61
|
+
- _.maximize_console_: Maxima a janela do console (cmd.exe)
|
|
55
62
|
|
|
56
63
|
## Instalação e uso:
|
|
57
64
|
|
|
@@ -412,4 +419,14 @@ log.erro('Essa é uma mensagem de erro e abortará a execução do script', exit
|
|
|
412
419
|
log.info('Essa mensagem não será exibida pois o script foi abortado na mensagem anterior')
|
|
413
420
|
```
|
|
414
421
|
|
|
422
|
+
#### Classe **misc**
|
|
415
423
|
|
|
424
|
+
Classe que reune pequenas funções uteis para agilizar tarefas comuns.
|
|
425
|
+
|
|
426
|
+
Sintaxe e exemplos de uso. Parametros omissos assume os valores padrão indicados abaixo:
|
|
427
|
+
|
|
428
|
+
- `Arquivo = seleciona_arquivo(DirBase, TiposArquivo=[('Todos os arquivos', '*.*')], Titulo='Selecionar arquivo')`
|
|
429
|
+
- `Diretório = seleciona_dir(DirBase=Path(r'./'), Titulo='Selecionar diretório'):`
|
|
430
|
+
- `NomeLimpo = normaliza('String # SEM Noção!') #>>> string_sem_nocao`
|
|
431
|
+
- `cmd_window = get_cmd_window()`
|
|
432
|
+
- `maximize_console()`
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: lbxtoolkit
|
|
3
|
-
Version: 2.0.2
|
|
4
|
-
Summary: Biblioteca de ferramentas LBX S/A
|
|
5
|
-
Author: Cristiano P. Ferrari
|
|
6
|
-
Author-email: boxferrari@gmail.com
|
|
7
|
-
License: MIT License
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
-
Classifier: Operating System :: OS Independent
|
|
11
|
-
Requires-Python: >=3.6
|
|
12
|
-
Description-Content-Type: text/markdown
|
|
13
|
-
License-File: LICENSE
|
|
14
|
-
Requires-Dist: psycopg2
|
|
15
|
-
Requires-Dist: pandas
|
|
16
|
-
Requires-Dist: numpy
|
|
17
|
-
Requires-Dist: msal
|
|
18
|
-
Requires-Dist: requests
|
|
19
|
-
Requires-Dist: selenium
|
|
20
|
-
Requires-Dist: webdriver-manager
|
|
21
|
-
Requires-Dist: validators
|
|
22
|
-
|
|
23
1
|
# Biblioteca de ferramentas LBX S/A
|
|
24
2
|
|
|
25
3
|
Esta biblioteca possui ferramentas de uso recorrente para interação com banco de dados e API, além de autenticação/validação de credenciais de usuário no Microsoft Entra ID
|
|
@@ -43,15 +21,21 @@ Esta biblioteca possui ferramentas de uso recorrente para interação com banco
|
|
|
43
21
|
- _.auth_base_: Autentica (HTTPBasicAuth) sessão na API
|
|
44
22
|
- _.auth_bearer_: Autentica sessão na API pelos métodos: OAuth, JWT, Bearer
|
|
45
23
|
- _.endpoint_json_: Realizad chama ao endpoint. Payload em formato `json` opcional.
|
|
24
|
+
- _.trata_erro_sienge_: Retorna a mensagem de erro do Sienge caso código de retorno seja diferente de 200.
|
|
46
25
|
- _.close_: Encerra a sessão autenticada
|
|
47
26
|
|
|
48
27
|
**lbx_logger**: Manipula e formata as mensagens de saída do script para direcioná-las para tela (stdout) e/ou arquivo de log
|
|
49
28
|
- _.add_: Adiciona a mensagem a um _buffer_ sem exibir, acumulando até a próxima chamada em algum dos níveis abaixo.
|
|
50
29
|
- _.print_: Contorna o manipulador de log e imprime diretamente na tela (stdout), sem formatar a mensagem nem registrar no arquivo
|
|
51
|
-
- _.debug, .info, .aviso, .erro, .critico_:
|
|
52
|
-
Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
30
|
+
- _.debug, .info, .aviso, .erro, .critico_: Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
53
31
|
- _.stop_logging_: Interrompe a manipulação das saídas pelo logger e restaura as saídas padrão (stdout/stderr) para a tela
|
|
54
32
|
|
|
33
|
+
**misc**: Classe de miscelâneas/diversos
|
|
34
|
+
- _.seleciona_arquivo_: Abre um picker do sistema operacionar para selecionar um *arquivo* e retorna seu path
|
|
35
|
+
- _.seleciona_dir_: Abre um picker do sistema operacionar para selecionar um *diretório* e retorna seu path
|
|
36
|
+
- _.normaliza_: Limpa caracteres especiais e espaços de strings e retorna tudo em minúsculo
|
|
37
|
+
- _.get_cmd_window_: Captura a referencia da janela atual (cmd.exe) para retornar o foco à ela depois de chamar os pickers
|
|
38
|
+
- _.maximize_console_: Maxima a janela do console (cmd.exe)
|
|
55
39
|
|
|
56
40
|
## Instalação e uso:
|
|
57
41
|
|
|
@@ -412,4 +396,14 @@ log.erro('Essa é uma mensagem de erro e abortará a execução do script', exit
|
|
|
412
396
|
log.info('Essa mensagem não será exibida pois o script foi abortado na mensagem anterior')
|
|
413
397
|
```
|
|
414
398
|
|
|
399
|
+
#### Classe **misc**
|
|
400
|
+
|
|
401
|
+
Classe que reune pequenas funções uteis para agilizar tarefas comuns.
|
|
402
|
+
|
|
403
|
+
Sintaxe e exemplos de uso. Parametros omissos assume os valores padrão indicados abaixo:
|
|
415
404
|
|
|
405
|
+
- `Arquivo = seleciona_arquivo(DirBase, TiposArquivo=[('Todos os arquivos', '*.*')], Titulo='Selecionar arquivo')`
|
|
406
|
+
- `Diretório = seleciona_dir(DirBase=Path(r'./'), Titulo='Selecionar diretório'):`
|
|
407
|
+
- `NomeLimpo = normaliza('String # SEM Noção!') #>>> string_sem_nocao`
|
|
408
|
+
- `cmd_window = get_cmd_window()`
|
|
409
|
+
- `maximize_console()`
|
|
@@ -18,6 +18,13 @@ import numpy as np
|
|
|
18
18
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
19
19
|
import urllib.parse as urlparse
|
|
20
20
|
import validators
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
import tkinter as tk
|
|
23
|
+
from tkinter import filedialog
|
|
24
|
+
import re
|
|
25
|
+
from unicodedata import normalize
|
|
26
|
+
import pygetwindow as gw
|
|
27
|
+
import ctypes
|
|
21
28
|
|
|
22
29
|
locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
|
|
23
30
|
|
|
@@ -535,6 +542,25 @@ class api_rest: # Classe para interação com APIs Rest (especialmente Sienge)
|
|
|
535
542
|
except Exception as Err:
|
|
536
543
|
self.logger.critico(f'Falha na chamada do endpoint: {Err}\nEndpoint: {self.EndPoint}\nCodigo retorno: {self.RetEndPoint.status_code}\nResposta:{self.RetEndPoint.text}', exit=1)
|
|
537
544
|
|
|
545
|
+
def trata_erro_sienge(CodRet, Retorno):
|
|
546
|
+
if not 200 <= CodRet <= 299:
|
|
547
|
+
try:
|
|
548
|
+
DicRetorno = eval(Retorno.replace('null','None').replace(r'\n\t',' '))
|
|
549
|
+
if 'clientMessage' in DicRetorno:
|
|
550
|
+
MsgErro = DicRetorno['clientMessage']
|
|
551
|
+
elif 'developerMessage' in DicRetorno:
|
|
552
|
+
MsgErro = DicRetorno['developerMessage']
|
|
553
|
+
elif 'message' in DicRetorno:
|
|
554
|
+
MsgErro = DicRetorno['message']
|
|
555
|
+
else:
|
|
556
|
+
MsgErro = Retorno
|
|
557
|
+
except:
|
|
558
|
+
MsgErro = Retorno.replace(r'\n\t',' ')
|
|
559
|
+
finally:
|
|
560
|
+
return MsgErro
|
|
561
|
+
else:
|
|
562
|
+
return Retorno
|
|
563
|
+
|
|
538
564
|
def close(self): # Encerra a cessão
|
|
539
565
|
self.Sessao.close()
|
|
540
566
|
|
|
@@ -666,3 +692,57 @@ class lbx_logger: # Classe para gerenciar a saída para log
|
|
|
666
692
|
for handler in handlers:
|
|
667
693
|
handler.close()
|
|
668
694
|
self.logger.removeHandler(handler)
|
|
695
|
+
|
|
696
|
+
class misc: # Classe de miscelâneas
|
|
697
|
+
def __init__(self):
|
|
698
|
+
return None
|
|
699
|
+
|
|
700
|
+
# Picker para selecionar arquivo
|
|
701
|
+
def seleciona_arquivo(DirBase, TiposArquivo=[('Todos os arquivos', '*.*')], Titulo='Selecionar arquivo'):
|
|
702
|
+
root = tk.Tk()
|
|
703
|
+
root.withdraw() # Esconde a janela principal do Tkinter
|
|
704
|
+
Arquivo = filedialog.askopenfilename(initialdir=DirBase, filetypes=TiposArquivo, title=Titulo)
|
|
705
|
+
Arquivo = Path(Arquivo)
|
|
706
|
+
root.destroy()
|
|
707
|
+
return Arquivo
|
|
708
|
+
|
|
709
|
+
# Picker para selecionar diretório
|
|
710
|
+
def seleciona_dir(DirBase=Path(r'./'), Titulo='Selecionar diretório'):
|
|
711
|
+
root = tk.Tk() # objeto picker (Tkinter)para selecionar arquivos e diretórios
|
|
712
|
+
root.withdraw() # Esconde a janela principal do Tkinter
|
|
713
|
+
Diretorio = filedialog.askdirectory(initialdir=DirBase, title=Titulo)
|
|
714
|
+
Diretorio = Path(Diretorio)
|
|
715
|
+
root.destroy()
|
|
716
|
+
return Diretorio
|
|
717
|
+
|
|
718
|
+
# Limpa e padroniza nomes
|
|
719
|
+
def normaliza(Original):
|
|
720
|
+
Lixo = r'/\\?%§ªº°`´^~*:|"<>!@#$%¨&*()_+=-[]{}"\' '
|
|
721
|
+
Normalizar = normalize('NFKD', Original).encode('ASCII', 'ignore').decode('ASCII')
|
|
722
|
+
RemoverLixo = [c if c not in Lixo else '_' for c in Normalizar]
|
|
723
|
+
Limpo = "".join(RemoverLixo)
|
|
724
|
+
Limpo = re.sub(r'\.(?=.*\.)', '_', Limpo) # troca todos os pontos por underline
|
|
725
|
+
Limpo = re.sub(r'_+', '_', Limpo) # limpa as reptições do underline
|
|
726
|
+
return Limpo.lower()
|
|
727
|
+
|
|
728
|
+
# Captura a referencia da janela atual para retornar o foco à ela depois de chamar os pickers
|
|
729
|
+
def get_cmd_window():
|
|
730
|
+
pid = os.getpid()
|
|
731
|
+
windows = gw.getWindowsWithTitle("")
|
|
732
|
+
for window in windows:
|
|
733
|
+
if window.title and window.visible and window.topleft:
|
|
734
|
+
return window
|
|
735
|
+
return None
|
|
736
|
+
|
|
737
|
+
def maximize_console():
|
|
738
|
+
# Ajustar o buffer de console
|
|
739
|
+
# os.system('mode con: cols=500 lines=100')
|
|
740
|
+
|
|
741
|
+
# Obter o handle da janela do console
|
|
742
|
+
kernel32 = ctypes.WinDLL('kernel32')
|
|
743
|
+
user32 = ctypes.WinDLL('user32')
|
|
744
|
+
hWnd = kernel32.GetConsoleWindow()
|
|
745
|
+
|
|
746
|
+
if hWnd:
|
|
747
|
+
# Definir as dimensões da tela
|
|
748
|
+
user32.ShowWindow(hWnd, 3) # 3 = SW_MAXIMIZE
|
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: lbxtoolkit
|
|
3
|
+
Version: 2.0.3
|
|
4
|
+
Summary: Biblioteca de ferramentas LBX S/A
|
|
5
|
+
Author: Cristiano P. Ferrari
|
|
6
|
+
Author-email: boxferrari@gmail.com
|
|
7
|
+
License: MIT License
|
|
8
|
+
Classifier: Programming Language :: Python :: 3
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Requires-Python: >=3.6
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: psycopg2
|
|
15
|
+
Requires-Dist: pandas
|
|
16
|
+
Requires-Dist: numpy
|
|
17
|
+
Requires-Dist: msal
|
|
18
|
+
Requires-Dist: requests
|
|
19
|
+
Requires-Dist: selenium
|
|
20
|
+
Requires-Dist: webdriver-manager
|
|
21
|
+
Requires-Dist: validators
|
|
22
|
+
Requires-Dist: pygetwindow
|
|
23
|
+
|
|
1
24
|
# Biblioteca de ferramentas LBX S/A
|
|
2
25
|
|
|
3
26
|
Esta biblioteca possui ferramentas de uso recorrente para interação com banco de dados e API, além de autenticação/validação de credenciais de usuário no Microsoft Entra ID
|
|
@@ -21,15 +44,21 @@ Esta biblioteca possui ferramentas de uso recorrente para interação com banco
|
|
|
21
44
|
- _.auth_base_: Autentica (HTTPBasicAuth) sessão na API
|
|
22
45
|
- _.auth_bearer_: Autentica sessão na API pelos métodos: OAuth, JWT, Bearer
|
|
23
46
|
- _.endpoint_json_: Realizad chama ao endpoint. Payload em formato `json` opcional.
|
|
47
|
+
- _.trata_erro_sienge_: Retorna a mensagem de erro do Sienge caso código de retorno seja diferente de 200.
|
|
24
48
|
- _.close_: Encerra a sessão autenticada
|
|
25
49
|
|
|
26
50
|
**lbx_logger**: Manipula e formata as mensagens de saída do script para direcioná-las para tela (stdout) e/ou arquivo de log
|
|
27
51
|
- _.add_: Adiciona a mensagem a um _buffer_ sem exibir, acumulando até a próxima chamada em algum dos níveis abaixo.
|
|
28
52
|
- _.print_: Contorna o manipulador de log e imprime diretamente na tela (stdout), sem formatar a mensagem nem registrar no arquivo
|
|
29
|
-
- _.debug, .info, .aviso, .erro, .critico_:
|
|
30
|
-
Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
53
|
+
- _.debug, .info, .aviso, .erro, .critico_: Classifica as mensagens por nível de severidade/relevância e rediciona a saída (arquivo, tela, tela+arquivo) conforme a configuração do nível
|
|
31
54
|
- _.stop_logging_: Interrompe a manipulação das saídas pelo logger e restaura as saídas padrão (stdout/stderr) para a tela
|
|
32
55
|
|
|
56
|
+
**misc**: Classe de miscelâneas/diversos
|
|
57
|
+
- _.seleciona_arquivo_: Abre um picker do sistema operacionar para selecionar um *arquivo* e retorna seu path
|
|
58
|
+
- _.seleciona_dir_: Abre um picker do sistema operacionar para selecionar um *diretório* e retorna seu path
|
|
59
|
+
- _.normaliza_: Limpa caracteres especiais e espaços de strings e retorna tudo em minúsculo
|
|
60
|
+
- _.get_cmd_window_: Captura a referencia da janela atual (cmd.exe) para retornar o foco à ela depois de chamar os pickers
|
|
61
|
+
- _.maximize_console_: Maxima a janela do console (cmd.exe)
|
|
33
62
|
|
|
34
63
|
## Instalação e uso:
|
|
35
64
|
|
|
@@ -390,4 +419,14 @@ log.erro('Essa é uma mensagem de erro e abortará a execução do script', exit
|
|
|
390
419
|
log.info('Essa mensagem não será exibida pois o script foi abortado na mensagem anterior')
|
|
391
420
|
```
|
|
392
421
|
|
|
422
|
+
#### Classe **misc**
|
|
423
|
+
|
|
424
|
+
Classe que reune pequenas funções uteis para agilizar tarefas comuns.
|
|
425
|
+
|
|
426
|
+
Sintaxe e exemplos de uso. Parametros omissos assume os valores padrão indicados abaixo:
|
|
393
427
|
|
|
428
|
+
- `Arquivo = seleciona_arquivo(DirBase, TiposArquivo=[('Todos os arquivos', '*.*')], Titulo='Selecionar arquivo')`
|
|
429
|
+
- `Diretório = seleciona_dir(DirBase=Path(r'./'), Titulo='Selecionar diretório'):`
|
|
430
|
+
- `NomeLimpo = normaliza('String # SEM Noção!') #>>> string_sem_nocao`
|
|
431
|
+
- `cmd_window = get_cmd_window()`
|
|
432
|
+
- `maximize_console()`
|
|
@@ -8,7 +8,7 @@ with open("README.md", "r", encoding='utf-8') as fh:
|
|
|
8
8
|
|
|
9
9
|
setup(
|
|
10
10
|
name='lbxtoolkit',
|
|
11
|
-
version='2.0.
|
|
11
|
+
version='2.0.3',
|
|
12
12
|
packages=find_packages(),
|
|
13
13
|
install_requires=[
|
|
14
14
|
'psycopg2',
|
|
@@ -18,7 +18,8 @@ setup(
|
|
|
18
18
|
'requests',
|
|
19
19
|
'selenium',
|
|
20
20
|
'webdriver-manager',
|
|
21
|
-
'validators'
|
|
21
|
+
'validators',
|
|
22
|
+
'pygetwindow'
|
|
22
23
|
],
|
|
23
24
|
license='MIT License',
|
|
24
25
|
description='Biblioteca de ferramentas LBX S/A',
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|