logsfacilitator 0.1.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.
- logsfacilitator-0.1.0/PKG-INFO +12 -0
- logsfacilitator-0.1.0/logsfacilitator/__init__.py +3 -0
- logsfacilitator-0.1.0/logsfacilitator/calculosnumerioco.py +85 -0
- logsfacilitator-0.1.0/logsfacilitator/functions.py +39 -0
- logsfacilitator-0.1.0/logsfacilitator/log.py +124 -0
- logsfacilitator-0.1.0/logsfacilitator.egg-info/PKG-INFO +12 -0
- logsfacilitator-0.1.0/logsfacilitator.egg-info/SOURCES.txt +10 -0
- logsfacilitator-0.1.0/logsfacilitator.egg-info/dependency_links.txt +1 -0
- logsfacilitator-0.1.0/logsfacilitator.egg-info/requires.txt +7 -0
- logsfacilitator-0.1.0/logsfacilitator.egg-info/top_level.txt +1 -0
- logsfacilitator-0.1.0/pyproject.toml +20 -0
- logsfacilitator-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: logsfacilitator
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: My tools for logging and performance measurement
|
|
5
|
+
Project-URL: Homepage, https://github.com/SydhineyRhurtyson/logsfacilitator
|
|
6
|
+
Requires-Dist: functools
|
|
7
|
+
Requires-Dist: time
|
|
8
|
+
Requires-Dist: datetime
|
|
9
|
+
Requires-Dist: os
|
|
10
|
+
Requires-Dist: tracemalloc
|
|
11
|
+
Requires-Dist: Pandas
|
|
12
|
+
Requires-Dist: sympy
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from sympy import sympify, symbols, diff
|
|
3
|
+
|
|
4
|
+
def regresao(x:list,y:list, return_values:bool=False)-> str|list[float]:
|
|
5
|
+
"""
|
|
6
|
+
Vai receber duas listas de valores, X e Y, e calcular os valores de A e B da regressão linear.
|
|
7
|
+
A equação da regressão linear é dada por: Y = A*X + B, onde A é o coeficiente angular e B é o coeficiente linear.
|
|
8
|
+
|
|
9
|
+
Args:
|
|
10
|
+
x (list): Lista de valores de X.
|
|
11
|
+
y (list): Lista de valores de Y.
|
|
12
|
+
return_values (bool, optional): Se True, retorna os valores de A e B. Se False, retorna a tabela e as fórmulas em uma string. Padrão é False.
|
|
13
|
+
|
|
14
|
+
Returns:
|
|
15
|
+
list[float]: Lista contendo os valores de A e B, se return_values for True.
|
|
16
|
+
str: String contendo a tabela e as fórmulas, se return_values for False.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
#criação da Tabela
|
|
20
|
+
df = pd.DataFrame({"X":x,"Y":y})
|
|
21
|
+
df["XY"] = df["X"]*df["Y"]
|
|
22
|
+
df["X²"]=df["X"]**2
|
|
23
|
+
|
|
24
|
+
#Definição de variaveis
|
|
25
|
+
n = df["X"].count() # numero de valores de X
|
|
26
|
+
ex = df["X"].sum() # soma de X
|
|
27
|
+
ey = df["Y"].sum() # soma de Y
|
|
28
|
+
exy = df["XY"].sum()# Soma de XY
|
|
29
|
+
ex2 = df["X²"].sum()# Soma de X²
|
|
30
|
+
|
|
31
|
+
#Definir A e B
|
|
32
|
+
divisor = (n*(ex2)-(ex)**2)
|
|
33
|
+
a = (n*(exy)-(ex)*(ey))/divisor
|
|
34
|
+
b = (ex2*ey-(exy)*(ex))/divisor
|
|
35
|
+
if return_values:
|
|
36
|
+
return [a,b]
|
|
37
|
+
else:
|
|
38
|
+
#Exibir a Tabela
|
|
39
|
+
separa= "=+="*20
|
|
40
|
+
tabela= separa+"\nTabela de valores\n"+df.to_string(index=False)+"\n"
|
|
41
|
+
|
|
42
|
+
#Exibir as variavei
|
|
43
|
+
def_var= separa+f"""\nDefinição de variaveis:
|
|
44
|
+
N = {n}, N é o numero de valores de X
|
|
45
|
+
EX = {ex}, EX é a Soma dos valores de X
|
|
46
|
+
EY = {ey}, EY é a Soma dos valores de Y
|
|
47
|
+
EXY = {exy}, EXY é a Soma dos valores de XY
|
|
48
|
+
EX² = {ex2}, EX² é a Soma dos valores de X²
|
|
49
|
+
{separa}"""
|
|
50
|
+
#Exibir as formulas de A e B
|
|
51
|
+
form_a= f"""Formula A:
|
|
52
|
+
A = (n*(exy)-(ex)*(ey))/(n*(ex2)-(ex)²)
|
|
53
|
+
A = ({n}*({exy})-({ex})*({ey}))/({n}*({ex2})-({ex})²)
|
|
54
|
+
A = ({n*(exy)}-{round((ex)*(ey),3)})/({n*(ex2)}-{(ex)**2})
|
|
55
|
+
A = {round(n*(exy)-(ex)*(ey),3)}/{(n*(ex2)-(ex)**2)}
|
|
56
|
+
A = {round(a,3)}
|
|
57
|
+
{separa}"""
|
|
58
|
+
|
|
59
|
+
form_b= f"""Formula B:
|
|
60
|
+
B = (ex2*ey-(exy)*(ex))/(n*(ex2)-(ex)²)
|
|
61
|
+
B = ({ex2}*{ey}-({exy})*({ex}))/({n}*({ex2})-({ex})²)
|
|
62
|
+
B = ({ex2*ey}-{(exy)*(ex)})/({n*(ex2)}-{(ex)**2})
|
|
63
|
+
B = {round(ex2*ey-(exy)*(ex),3)}/{(n*(ex2)-(ex)**2)}
|
|
64
|
+
B = {round(b,3)}
|
|
65
|
+
{separa}"""
|
|
66
|
+
return tabela+"\n"+def_var+"\n"+form_a+"\n"+form_b
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def formula():
|
|
70
|
+
print("Digite a função:")
|
|
71
|
+
f = input()
|
|
72
|
+
f = f.replace("^", "**")
|
|
73
|
+
espressao = sympify(f)
|
|
74
|
+
return espressao
|
|
75
|
+
|
|
76
|
+
def funca(e,x):
|
|
77
|
+
s = symbols('x')
|
|
78
|
+
resultado = round(e.subs(s, x), 5)
|
|
79
|
+
return resultado
|
|
80
|
+
|
|
81
|
+
def derivada(e,x):
|
|
82
|
+
s = symbols('x')
|
|
83
|
+
derivada = diff(e, s)
|
|
84
|
+
resulrdiv = round(derivada.subs(s, x), 5)
|
|
85
|
+
return resulrdiv
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
def receber_lista_float(varia:str, prompt:bool=True)-> list[float]:
|
|
2
|
+
"""
|
|
3
|
+
Recebe uma lista de números float do usuário.
|
|
4
|
+
|
|
5
|
+
Args:
|
|
6
|
+
varia (str): Nome da variável para exibir na mensagem de prompt | Vai recerber um string com os valores separados por vírgula.
|
|
7
|
+
prompt (bool): Indica se deve exibir a mensagem de prompt.
|
|
8
|
+
|
|
9
|
+
Returns:
|
|
10
|
+
list[float]: Lista de números float.
|
|
11
|
+
"""
|
|
12
|
+
if prompt:
|
|
13
|
+
x= input(f"""Digite as variaveis de {varia}
|
|
14
|
+
"OBS: separado por Virgula, ponto flutuante com ponto
|
|
15
|
+
""").split(",")
|
|
16
|
+
if not prompt:
|
|
17
|
+
x= varia.split(",")
|
|
18
|
+
x= [float(val) for val in x]
|
|
19
|
+
return x
|
|
20
|
+
|
|
21
|
+
def receber_lista_int(varia:str, prompt:bool=True)-> list[int]:
|
|
22
|
+
"""
|
|
23
|
+
Recebe uma lista de números int do usuário.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
varia (str): Nome da variável para exibir na mensagem de prompt | Vai recerber um string com os valores separados por vírgula.
|
|
27
|
+
prompt (bool): Indica se deve exibir a mensagem de prompt.
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
list[int]: Lista de números int.
|
|
31
|
+
"""
|
|
32
|
+
if prompt:
|
|
33
|
+
x= input(f"""Digite as variaveis de {varia}
|
|
34
|
+
"OBS: separado por Virgula, ponto flutuante com ponto
|
|
35
|
+
""").split(",")
|
|
36
|
+
if not prompt:
|
|
37
|
+
x= varia.split(",")
|
|
38
|
+
x= [int(val) for val in x]
|
|
39
|
+
return x
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
from functools import wraps
|
|
2
|
+
from time import perf_counter
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
from os import getcwd,chdir
|
|
5
|
+
from tracemalloc import start,get_traced_memory,stop
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def check_existence_of_folder(current_directory:str=getcwd(),folder:str=None,diretorio_ant:str=None)->str:
|
|
9
|
+
"""
|
|
10
|
+
Verifica a existência de uma pasta em um diretório e retorna o caminho completo da pasta se ela existir.
|
|
11
|
+
Caso contrário, sobe um nível no diretório e verifica novamente até encontrar a pasta ou chegar ao diretório raiz.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
current_directory (str): Diretório atual. Padrão é o diretório de trabalho atual.
|
|
15
|
+
folder (str): Nome da pasta a ser verificada.
|
|
16
|
+
diretorio_ant (str, optional): Diretório anterior. Padrão é None.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
str: Caminho completo da pasta se ela existir.
|
|
20
|
+
|
|
21
|
+
Raises:
|
|
22
|
+
FileNotFoundError: Se a pasta não for encontrada em nenhum diretório.
|
|
23
|
+
"""
|
|
24
|
+
diretorio = folder.join(current_directory, folder)
|
|
25
|
+
if folder.isdir(diretorio):
|
|
26
|
+
return diretorio
|
|
27
|
+
else:
|
|
28
|
+
chdir("..")
|
|
29
|
+
current_directory = getcwd()
|
|
30
|
+
if current_directory == diretorio_ant:
|
|
31
|
+
raise FileNotFoundError(f"A folder '{folder}' não foi encontrada em nenhum diretório")
|
|
32
|
+
return check_existence_of_folder(current_directory,folder,diretorio_ant=current_directory)
|
|
33
|
+
|
|
34
|
+
def measure_time(folder:str,writer_log:bool=True):
|
|
35
|
+
"""
|
|
36
|
+
Args:
|
|
37
|
+
folder (str): Nome da pasta onde o log será salvo.
|
|
38
|
+
writer_log (bool, optional): Se True, escreve o log em um arquivo. Se False, imprime o log no console. Padrão é True.
|
|
39
|
+
|
|
40
|
+
Mede o tempo utilizado por uma função e registra o resultado.
|
|
41
|
+
"""
|
|
42
|
+
def decorador(funcao):
|
|
43
|
+
@wraps(funcao)
|
|
44
|
+
def interna(*args, **kwargs):
|
|
45
|
+
|
|
46
|
+
inicio = perf_counter()
|
|
47
|
+
resultado = funcao(*args, **kwargs)
|
|
48
|
+
fim = perf_counter()
|
|
49
|
+
|
|
50
|
+
tempo = fim - inicio
|
|
51
|
+
minuto = tempo // 60
|
|
52
|
+
segundo = tempo % 60
|
|
53
|
+
registro =f"Registro:{datetime.now()}\nFuunção: {funcao.__name__}, Tempo: {minuto }:{segundo:.4f} segundos"
|
|
54
|
+
separa = "=+="*20
|
|
55
|
+
diretorio_log = check_existence_of_folder(folder=folder)
|
|
56
|
+
|
|
57
|
+
if writer_log:
|
|
58
|
+
with open(folder.join(diretorio_log,"log.txt"),"a",encoding="utf-8") as arquivo:
|
|
59
|
+
arquivo.write(f"{registro}\n{separa}\n")
|
|
60
|
+
elif not writer_log:
|
|
61
|
+
print(f"{registro}\n{separa}\n")
|
|
62
|
+
return resultado
|
|
63
|
+
return interna
|
|
64
|
+
return decorador
|
|
65
|
+
|
|
66
|
+
def measure_memory(folder:str,writer_log:bool=True):
|
|
67
|
+
"""
|
|
68
|
+
Args:
|
|
69
|
+
folder (str): Nome da pasta onde o log será salvo.
|
|
70
|
+
writer_log (bool, optional): Se True, escreve o log em um arquivo. Se False, imprime o log no console. Padrão é True.
|
|
71
|
+
|
|
72
|
+
Mede a memória utilizada por uma função e registra o resultado.
|
|
73
|
+
"""
|
|
74
|
+
def decorador(funcao):
|
|
75
|
+
@wraps(funcao)
|
|
76
|
+
def interna(*args, **kwargs):
|
|
77
|
+
start()
|
|
78
|
+
resultado = funcao(*args, **kwargs)
|
|
79
|
+
memoria_atual, memoria_maxima = get_traced_memory()
|
|
80
|
+
stop()
|
|
81
|
+
registro = f"Função: {funcao.__name__}, Memória atual: {memoria_atual / 1024 / 1024:.2f} MB, Memória máxima: {memoria_maxima / 1024 / 1024:.2f} MB"
|
|
82
|
+
separa = "=+="*20
|
|
83
|
+
diretorio_log = check_existence_of_folder(folder=folder)
|
|
84
|
+
if writer_log:
|
|
85
|
+
with open(folder.join(diretorio_log,"log.txt"),"a",encoding="utf-8") as arquivo:
|
|
86
|
+
arquivo.write(f"{registro}\n{separa}\n")
|
|
87
|
+
elif not writer_log:
|
|
88
|
+
print(f"{registro}\n{separa}\n")
|
|
89
|
+
return resultado
|
|
90
|
+
return interna
|
|
91
|
+
return decorador
|
|
92
|
+
|
|
93
|
+
def measure_time_and_memory(folder:str,writer_log:bool=True):
|
|
94
|
+
"""
|
|
95
|
+
args:
|
|
96
|
+
folder (str): Nome da pasta onde o log será salvo.
|
|
97
|
+
writer_log (bool, optional): Se True, escreve o log em um arquivo. Se False, imprime o log no console. Padrão é True.
|
|
98
|
+
|
|
99
|
+
Mede o tempo e a memória utilizada por uma função e registra o resultado.
|
|
100
|
+
"""
|
|
101
|
+
def decorador(funcao):
|
|
102
|
+
@wraps(funcao)
|
|
103
|
+
def interna(*args, **kwargs):
|
|
104
|
+
start()
|
|
105
|
+
inicio = perf_counter()
|
|
106
|
+
resultado = funcao(*args, **kwargs)
|
|
107
|
+
memoria_atual, memoria_maxima = get_traced_memory()
|
|
108
|
+
stop()
|
|
109
|
+
fim = perf_counter()
|
|
110
|
+
tempo = fim - inicio
|
|
111
|
+
minuto = tempo // 60
|
|
112
|
+
segundo = tempo % 60
|
|
113
|
+
registro = f"Registro:{datetime.now()}\nFunção: {funcao.__name__}\nTempo: {minuto }:{segundo:.4f} segundos\nMemória atual: {memoria_atual / 1024 / 1024:.2f} MB, Memória máxima: {memoria_maxima / 1024 / 1024:.2f} MB"
|
|
114
|
+
separa = "=+="*20
|
|
115
|
+
diretorio_log = check_existence_of_folder(folder=folder)
|
|
116
|
+
if writer_log:
|
|
117
|
+
with open(folder.join(diretorio_log,"log.txt"),"a",encoding="utf-8") as arquivo:
|
|
118
|
+
arquivo.write(f"{registro}\n{separa}\n")
|
|
119
|
+
elif not writer_log:
|
|
120
|
+
print(f"{registro}\n{separa}\n")
|
|
121
|
+
return resultado
|
|
122
|
+
return interna
|
|
123
|
+
return decorador
|
|
124
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: logsfacilitator
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: My tools for logging and performance measurement
|
|
5
|
+
Project-URL: Homepage, https://github.com/SydhineyRhurtyson/logsfacilitator
|
|
6
|
+
Requires-Dist: functools
|
|
7
|
+
Requires-Dist: time
|
|
8
|
+
Requires-Dist: datetime
|
|
9
|
+
Requires-Dist: os
|
|
10
|
+
Requires-Dist: tracemalloc
|
|
11
|
+
Requires-Dist: Pandas
|
|
12
|
+
Requires-Dist: sympy
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
pyproject.toml
|
|
2
|
+
logsfacilitator/__init__.py
|
|
3
|
+
logsfacilitator/calculosnumerioco.py
|
|
4
|
+
logsfacilitator/functions.py
|
|
5
|
+
logsfacilitator/log.py
|
|
6
|
+
logsfacilitator.egg-info/PKG-INFO
|
|
7
|
+
logsfacilitator.egg-info/SOURCES.txt
|
|
8
|
+
logsfacilitator.egg-info/dependency_links.txt
|
|
9
|
+
logsfacilitator.egg-info/requires.txt
|
|
10
|
+
logsfacilitator.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
logsfacilitator
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "logsfacilitator"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "My tools for logging and performance measurement"
|
|
9
|
+
dependencies = [
|
|
10
|
+
"functools",
|
|
11
|
+
"time",
|
|
12
|
+
"datetime",
|
|
13
|
+
"os",
|
|
14
|
+
"tracemalloc",
|
|
15
|
+
"Pandas",
|
|
16
|
+
"sympy"
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
[project.urls]
|
|
20
|
+
Homepage ="https://github.com/SydhineyRhurtyson/logsfacilitator"
|