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.
@@ -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,3 @@
1
+ from .log import measure_time,measure_memory,measure_time_and_memory,check_existence_of_folder
2
+ from .functions import receber_lista_float, receber_lista_int
3
+ from .calculosnumerioco import regresao,derivada,funca,formula
@@ -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,7 @@
1
+ functools
2
+ time
3
+ datetime
4
+ os
5
+ tracemalloc
6
+ Pandas
7
+ sympy
@@ -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"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+