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.
@@ -1,8 +1,9 @@
1
- _A='(Valide seulement si la première ligne est les en-têtes)'
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."+_A+"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."+_A)
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.reader_format_cols_curve import ReaderColsCurveParserConfig
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)');curve_parser:ReaderColsCurveParserConfig|_A=Field(default=_A,description='Parseur de courbe à utiliser.');ignore_lines_patterns:list[str]|_A=Field(default=_A,description='Liste des patterns de lignes à ignorer. Ex: ["^#", "^//"]. Non applicable si `is_matrix` est vrai.');matrix:ReaderCsvMatrixConfig|_A=Field(default=_A,description='Configuration de la matrice. (Valide seulement si `is_matrix` est vrai)')
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.reader_format_cols_curve import ReaderColsCurveParserConfig
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.')
@@ -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.reader_format_cols_curve import ReaderCurveParserNameConfig
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
@@ -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.reader_format_cols_curve import ReaderCurveParserNameConfig
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 True,A
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;J=B.ignore_lines_patterns;A.raw_lines_number=_A;A.curves=_A;A.report_matrices=_A;D,F,P=csv_detect(A.origin.path,A.reader_options.delimiter,A.reader_options.quotechar,encoding=A.encoding);A.has_header=D;A.cols=F;A.numeric_col_indexes=P
24
- with open(A.origin.path,'r',encoding=A.encoding)as Q:
25
- K=Q.readlines();L=csv.reader(K,delimiter=A.reader_options.delimiter,quotechar=A.reader_options.quotechar)
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
- E=B.matrix or ReaderCsvMatrixConfig();G=mat_from_iterator(x_name=E.x_name,y_name=E.y_name,reader=L,has_header=D,x_value_line=E.x_value_line,has_y=E.has_y)
28
- if E.export_report:A.report_matrices=get_data([G],['csv'])
29
- A.mat_dataset=G;A.raw_lines_number=G.nb_lines+(1 if D else 0)
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
- M=len(F);C=ColsDataset(cols_count=M,names=F,numeric_col_indexes=A.numeric_col_indexes,data=[[]for A in range(M)]);H=0
35
- for(R,S)in zip(K,L):
36
- H+=1
37
- if D and H==1:continue
38
- if J:
39
- N=False
40
- for T in J:
41
- if bool(re.match(T,R)):N=True;break
42
- if N:continue
43
- for(O,I)in enumerate(S):
44
- if O in C.numeric_col_indexes:I=float(I)
45
- C.data[O].append(I)
46
- C.origin_line_nb.append(H)
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,U=cols_dataset_get_curves_col_x(C,B.curve_parser.parameters.x)
51
- if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=U,curves=A.curves)
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=True):
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.reader_format_cols_curve import ReaderCurveParserNameConfig
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(A,reader_options):
53
- B=reader_options;A.reader_options=B;E=A._get_parsed_headers(A.origin.path)if B.has_header else _A;I=open(A.origin.path,'r',encoding=A.encoding);C=[]
54
- if B.column_indexes or B.column_widths:
55
- if B.column_indexes and B.column_widths:raise Exception('column_indexes and column_widths are exclusive.')
56
- if B.column_widths:
57
- logging.debug(f"Using column widths: {B.column_widths}");H=0
58
- for J in B.column_widths:C+=[(H,H+J)];H+=J
59
- else:logging.debug(f"Using column indexes: {B.column_indexes}");C=B.column_indexes
60
- else:logging.debug(f"Using auto derived column indexes.");M=A._get_first_data_line(A.origin.path);C=A._discover_col_idx_ralgin_spaces(M)
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 K in I:
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 A._ignore_line(K):continue
69
+ if B._ignore_line(L):continue
69
70
  if E:
70
71
  if E.ori_line_idx==G-1:continue
71
- for(N,L)in enumerate(C):O=K[L[0]:L[1]].strip();P=string_2_float(O);D.data[N].append(P)
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();A.cols_dataset=D;A.raw_lines_number=G;A.curves=_A;A.cols_curve=_A
74
- if B.curve_parser:
75
- if B.curve_parser.name==ReaderCurveParserNameConfig.COL_X:
76
- A.curves,Q=cols_dataset_get_curves_col_x(D,B.curve_parser.parameters.x)
77
- if A.curves:A.cols_curve=ColsCurves(type=ReaderCurveParserNameConfig.COL_X,info=Q,curves=A.curves)
78
- elif B.curve_parser.name==ReaderCurveParserNameConfig.COLS_COUPLE:raise NotImplementedError('cols_couple not implemented')
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}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scilens
3
- Version: 0.3.13
3
+ Version: 0.3.14
4
4
  Summary: A CesGensLaB framework for data collecting and deep analysis
5
5
  Home-page: https://scilens.dev
6
6
  License: Proprietary
@@ -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/reader_format_cols_curve.py,sha256=eKLvifq1xuN8sPds9ijfru3vgMZ3Odv5tGfeiK4Sfk4,1860
31
- scilens/config/models/reader_format_csv.py,sha256=EQ1nCYsv6Cf4rtK3AUW5LbJakRcutdaNSl4UN634evs,1708
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=SQ84OW9BLc5mr_TC6gQuYzzHJvrU-sVz223WOtAQMc0,1133
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=C4N030_Iqq5KZVpQ0NVjAw4DctALuz_YBb6f6yi35Jk,2452
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=MXjGdNHm1i9phhYLeMuNFjCvxuIeZH_KNs6ni3a4nS8,3893
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=B7toE3G9KGcgD_p15jzGHOLGIKZ7KMmEQoTt6-4UtHo,4064
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.13.dist-info/METADATA,sha256=U2VI8vou4zNMseQ0f53-VOO13m5NL4vsJwzqJ_oUEaA,1368
109
- scilens-0.3.13.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
110
- scilens-0.3.13.dist-info/entry_points.txt,sha256=DaKGgxUEUv34GJAoXtta6ecL37ercejep9sCSSRQK2s,48
111
- scilens-0.3.13.dist-info/RECORD,,
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,,