scilens 0.3.13__py3-none-any.whl → 0.3.14__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_format_cols_curve.py → reader_format_cols.py} +5 -3
- scilens/config/models/reader_format_csv.py +2 -2
- scilens/config/models/reader_format_txt_fixed_cols.py +2 -2
- scilens/readers/cols_dataset.py +1 -1
- scilens/readers/reader_csv.py +32 -24
- scilens/readers/reader_txt_fixed_cols.py +21 -20
- {scilens-0.3.13.dist-info → scilens-0.3.14.dist-info}/METADATA +1 -1
- {scilens-0.3.13.dist-info → scilens-0.3.14.dist-info}/RECORD +10 -10
- {scilens-0.3.13.dist-info → scilens-0.3.14.dist-info}/WHEEL +0 -0
- {scilens-0.3.13.dist-info → scilens-0.3.14.dist-info}/entry_points.txt +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
_B='(Valide seulement si la première ligne est les en-têtes)'
|
|
2
|
+
_A=None
|
|
2
3
|
from pydantic import BaseModel,Field,model_validator
|
|
3
4
|
from enum import Enum
|
|
4
5
|
class ReaderCurveParserNameConfig(str,Enum):COL_X='col_x';COLS_COUPLE='cols_couple'
|
|
5
|
-
class ReaderCurveParserColXConfig(BaseModel):x:int|str|list[str]=Field(default=1,description="Si `integer`, index de la colonne pour l'axe x (index `1` pour la première colonne)."+"Si `String`, nom de la colonne pour l'axe x. Si la colonne n'existe pas, il n'y aura pas de parsing."+
|
|
6
|
+
class ReaderCurveParserColXConfig(BaseModel):x:int|str|list[str]=Field(default=1,description="Si `integer`, index de la colonne pour l'axe x (index `1` pour la première colonne)."+"Si `String`, nom de la colonne pour l'axe x. Si la colonne n'existe pas, il n'y aura pas de parsing."+_B+"Si `List[String] (utiles dans un contexte multi dataset), noms de la colonne pour l'axe x, noms des colonnes pour l'axe x , si plusieurs colonnes correspondent, la première trouvée sera utilisée. Si aucune colonne ne correspond, il n'y aura pas de parsing."+_B)
|
|
6
7
|
class ReaderCurveParserColsCoupleConfig(BaseModel):x_index:int=Field(description='NOT IMPLEMENTED - Index Col x');y_index:int=Field(description='NOT IMPLEMENTED - Index Col y')
|
|
7
8
|
class ReaderColsCurveParserConfig(BaseModel):
|
|
8
9
|
name:ReaderCurveParserNameConfig=Field(description='Le type de `paramètres` dépend de cette valeur');parameters:ReaderCurveParserColXConfig|ReaderCurveParserColsCoupleConfig=Field(description='Paramètres du parser de courbes')
|
|
@@ -13,4 +14,5 @@ class ReaderColsCurveParserConfig(BaseModel):
|
|
|
13
14
|
if isinstance(A.parameters,dict):
|
|
14
15
|
if A.name==ReaderCurveParserNameConfig.COL_X:A.parameters=ReaderCurveParserColXConfig(**A.parameters)
|
|
15
16
|
elif A.name==ReaderCurveParserNameConfig.COLS_COUPLE:A.parameters=ReaderCurveParserColsCoupleConfig(**A.parameters)
|
|
16
|
-
return A
|
|
17
|
+
return A
|
|
18
|
+
class ReaderColsLinesConfig(BaseModel):start:int|_A=Field(default=_A,description='Ligne de début pour lire le fichier (les en-têtes sont comptées comme une ligne). Si non défini, commence à la première ligne.');end:int|_A=Field(default=_A,description="Ligne de fin pour lire le fichier (les en-têtes sont comptées comme une ligne). Si non défini, lit jusqu'à la dernière ligne.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
_B=False
|
|
2
2
|
_A=None
|
|
3
3
|
from pydantic import BaseModel,Field
|
|
4
|
-
from scilens.config.models.
|
|
4
|
+
from scilens.config.models.reader_format_cols import ReaderColsCurveParserConfig,ReaderColsLinesConfig
|
|
5
5
|
class ReaderCsvMatrixConfig(BaseModel):x_value_line:int|_A=Field(default=_A,description="Indique la ligne des valeurs x si applicable. Peut être la ligne d'en-tête (=1).");has_y:bool=Field(default=_B,description='Indique si la première colonne est la colonne des valeurs y.');x_name:str=Field(default='X',description='Nom de la colonne des valeurs x.');y_name:str=Field(default='Y',description='Nom de la colonne des valeurs y.');export_report:bool=Field(default=_B,description='Indique si les matrices doivent être exportées dans les rapports.')
|
|
6
|
-
class ReaderCsvConfig(BaseModel):delimiter:str|_A=Field(default=',',description='Délimiteur de colonnes.');quotechar:str|_A=Field(default='"',description='Délimiteur de texte.');has_header:bool|_A=Field(default=_A,description="Indique si la 1ère ligne est une ligne d'en-tête. Si non spécifié, il y aura une détection automatique.");is_matrix:bool=Field(default=_B,description='Indique si le fichier est une matrice.');ignore_columns:list[str]|_A=Field(default=_A,description='Liste des noms des colonnes à ignorer. (Valide seulement si la première ligne est une ligne en-têtes et non matrice)');
|
|
6
|
+
class ReaderCsvConfig(BaseModel):delimiter:str|_A=Field(default=',',description='Délimiteur de colonnes.');quotechar:str|_A=Field(default='"',description='Délimiteur de texte.');has_header:bool|_A=Field(default=_A,description="Indique si la 1ère ligne est une ligne d'en-tête. Si non spécifié, il y aura une détection automatique.");is_matrix:bool=Field(default=_B,description='Indique si le fichier est une matrice.');ignore_columns:list[str]|_A=Field(default=_A,description='Liste des noms des colonnes à ignorer. (Valide seulement si la première ligne est une ligne en-têtes et non matrice)');ignore_lines_patterns:list[str]|_A=Field(default=_A,description='Liste des patterns de lignes à ignorer. Ex: ["^#", "^//"]. Non applicable si `is_matrix` est vrai.');lines:ReaderColsLinesConfig|_A=Field(default=_A,description='Configuration des lignes à lire.');curve_parser:ReaderColsCurveParserConfig|_A=Field(default=_A,description='Parseur de courbe à utiliser.');matrix:ReaderCsvMatrixConfig|_A=Field(default=_A,description='Configuration de la matrice. (Valide seulement si `is_matrix` est vrai)')
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
_A=None
|
|
2
2
|
from pydantic import BaseModel,Field
|
|
3
|
-
from scilens.config.models.
|
|
4
|
-
class ReaderTxtFixedColsConfig(BaseModel):ignore_lines_patterns:list[str]|_A=Field(default=_A,description='Liste des patterns de lignes à ignorer. Ex: ["^#", "^//"].');has_header:bool=Field(default=False,description="Indique si le dataset contient une ligne d'entête.");has_header_line:int|_A=Field(default=_A,description="Numéro de la ligne d'entête. Si None, la première ligne non ignorée est considérée comme l'entête.");has_header_ignore:list[str]|_A=Field(default=_A,description="Chaînes de caractères à ignorer dans la ligne d'entête. eex: ['##', '|'].");column_widths:list[int]|_A=Field(default=_A,description='Liste des largeurs de colonnes. Ex: [9, 13, 12]. Exclusif avec `column_indexes`.');column_indexes:list[tuple[int,int]]|_A=Field(default=_A,description='Liste des index de début et fin de colonnes. Ex: [[0, 8], [9, 12], [13, 28]]. Exclusif avec `column_widths`.');curve_parser:ReaderColsCurveParserConfig|_A=Field(default=_A,description='Parseur de courbe à utiliser.')
|
|
3
|
+
from scilens.config.models.reader_format_cols import ReaderColsCurveParserConfig,ReaderColsLinesConfig
|
|
4
|
+
class ReaderTxtFixedColsConfig(BaseModel):ignore_lines_patterns:list[str]|_A=Field(default=_A,description='Liste des patterns de lignes à ignorer. Ex: ["^#", "^//"].');lines:ReaderColsLinesConfig|_A=Field(default=_A,description='Configuration des lignes à lire.');has_header:bool=Field(default=False,description="Indique si le dataset contient une ligne d'entête.");has_header_line:int|_A=Field(default=_A,description="Numéro de la ligne d'entête. Si None, la première ligne non ignorée est considérée comme l'entête.");has_header_ignore:list[str]|_A=Field(default=_A,description="Chaînes de caractères à ignorer dans la ligne d'entête. eex: ['##', '|'].");column_widths:list[int]|_A=Field(default=_A,description='Liste des largeurs de colonnes. Ex: [9, 13, 12]. Exclusif avec `column_indexes`.');column_indexes:list[tuple[int,int]]|_A=Field(default=_A,description='Liste des index de début et fin de colonnes. Ex: [[0, 8], [9, 12], [13, 28]]. Exclusif avec `column_widths`.');curve_parser:ReaderColsCurveParserConfig|_A=Field(default=_A,description='Parseur de courbe à utiliser.')
|
scilens/readers/cols_dataset.py
CHANGED
|
@@ -7,7 +7,7 @@ import logging
|
|
|
7
7
|
from dataclasses import dataclass,field
|
|
8
8
|
from scilens.components.compare_models import CompareGroup
|
|
9
9
|
from scilens.components.compare_floats import CompareFloats
|
|
10
|
-
from scilens.config.models.
|
|
10
|
+
from scilens.config.models.reader_format_cols import ReaderCurveParserNameConfig
|
|
11
11
|
@dataclass
|
|
12
12
|
class ColsDataset: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:[])
|
|
13
13
|
@dataclass
|
scilens/readers/reader_csv.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
_B=True
|
|
1
2
|
_A=None
|
|
2
3
|
import logging,csv,re
|
|
3
4
|
from scilens.readers.reader_interface import ReaderInterface
|
|
4
5
|
from scilens.readers.cols_dataset import ColsDataset,ColsCurves,cols_dataset_get_curves_col_x,compare as cols_compare
|
|
5
6
|
from scilens.readers.mat_dataset import MatDataset,from_iterator as mat_from_iterator,compare as mat_compare,get_data
|
|
6
7
|
from scilens.config.models.reader_format_csv import ReaderCsvConfig,ReaderCsvMatrixConfig
|
|
7
|
-
from scilens.config.models.
|
|
8
|
+
from scilens.config.models.reader_format_cols import ReaderCurveParserNameConfig
|
|
8
9
|
from scilens.components.compare_models import CompareGroup
|
|
9
10
|
from scilens.components.compare_floats import CompareFloats
|
|
10
11
|
def is_num(x):
|
|
@@ -12,7 +13,7 @@ def is_num(x):
|
|
|
12
13
|
except ValueError:return
|
|
13
14
|
def csv_row_detect_header(first_row):
|
|
14
15
|
A=first_row
|
|
15
|
-
if all(not A.isdigit()for A in A):return
|
|
16
|
+
if all(not A.isdigit()for A in A):return _B,A
|
|
16
17
|
else:return False,[f"Column {A}"for(A,B)in enumerate(A)]
|
|
17
18
|
def csv_row_detect_cols_num(row):return[A for(A,B)in enumerate(row)if is_num(B)!=_A]
|
|
18
19
|
def csv_detect(path,delimiter,quotechar,encoding):
|
|
@@ -20,38 +21,45 @@ def csv_detect(path,delimiter,quotechar,encoding):
|
|
|
20
21
|
class ReaderCsv(ReaderInterface):
|
|
21
22
|
configuration_type_code='csv';category='datalines';extensions=['CSV']
|
|
22
23
|
def read(A,reader_options):
|
|
23
|
-
B=reader_options;A.reader_options=B;
|
|
24
|
-
with open(A.origin.path,'r',encoding=A.encoding)as
|
|
25
|
-
|
|
24
|
+
B=reader_options;A.reader_options=B;K=B.ignore_lines_patterns;A.raw_lines_number=_A;A.curves=_A;A.report_matrices=_A;D,G,R=csv_detect(A.origin.path,A.reader_options.delimiter,A.reader_options.quotechar,encoding=A.encoding);A.has_header=D;A.cols=G;A.numeric_col_indexes=R;L=B.lines.start if B.lines and B.lines.start else _A;M=B.lines.end if B.lines and B.lines.end else _A
|
|
25
|
+
with open(A.origin.path,'r',encoding=A.encoding)as S:
|
|
26
|
+
N=S.readlines();H=csv.reader(N,delimiter=A.reader_options.delimiter,quotechar=A.reader_options.quotechar)
|
|
26
27
|
if B.is_matrix:
|
|
27
|
-
|
|
28
|
-
if
|
|
29
|
-
A.mat_dataset=
|
|
28
|
+
F=B.matrix or ReaderCsvMatrixConfig();I=mat_from_iterator(x_name=F.x_name,y_name=F.y_name,reader=H,has_header=D,x_value_line=F.x_value_line,has_y=F.has_y)
|
|
29
|
+
if F.export_report:A.report_matrices=get_data([I],['csv'])
|
|
30
|
+
A.mat_dataset=I;A.raw_lines_number=I.nb_lines+(1 if D else 0)
|
|
30
31
|
else:
|
|
31
32
|
if B.ignore_columns:
|
|
32
33
|
if not D:raise Exception('Ignore columns is not supported without header.')
|
|
33
34
|
A.numeric_col_indexes=[C for C in A.numeric_col_indexes if A.cols[C]not in B.ignore_columns]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if
|
|
43
|
-
|
|
44
|
-
if
|
|
45
|
-
|
|
46
|
-
|
|
35
|
+
O=len(G);C=ColsDataset(cols_count=O,names=G,numeric_col_indexes=A.numeric_col_indexes,data=[[]for A in range(O)]);E=0
|
|
36
|
+
if L:
|
|
37
|
+
for X in range(L-1):
|
|
38
|
+
try:next(H);E+=1
|
|
39
|
+
except StopIteration:break
|
|
40
|
+
try:
|
|
41
|
+
while _B:
|
|
42
|
+
T=next(H);E+=1
|
|
43
|
+
if M and E>M:break
|
|
44
|
+
if D and E==1:continue
|
|
45
|
+
if K:
|
|
46
|
+
U=N[E-1].rstrip('\n');P=False
|
|
47
|
+
for V in K:
|
|
48
|
+
if bool(re.match(V,U)):P=_B;break
|
|
49
|
+
if P:continue
|
|
50
|
+
for(Q,J)in enumerate(T):
|
|
51
|
+
if Q in C.numeric_col_indexes:J=float(J)
|
|
52
|
+
C.data[Q].append(J)
|
|
53
|
+
C.origin_line_nb.append(E)
|
|
54
|
+
except StopIteration:pass
|
|
47
55
|
C.rows_count=len(C.origin_line_nb);A.cols_dataset=C;A.raw_lines_number=C.rows_count+(1 if D else 0)
|
|
48
56
|
if B.curve_parser:
|
|
49
57
|
if B.curve_parser.name==ReaderCurveParserNameConfig.COL_X:
|
|
50
|
-
A.curves,
|
|
51
|
-
if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=
|
|
58
|
+
A.curves,W=cols_dataset_get_curves_col_x(C,B.curve_parser.parameters.x)
|
|
59
|
+
if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=W,curves=A.curves)
|
|
52
60
|
elif B.curve_parser.name==ReaderCurveParserNameConfig.COLS_COUPLE:raise NotImplementedError('cols_couple not implemented')
|
|
53
61
|
else:raise Exception('Curve parser not supported.')
|
|
54
|
-
def compare(A,compare_floats,param_reader,param_is_ref=
|
|
62
|
+
def compare(A,compare_floats,param_reader,param_is_ref=_B):
|
|
55
63
|
H='node';D=param_is_ref;C=param_reader;B=compare_floats;I=A.reader_options
|
|
56
64
|
if I.is_matrix:E=A.mat_dataset if D else C.mat_dataset;F=A.mat_dataset if not D else C.mat_dataset;J,G=B.compare_errors.add_group(H,'csv matrix');mat_compare(G,B,E,F)
|
|
57
65
|
else:E=A.cols_dataset if D else C.cols_dataset;F=A.cols_dataset if not D else C.cols_dataset;K=A.cols_curve if hasattr(A,'cols_curve')else _A;J,G=B.compare_errors.add_group(H,'csv cols');cols_compare(G,B,E,F,K)
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
_A=None
|
|
2
2
|
import logging,re
|
|
3
|
+
from itertools import islice
|
|
3
4
|
from dataclasses import dataclass
|
|
4
5
|
from scilens.readers.transform import string_2_float
|
|
5
6
|
from scilens.readers.reader_interface import ReaderInterface
|
|
6
7
|
from scilens.readers.cols_dataset import ColsDataset,ColsCurves,cols_dataset_get_curves_col_x,compare
|
|
7
8
|
from scilens.config.models import ReaderTxtFixedColsConfig
|
|
8
|
-
from scilens.config.models.
|
|
9
|
+
from scilens.config.models.reader_format_cols import ReaderCurveParserNameConfig
|
|
9
10
|
from scilens.components.compare_floats import CompareFloats
|
|
10
11
|
@dataclass
|
|
11
12
|
class ParsedHeaders:raw:str;cleaned:str;data:list[str];ori_line_idx:int|_A=_A
|
|
@@ -49,33 +50,33 @@ class ReaderTxtFixedCols(ReaderInterface):
|
|
|
49
50
|
if B<len(A):C.append((B,len(A)))
|
|
50
51
|
return C
|
|
51
52
|
def _derive_col_indexes(A,header_row=_A):0
|
|
52
|
-
def read(
|
|
53
|
-
|
|
54
|
-
if
|
|
55
|
-
if
|
|
56
|
-
if
|
|
57
|
-
logging.debug(f"Using column widths: {
|
|
58
|
-
for J in
|
|
59
|
-
else:logging.debug(f"Using column indexes: {
|
|
60
|
-
else:logging.debug(f"Using auto derived column indexes.");
|
|
53
|
+
def read(B,reader_options):
|
|
54
|
+
A=reader_options;B.reader_options=A;E=B._get_parsed_headers(B.origin.path)if A.has_header else _A;I=open(B.origin.path,'r',encoding=B.encoding);C=[]
|
|
55
|
+
if A.column_indexes or A.column_widths:
|
|
56
|
+
if A.column_indexes and A.column_widths:raise Exception('column_indexes and column_widths are exclusive.')
|
|
57
|
+
if A.column_widths:
|
|
58
|
+
logging.debug(f"Using column widths: {A.column_widths}");H=0
|
|
59
|
+
for J in A.column_widths:C+=[(H,H+J)];H+=J
|
|
60
|
+
else:logging.debug(f"Using column indexes: {A.column_indexes}");C=A.column_indexes
|
|
61
|
+
else:logging.debug(f"Using auto derived column indexes.");N=B._get_first_data_line(B.origin.path);C=B._discover_col_idx_ralgin_spaces(N)
|
|
61
62
|
logging.debug(f"Column indexes: {C}")
|
|
62
63
|
if not C:raise Exception('No column indexes or widths provided, and no headers found to derive column indexes.')
|
|
63
64
|
F=len(C);D=ColsDataset(cols_count=F,names=[f"Column {A+1}"for A in range(F)],numeric_col_indexes=[A for A in range(F)],data=[[]for A in range(F)])
|
|
64
65
|
if E:D.names=E.data
|
|
65
|
-
G=0
|
|
66
|
-
for
|
|
66
|
+
K=A.lines.start if A.lines and A.lines.start else _A;O=A.lines.end if A.lines and A.lines.end else _A;G=K or 0
|
|
67
|
+
for L in islice(I,K,O):
|
|
67
68
|
G+=1
|
|
68
|
-
if
|
|
69
|
+
if B._ignore_line(L):continue
|
|
69
70
|
if E:
|
|
70
71
|
if E.ori_line_idx==G-1:continue
|
|
71
|
-
for(
|
|
72
|
+
for(P,M)in enumerate(C):Q=L[M[0]:M[1]].strip();R=string_2_float(Q);D.data[P].append(R)
|
|
72
73
|
D.origin_line_nb.append(G)
|
|
73
|
-
D.rows_count=len(D.origin_line_nb);I.close();
|
|
74
|
-
if
|
|
75
|
-
if
|
|
76
|
-
|
|
77
|
-
if
|
|
78
|
-
elif
|
|
74
|
+
D.rows_count=len(D.origin_line_nb);I.close();B.cols_dataset=D;B.raw_lines_number=G;B.curves=_A;B.cols_curve=_A
|
|
75
|
+
if A.curve_parser:
|
|
76
|
+
if A.curve_parser.name==ReaderCurveParserNameConfig.COL_X:
|
|
77
|
+
B.curves,S=cols_dataset_get_curves_col_x(D,A.curve_parser.parameters.x)
|
|
78
|
+
if B.curves:B.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=S,curves=B.curves)
|
|
79
|
+
elif A.curve_parser.name==ReaderCurveParserNameConfig.COLS_COUPLE:raise NotImplementedError('cols_couple not implemented')
|
|
79
80
|
else:raise Exception('Curve parser not supported.')
|
|
80
81
|
def compare(A,compare_floats,param_reader,param_is_ref=True):D=param_is_ref;C=param_reader;B=compare_floats;E=A.cols_dataset if D else C.cols_dataset;F=A.cols_dataset if not D else C.cols_dataset;G=A.cols_curve;I,H=B.compare_errors.add_group('node','txt cols');return compare(H,B,E,F,G)
|
|
81
82
|
def class_info(A):return{'cols':A.cols_dataset.names,'raw_lines_number':A.raw_lines_number,'curves':A.curves}
|
|
@@ -27,11 +27,11 @@ scilens/config/models/compare_float_thresholds.py,sha256=mHu48-70i3o_qUw6x-1A7Xe
|
|
|
27
27
|
scilens/config/models/execute.py,sha256=Hx3DoDJ0fq7bZruqwtPtSKL6PVOF_LpsaDCLrn5klLk,2325
|
|
28
28
|
scilens/config/models/execute_and_compare.py,sha256=TWL6yXGvQSaaV6nhHqWLvtr3v396APIoDNt0U1TbMro,582
|
|
29
29
|
scilens/config/models/file_reader.py,sha256=c18vKhVcBX4ufpbnCBJyVyAsQtlxpwx0lGVuf1i8EGA,1176
|
|
30
|
-
scilens/config/models/
|
|
31
|
-
scilens/config/models/reader_format_csv.py,sha256=
|
|
30
|
+
scilens/config/models/reader_format_cols.py,sha256=FBZYG1uord9XJlYAzYNEVuZgPp7Kz2UE2vkjQ1S3eUw,2259
|
|
31
|
+
scilens/config/models/reader_format_csv.py,sha256=XRgPaOzfCKXgt_1ZyyDmdHTKxcz8sOA6ZrHATdlnNps,1821
|
|
32
32
|
scilens/config/models/reader_format_netcdf.py,sha256=k-AMdm239T6I42R8jzyRlPKKJ8zkRrN8XS8yU6ZkFu0,1256
|
|
33
33
|
scilens/config/models/reader_format_txt.py,sha256=eHg90gwEI_VpqwqEjMRhwlS8dHcl5G4ow-37HjQq_zY,1168
|
|
34
|
-
scilens/config/models/reader_format_txt_fixed_cols.py,sha256=
|
|
34
|
+
scilens/config/models/reader_format_txt_fixed_cols.py,sha256=cbwj92QEHUX5xKC2E3PfIdjOAER4AmF_R_RP20gINmg,1246
|
|
35
35
|
scilens/config/models/readers.py,sha256=oWdE4AkckvwN6boln55orq3hUeAt6S9IdQAZkGROR6E,1657
|
|
36
36
|
scilens/config/models/report.py,sha256=6mzqZMJnS_z5Rs01ISo8L8HRcWvmiQrK0dYqu8a58vM,993
|
|
37
37
|
scilens/config/models/report_html.py,sha256=OU_df-IwopOILbWgNHImTtZf7Yhj_fsD0lpRQB8-bP8,3728
|
|
@@ -48,14 +48,14 @@ scilens/processors/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
|
48
48
|
scilens/processors/models/results.py,sha256=KoWxh13Zgi7PuPql8hkf4VjCis42ZxAuzIgJxBWVaX8,119
|
|
49
49
|
scilens/processors/processor_interface.py,sha256=jzMp1529JXnMGTJijVy6b_1zmARAMNv70f2lgys7vn4,452
|
|
50
50
|
scilens/readers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
scilens/readers/cols_dataset.py,sha256=
|
|
51
|
+
scilens/readers/cols_dataset.py,sha256=yEn2LzetCyoAXzEB490rMKnasGvZK8754wtA0Gw0-Mw,2446
|
|
52
52
|
scilens/readers/exceptions.py,sha256=JzmxcjnR5sH-IOWVeCC5A1bSwxv-jCAtIJvDjzx1CTI,32
|
|
53
53
|
scilens/readers/mat_dataset.py,sha256=Z9TYDWaH2aqdniLNDjlpR6VVNHMSARjh52clhdMyOn4,1496
|
|
54
|
-
scilens/readers/reader_csv.py,sha256=
|
|
54
|
+
scilens/readers/reader_csv.py,sha256=12KaY2tEcHfAE7M6ylPMMnW93qF18YwykPk6lE251DA,4180
|
|
55
55
|
scilens/readers/reader_interface.py,sha256=nnttHL7wt4MOXpi-SBkk8DYxVWscOPG8JFl_z12mIAo,922
|
|
56
56
|
scilens/readers/reader_manager.py,sha256=DFinxIk3IIIcB6JxybGcv-mXt3jhXgCwUtzR0TqhB2Q,2684
|
|
57
57
|
scilens/readers/reader_txt.py,sha256=WPsFunEA_idzAKkD3UJQbLnaOzG2U03P3gY4gphuIw0,3868
|
|
58
|
-
scilens/readers/reader_txt_fixed_cols.py,sha256=
|
|
58
|
+
scilens/readers/reader_txt_fixed_cols.py,sha256=PCgrVLBRhnb2R0cSp4GZongSyJDqfIZiFfwup7nxTfM,4206
|
|
59
59
|
scilens/readers/transform.py,sha256=kppfgPkXymF0qtquFivuosLVfF66L9bE-wGx-3bMHv8,307
|
|
60
60
|
scilens/report/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
61
|
scilens/report/assets/logo.svg,sha256=W-1OVqcvdBjf-1AHHcV6WciIUqBoVFUh52Tc3o_jqtA,4519
|
|
@@ -105,7 +105,7 @@ scilens/utils/template.py,sha256=9dlXX3nmfzDRUwzPJOkoxk15UXivZ2SW-McdCwokFa4,443
|
|
|
105
105
|
scilens/utils/time_tracker.py,sha256=DdVBoMpVLXrX0qZZXyLm4g38EwDVLlRcBqcpNex1mYY,545
|
|
106
106
|
scilens/utils/vectors.py,sha256=4N2BZSC5n3HgZqPujDGF5NdjVmSL1rOHb_qw4OoABQY,103
|
|
107
107
|
scilens/utils/web.py,sha256=MAFWpIFOKz7QhqDoFh-Qwstvc76KpcxstSgHFT8FOL4,901
|
|
108
|
-
scilens-0.3.
|
|
109
|
-
scilens-0.3.
|
|
110
|
-
scilens-0.3.
|
|
111
|
-
scilens-0.3.
|
|
108
|
+
scilens-0.3.14.dist-info/METADATA,sha256=3Wyexc7CQ4LFDhJPNhdMbGA244lCWZhV58_XjfG_m5I,1368
|
|
109
|
+
scilens-0.3.14.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
110
|
+
scilens-0.3.14.dist-info/entry_points.txt,sha256=DaKGgxUEUv34GJAoXtta6ecL37ercejep9sCSSRQK2s,48
|
|
111
|
+
scilens-0.3.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|