scilens 0.4.6__py3-none-any.whl → 0.4.8__py3-none-any.whl
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.
- scilens/config/models/reader_metrics.py +1 -1
- scilens/readers/cols_dataset.py +47 -29
- scilens/readers/reader_csv.py +23 -23
- scilens/report/report.py +1 -1
- scilens/utils/file.py +17 -16
- {scilens-0.4.6.dist-info → scilens-0.4.8.dist-info}/METADATA +1 -1
- {scilens-0.4.6.dist-info → scilens-0.4.8.dist-info}/RECORD +9 -9
- {scilens-0.4.6.dist-info → scilens-0.4.8.dist-info}/WHEEL +0 -0
- {scilens-0.4.6.dist-info → scilens-0.4.8.dist-info}/entry_points.txt +0 -0
|
@@ -3,4 +3,4 @@ _B='forbid'
|
|
|
3
3
|
_A=None
|
|
4
4
|
from pydantic import BaseModel,Field
|
|
5
5
|
class ReaderTxtMetricsConfig(BaseModel,extra=_B):name:str|_A=Field(default=_A,description=_C);pattern:str=Field(default=_A,description='Expression régulière pour identifier la métrique.');number_position:int=Field(default=1,description='Position du nombre dans le tableau de nombres de la ligne.')
|
|
6
|
-
class ReaderColsMetricsConfig(BaseModel,extra=_B):name:str|_A=Field(default=_A,description=_C);
|
|
6
|
+
class ReaderColsMetricsConfig(BaseModel,extra=_B):name:str|_A=Field(default=_A,description=_C);aggregation:str=Field(default='sum',description="Méthode d'agrégation du vecteur `col` ou du vecteur résultat de la `function`. Peut être `mean`, `sum`, `min`, `max`.");col:int|str|_A=Field(default=_A,description='Colonnes (index ou noms) de la métrique.');function:str|_A=Field(default=_A,description="Fonction norme de l'espace vectoriel . Peut être `euclidean_norm`.");components:list[int]|list[str]|_A=Field(default=_A,description='Colonnes (index ou noms) de la `function`.')
|
scilens/readers/cols_dataset.py
CHANGED
|
@@ -9,40 +9,58 @@ from scilens.components.compare_models import CompareGroup
|
|
|
9
9
|
from scilens.components.compare_floats import CompareFloats
|
|
10
10
|
from scilens.config.models.reader_format_cols import ReaderCurveParserNameConfig
|
|
11
11
|
from scilens.config.models.reader_metrics import ReaderColsMetricsConfig
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if isinstance(A,
|
|
16
|
-
if isinstance(A,
|
|
12
|
+
import math
|
|
13
|
+
def get_col_indexes(source,numeric_col_indexes,names):
|
|
14
|
+
C=names;A=source;B=[]
|
|
15
|
+
if not isinstance(A,list):A=[A]
|
|
16
|
+
if isinstance(A[0],int):
|
|
17
|
+
for F in A:B.append(F-1)
|
|
18
|
+
else:
|
|
17
19
|
for D in A:
|
|
18
|
-
if D in C:B
|
|
19
|
-
|
|
20
|
-
if
|
|
20
|
+
if D in C:B.append(C.index(D))
|
|
21
|
+
for E in B:
|
|
22
|
+
if E not in numeric_col_indexes:raise ValueError(f"Index column index {E} is not a numeric column.")
|
|
21
23
|
return B
|
|
22
24
|
@dataclass
|
|
23
25
|
class ColsDataset:
|
|
24
26
|
cols_count:int=0;rows_count:int=0;names:list[str]=field(default_factory=lambda:[]);numeric_col_indexes:list[int]=field(default_factory=lambda:[]);data:list[list[float]]=field(default_factory=lambda:[]);origin_line_nb:list[int]=field(default_factory=lambda:[])
|
|
25
|
-
def
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
D=
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
27
|
+
def get_col_indexes(A,col_x):return get_col_indexes(col_x,A.numeric_col_indexes,A.names)
|
|
28
|
+
def get_curves_col_x(F,col_x):
|
|
29
|
+
J='title';C=col_x;A=F;G={};H=F.get_col_indexes(C)
|
|
30
|
+
if not H:raise ValueError(f"get_curves_col_x Column {C} not found in numeric columns.")
|
|
31
|
+
D=H[0];G[_D]=D;K=[B for(A,B)in enumerate(A.numeric_col_indexes)if A!=D];E=[];I=[]
|
|
32
|
+
for B in K:C=A.data[D];L=A.data[B];M={J:A.names[B],'short_title':A.names[B],'series':[[C[A],L[A]]for A in range(A.rows_count)],_C:B};E+=[M];N={J:A.names[B],'type':'simple','xaxis':A.names[D],'yaxis':A.names[B],_B:[len(E)-1]};I+=[N]
|
|
33
|
+
return{_B:E,_E:I},G
|
|
34
|
+
def compute_metrics(K,config):
|
|
35
|
+
C=K;L={}
|
|
36
|
+
for(H,F)in enumerate(config):
|
|
37
|
+
I=F.name;B=F.col;J=F.function;D=F.aggregation
|
|
38
|
+
if not B and not J:raise ValueError(f"Metric #{H} must have either a column or a function.")
|
|
39
|
+
if B and J:raise ValueError(f"Metric #{H} cannot have both a column and a function.")
|
|
40
|
+
if B:
|
|
41
|
+
E=_A
|
|
42
|
+
if isinstance(B,int):E=C.numeric_col_indexes.index(B-1)
|
|
43
|
+
if isinstance(B,str):E=C.names.index(B)
|
|
44
|
+
if E is _A or E<0 or E>=C.cols_count:raise ValueError(f"Metric #{H} has an invalid column: {B}.")
|
|
45
|
+
if not I:I=f"{C.names[E]} {D}"
|
|
46
|
+
A=C.data[E]
|
|
47
|
+
elif J:
|
|
48
|
+
A=[0 for A in range(C.rows_count)]
|
|
49
|
+
if J=='euclidean_norm':
|
|
50
|
+
if not I:I=f"Euclidean Norm {F.components} {D}"
|
|
51
|
+
M=K.get_col_indexes(F.components)
|
|
52
|
+
for N in M:
|
|
53
|
+
for(O,P)in enumerate(C.data[N]):A[O]+=P**2
|
|
54
|
+
A=[math.sqrt(A)for A in A]
|
|
55
|
+
else:raise ValueError(f"Metric #{H} has an invalid function: {J}.")
|
|
56
|
+
G=_A
|
|
57
|
+
if D=='mean':G=sum(A)/len(A)
|
|
58
|
+
elif D=='sum':G=sum(A)
|
|
59
|
+
elif D=='min':G=min(A)
|
|
60
|
+
elif D=='max':G=max(A)
|
|
61
|
+
if G is _A:raise ValueError(f"Metric #{H} has an invalid aggregation: {D}.")
|
|
62
|
+
L[I]=G
|
|
63
|
+
return L
|
|
46
64
|
@dataclass
|
|
47
65
|
class ColsCurves:type:str;info:dict;curves:dict
|
|
48
66
|
def compare(group,compare_floats,reader_test,reader_ref,cols_curve):
|
scilens/readers/reader_csv.py
CHANGED
|
@@ -2,7 +2,7 @@ _B=True
|
|
|
2
2
|
_A=None
|
|
3
3
|
import logging,csv,re
|
|
4
4
|
from scilens.readers.reader_interface import ReaderInterface
|
|
5
|
-
from scilens.readers.cols_dataset import ColsDataset,ColsCurves,compare as cols_compare,
|
|
5
|
+
from scilens.readers.cols_dataset import ColsDataset,ColsCurves,compare as cols_compare,get_col_indexes
|
|
6
6
|
from scilens.readers.mat_dataset import MatDataset,from_iterator as mat_from_iterator,compare as mat_compare,get_data
|
|
7
7
|
from scilens.config.models.reader_format_csv import ReaderCsvConfig,ReaderCsvMatrixConfig
|
|
8
8
|
from scilens.config.models.reader_format_cols import ReaderCurveParserNameConfig
|
|
@@ -27,10 +27,10 @@ class ReaderCsv(ReaderInterface):
|
|
|
27
27
|
if bool(re.match(B,line)):return _B
|
|
28
28
|
return False
|
|
29
29
|
def read(A,reader_options):
|
|
30
|
-
C=reader_options;A.reader_options=C;F,
|
|
30
|
+
C=reader_options;A.reader_options=C;F,O,V=csv_detect(A.origin.path,A.reader_options.delimiter,A.reader_options.quotechar,encoding=A.encoding);A.has_header=F;A.cols=O;A.numeric_col_indexes=V;A.index_col_index=_A;A.ignore_lines_patterns=_A;G=_A;H=_A;I=_A;J=_A;B=C.cols
|
|
31
31
|
if B:
|
|
32
32
|
if B.index_col:
|
|
33
|
-
if B.index_col:
|
|
33
|
+
if B.index_col:R=get_col_indexes(col_x,D.numeric_col_indexes,D.names);A.index_col_index=R[0]if R else _A
|
|
34
34
|
if B.rows:
|
|
35
35
|
A.ignore_lines_patterns=B.rows.ignore_patterns;G=B.rows.line_start;H=B.rows.line_end
|
|
36
36
|
if G and H and H<G:raise ValueError(f"Line end {H} cannot be before line start {G}.")
|
|
@@ -39,47 +39,47 @@ class ReaderCsv(ReaderInterface):
|
|
|
39
39
|
I=B.rows.index_min_value;J=B.rows.index_max_value
|
|
40
40
|
if I and J and I>J:raise ValueError(f"Index min value {I} cannot be greater than index max value {J}.")
|
|
41
41
|
A.raw_lines_number=_A;A.curves=_A;A.report_matrices=_A
|
|
42
|
-
with open(A.origin.path,'r',encoding=A.encoding)as
|
|
43
|
-
|
|
42
|
+
with open(A.origin.path,'r',encoding=A.encoding)as W:
|
|
43
|
+
S=W.readlines();L=csv.reader(S,delimiter=A.reader_options.delimiter,quotechar=A.reader_options.quotechar)
|
|
44
44
|
if C.is_matrix:
|
|
45
|
-
K=C.matrix or ReaderCsvMatrixConfig();P=mat_from_iterator(x_name=K.x_name,y_name=K.y_name,reader=
|
|
45
|
+
K=C.matrix or ReaderCsvMatrixConfig();P=mat_from_iterator(x_name=K.x_name,y_name=K.y_name,reader=L,has_header=F,x_value_line=K.x_value_line,has_y=K.has_y)
|
|
46
46
|
if K.export_report:A.report_matrices=get_data([P],['csv'])
|
|
47
47
|
A.mat_dataset=P;A.raw_lines_number=P.nb_lines+(1 if F else 0)
|
|
48
48
|
else:
|
|
49
49
|
if C.cols and C.cols.ignore_columns:
|
|
50
50
|
if not F:raise Exception('Ignore columns is not supported without header.')
|
|
51
51
|
if isinstance(C.cols.ignore_columns[0],str):A.numeric_col_indexes=[B for B in A.numeric_col_indexes if A.cols[B]not in C.cols.ignore_columns]
|
|
52
|
-
if isinstance(C.cols.ignore_columns[0],int):
|
|
53
|
-
|
|
54
|
-
if F and E==0:next(
|
|
52
|
+
if isinstance(C.cols.ignore_columns[0],int):X=[A-1 for A in B.ignore_columns];A.numeric_col_indexes=[A for A in A.numeric_col_indexes if A not in X]
|
|
53
|
+
T=len(O);D=ColsDataset(cols_count=T,names=O,numeric_col_indexes=A.numeric_col_indexes,data=[[]for A in range(T)]);E=0
|
|
54
|
+
if F and E==0:next(L);E+=1
|
|
55
55
|
if G:
|
|
56
56
|
try:
|
|
57
57
|
while _B:
|
|
58
58
|
if G<=E+1:break
|
|
59
|
-
|
|
59
|
+
M=next(L);E+=1
|
|
60
60
|
except StopIteration:pass
|
|
61
61
|
try:
|
|
62
62
|
while _B:
|
|
63
|
-
|
|
63
|
+
M=next(L);E+=1
|
|
64
64
|
if H and E>H:break
|
|
65
|
-
if J is not _A and float(
|
|
66
|
-
if A.ignore_lines_patterns and A._ignore_line(
|
|
67
|
-
if I is not _A and float(
|
|
68
|
-
for(
|
|
69
|
-
if
|
|
70
|
-
D.data[
|
|
65
|
+
if J is not _A and float(M[A.index_col_index])>J:break
|
|
66
|
+
if A.ignore_lines_patterns and A._ignore_line(S[E-1].rstrip('\n')):continue
|
|
67
|
+
if I is not _A and float(M[A.index_col_index])<I:continue
|
|
68
|
+
for(U,Q)in enumerate(M):
|
|
69
|
+
if U in D.numeric_col_indexes:Q=float(Q)
|
|
70
|
+
D.data[U].append(Q)
|
|
71
71
|
D.origin_line_nb.append(E)
|
|
72
72
|
except StopIteration:pass
|
|
73
73
|
D.rows_count=len(D.origin_line_nb);A.cols_dataset=D;A.raw_lines_number=D.rows_count+(1 if F else 0);A.metrics=_A
|
|
74
74
|
if C.metrics:A.metrics=D.compute_metrics(C.metrics)
|
|
75
75
|
if B and B.curve_parser:
|
|
76
76
|
if B.curve_parser.name==ReaderCurveParserNameConfig.COL_X:
|
|
77
|
-
|
|
78
|
-
if B.curve_parser.parameters:
|
|
79
|
-
elif B.index_col:
|
|
80
|
-
if not
|
|
81
|
-
A.curves,
|
|
82
|
-
if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=
|
|
77
|
+
N=_A
|
|
78
|
+
if B.curve_parser.parameters:N=B.curve_parser.parameters.x
|
|
79
|
+
elif B.index_col:N=B.index_col
|
|
80
|
+
if not N:raise ValueError('Curve parser COL_X requires a parameter x, or index_col to be defined.')
|
|
81
|
+
A.curves,Y=D.get_curves_col_x(N)
|
|
82
|
+
if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=Y,curves=A.curves)
|
|
83
83
|
elif B.curve_parser.name==ReaderCurveParserNameConfig.COLS_COUPLE:raise NotImplementedError('cols_couple not implemented')
|
|
84
84
|
else:raise Exception('Curve parser not supported.')
|
|
85
85
|
def compare(A,compare_floats,param_reader,param_is_ref=_B):
|
scilens/report/report.py
CHANGED
|
@@ -22,7 +22,7 @@ class Report:
|
|
|
22
22
|
elif A=='py':text_write(C,'DATA = '+format(D))
|
|
23
23
|
elif A in['js','ts']:text_write(C,'export default '+json.dumps(D))
|
|
24
24
|
elif A=='php':text_write(C,'<?php\nreturn '+dict_to_php_array(D)+';\n')
|
|
25
|
-
elif A==_A:text_write(C,HtmlReport(B.config,B.alt_config_dirs,B.path).process(processor,D,B.task_name))
|
|
25
|
+
elif A==_A:text_write(C,HtmlReport(B.config,B.alt_config_dirs,B.path).process(processor,D,B.task_name),encoding='utf-8')
|
|
26
26
|
else:H=I;logging.error(f"Extension {A} not implemented")
|
|
27
27
|
if H:E.files_created.append(C)
|
|
28
28
|
if J.output.export_html:logging.info(f"Report generated at file://{B._get_file(_A)}")
|
scilens/utils/file.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
_A=None
|
|
1
2
|
import json,os,shutil,yaml
|
|
2
3
|
def file_remove(path):
|
|
3
4
|
if os.path.exists(path):os.remove(path)
|
|
@@ -12,22 +13,22 @@ def copy(src,dst):
|
|
|
12
13
|
A=src
|
|
13
14
|
if os.path.isfile(A):file_copy(A,dst)
|
|
14
15
|
else:dir_copy(A,dst)
|
|
15
|
-
def text_write(path,data):
|
|
16
|
-
with open(path,'w')as A:A.write(data)
|
|
17
|
-
def text_append(path,data):
|
|
18
|
-
with open(path,'a')as A:A.write(data)
|
|
19
|
-
def text_load(path):
|
|
20
|
-
with open(path,'r')as A:return A.read()
|
|
21
|
-
def json_write(path,data):
|
|
22
|
-
with open(path,'w')as A:json.dump(data,A,indent=4)
|
|
23
|
-
def json_write_small(path,data):
|
|
24
|
-
with open(path,'w')as A:json.dump(data,A)
|
|
25
|
-
def json_load(path):
|
|
26
|
-
with open(path)as A:return json.load(A)
|
|
27
|
-
def yaml_write(path,data):
|
|
28
|
-
with open(path,'w')as A:yaml.dump(data,A,default_flow_style=False)
|
|
29
|
-
def yaml_load(path):
|
|
30
|
-
with open(path)as A:return yaml.safe_load(A)
|
|
16
|
+
def text_write(path,data,encoding=_A):
|
|
17
|
+
with open(path,'w',encoding=encoding)as A:A.write(data)
|
|
18
|
+
def text_append(path,data,encoding=_A):
|
|
19
|
+
with open(path,'a',encoding=encoding)as A:A.write(data)
|
|
20
|
+
def text_load(path,encoding=_A):
|
|
21
|
+
with open(path,'r',encoding=encoding)as A:return A.read()
|
|
22
|
+
def json_write(path,data,encoding=_A):
|
|
23
|
+
with open(path,'w',encoding=encoding)as A:json.dump(data,A,indent=4)
|
|
24
|
+
def json_write_small(path,data,encoding=_A):
|
|
25
|
+
with open(path,'w',encoding=encoding)as A:json.dump(data,A)
|
|
26
|
+
def json_load(path,encoding=_A):
|
|
27
|
+
with open(path,'r',encoding=encoding)as A:return json.load(A)
|
|
28
|
+
def yaml_write(path,data,encoding=_A):
|
|
29
|
+
with open(path,'w',encoding=encoding)as A:yaml.dump(data,A,default_flow_style=False)
|
|
30
|
+
def yaml_load(path,encoding=_A):
|
|
31
|
+
with open(path,'r',encoding=encoding)as A:return yaml.safe_load(A)
|
|
31
32
|
def move(source,target):shutil.move(source,target)
|
|
32
33
|
def list_paths_at_depth(root_dir,depth):
|
|
33
34
|
B=depth;A=root_dir;C=[]
|
|
@@ -32,7 +32,7 @@ scilens/config/models/reader_format_csv.py,sha256=KWEH0c12n6hdaWAKdHXYMT5SvH4UqB
|
|
|
32
32
|
scilens/config/models/reader_format_netcdf.py,sha256=Skr5lZACqVRrrlvs7R1RVFBpMTDthLJN-Fbs24jtb7o,1271
|
|
33
33
|
scilens/config/models/reader_format_txt.py,sha256=35rvhg311DN9miE47QM9NN_gcZHglYG2lBZPLJy4iyg,1462
|
|
34
34
|
scilens/config/models/reader_format_txt_fixed_cols.py,sha256=XmmFS0LdGR81XCjJIyW4cngivFo_8drckqe_k8fhqJk,1385
|
|
35
|
-
scilens/config/models/reader_metrics.py,sha256=
|
|
35
|
+
scilens/config/models/reader_metrics.py,sha256=uLwyd2vE4GRHbArYRv1BRH_acTL1hbFB7HgZRDJiAJg,965
|
|
36
36
|
scilens/config/models/readers.py,sha256=NpEjXbLv11k9N8UsnuS55KEYlRijF9C3eOrI0SB9dqM,1723
|
|
37
37
|
scilens/config/models/report.py,sha256=_4W96v5izWCC_CrMzh3PM0mZIUAa3L26ZQqjV0Mv0f4,1008
|
|
38
38
|
scilens/config/models/report_html.py,sha256=IsKlmE7QbSTiPrOaxPc48Ne7xPE5yqTcLjxqN_i-unY,3803
|
|
@@ -49,10 +49,10 @@ scilens/processors/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
49
49
|
scilens/processors/models/results.py,sha256=KoWxh13Zgi7PuPql8hkf4VjCis42ZxAuzIgJxBWVaX8,119
|
|
50
50
|
scilens/processors/processor_interface.py,sha256=jzMp1529JXnMGTJijVy6b_1zmARAMNv70f2lgys7vn4,452
|
|
51
51
|
scilens/readers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
-
scilens/readers/cols_dataset.py,sha256=
|
|
52
|
+
scilens/readers/cols_dataset.py,sha256=l6WXl71n-yTgUUbd2KEMwwXmXdqF54N9edeI3saAO84,3941
|
|
53
53
|
scilens/readers/exceptions.py,sha256=JzmxcjnR5sH-IOWVeCC5A1bSwxv-jCAtIJvDjzx1CTI,32
|
|
54
54
|
scilens/readers/mat_dataset.py,sha256=Z9TYDWaH2aqdniLNDjlpR6VVNHMSARjh52clhdMyOn4,1496
|
|
55
|
-
scilens/readers/reader_csv.py,sha256=
|
|
55
|
+
scilens/readers/reader_csv.py,sha256=TygAwFFqj8K7d-M2HtD3VzhS8nobPATQ0QmLJOOAye0,5550
|
|
56
56
|
scilens/readers/reader_interface.py,sha256=r1pu9LyweTGXU8YfI3FPZy1Em4stzmJb-6j90j1tPQQ,938
|
|
57
57
|
scilens/readers/reader_manager.py,sha256=DFinxIk3IIIcB6JxybGcv-mXt3jhXgCwUtzR0TqhB2Q,2684
|
|
58
58
|
scilens/readers/reader_txt.py,sha256=U3hGIorj-Nv-jq6zYtvbDv2LQBHTgW52PHbV8A5FMA8,4526
|
|
@@ -63,7 +63,7 @@ scilens/report/assets/logo.svg,sha256=W-1OVqcvdBjf-1AHHcV6WciIUqBoVFUh52Tc3o_jqt
|
|
|
63
63
|
scilens/report/assets/logo_cglb.svg,sha256=tEpkSr2h-jjQMecqiHef98Mxod4GD5j5nCQaFloTYso,2411
|
|
64
64
|
scilens/report/assets.py,sha256=CcfGc9NNGnPVinkHZkEyN2S_BGKNIyMFvVdA__-M6-0,532
|
|
65
65
|
scilens/report/html_report.py,sha256=ml_paRkzI81irpeWNtEkBOHkK0W7veNU6RbVM6RLM6E,1940
|
|
66
|
-
scilens/report/report.py,sha256=
|
|
66
|
+
scilens/report/report.py,sha256=E8C4tyMSQd8JbOQU0xC3R0bwPMRc4DS0o3QAq-PvXho,1828
|
|
67
67
|
scilens/report/template.py,sha256=cPs5gd3uEwb-6JgitGQD_i4IiUxigBTlZLNRS9KVuos,581
|
|
68
68
|
scilens/report/templates/body_01_title.html,sha256=LJOWO6ImNPW9cg3tCDlgdllVTwnFGWcb2qvA3yv6wNk,1758
|
|
69
69
|
scilens/report/templates/body_02_tabs.html,sha256=hooRO_OJPwAQSa6GBsPLca-OnpiHkr3wZ_0NoXGKGR0,465
|
|
@@ -105,7 +105,7 @@ scilens/run/standalone_task_runner.py,sha256=QYUZ22YPV8hlUFANRcfxy_RXAmwKSfb7glP
|
|
|
105
105
|
scilens/run/task_context.py,sha256=NnujvpwnxY-YEzivYPYWaX-YChcZlEXt9y0_DXLqZkk,659
|
|
106
106
|
scilens/run/tasks_collector.py,sha256=m_FQaJdQRi4fCLW17ryJxU0TvGNJN54JTw2Mg6XPojY,3174
|
|
107
107
|
scilens/utils/dict.py,sha256=ORdZ_521Em4YjV5S8EqzESi9eM2Dh5CR4JpLbd8JASk,384
|
|
108
|
-
scilens/utils/file.py,sha256=
|
|
108
|
+
scilens/utils/file.py,sha256=nzO7Hb4Xuhi75u43F-LbHESw3YsAnV59nJ23Fq3-7e4,1920
|
|
109
109
|
scilens/utils/load_model_from_file.py,sha256=k5I-B6s5nVZu90MgzKSM0_IRj9oNL-4oJJRTwEvOyw8,619
|
|
110
110
|
scilens/utils/php.py,sha256=VBJxpzwwRPNcr3379f6ViwhpTzjGc4BKlSXHv4lnor8,444
|
|
111
111
|
scilens/utils/system.py,sha256=drXp_Vdv2dP9wFQoEQZIhxyCJhFliBLFPylGwv89FF4,182
|
|
@@ -113,7 +113,7 @@ scilens/utils/template.py,sha256=9dlXX3nmfzDRUwzPJOkoxk15UXivZ2SW-McdCwokFa4,443
|
|
|
113
113
|
scilens/utils/time_tracker.py,sha256=DdVBoMpVLXrX0qZZXyLm4g38EwDVLlRcBqcpNex1mYY,545
|
|
114
114
|
scilens/utils/vectors.py,sha256=4N2BZSC5n3HgZqPujDGF5NdjVmSL1rOHb_qw4OoABQY,103
|
|
115
115
|
scilens/utils/web.py,sha256=MAFWpIFOKz7QhqDoFh-Qwstvc76KpcxstSgHFT8FOL4,901
|
|
116
|
-
scilens-0.4.
|
|
117
|
-
scilens-0.4.
|
|
118
|
-
scilens-0.4.
|
|
119
|
-
scilens-0.4.
|
|
116
|
+
scilens-0.4.8.dist-info/METADATA,sha256=Iq6R89SiRZfEtfeFJllKZWJYnMXrsDTO6Fgbs7ztNaY,1367
|
|
117
|
+
scilens-0.4.8.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
118
|
+
scilens-0.4.8.dist-info/entry_points.txt,sha256=DaKGgxUEUv34GJAoXtta6ecL37ercejep9sCSSRQK2s,48
|
|
119
|
+
scilens-0.4.8.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|