lecrapaud 0.13.0__py3-none-any.whl → 0.14.0__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.

Potentially problematic release.


This version of lecrapaud might be problematic. Click here for more details.

lecrapaud/config.py CHANGED
@@ -33,3 +33,4 @@ DB_URI = (
33
33
  OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
34
34
  LECRAPAUD_LOGFILE = os.getenv("LECRAPAUD_LOGFILE")
35
35
  LECRAPAUD_LOCAL = os.getenv("LECRAPAUD_LOCAL", False)
36
+ LECRAPAUD_TABLE_PREFIX = os.getenv("LECRAPAUD_TABLE_PREFIX", "lecrapaud")
@@ -10,6 +10,7 @@ from sqlalchemy.orm.attributes import InstrumentedAttribute
10
10
  from lecrapaud.db.session import get_db
11
11
  from sqlalchemy.ext.declarative import declared_attr
12
12
  from sqlalchemy.dialects.mysql import insert as mysql_insert
13
+ from lecrapaud.config import LECRAPAUD_TABLE_PREFIX
13
14
 
14
15
 
15
16
  def with_db(func):
@@ -46,13 +47,13 @@ class Base(DeclarativeBase):
46
47
  # If the model sets __tablename__, use it (with prefix if not present)
47
48
  if "__tablename__" in cls.__dict__:
48
49
  base_name = cls.__dict__["__tablename__"]
49
- if not base_name.startswith("lecrapaud_"):
50
- return f"lecrapaud_{base_name}"
50
+ if not base_name.startswith(f"{LECRAPAUD_TABLE_PREFIX}_"):
51
+ return f"{LECRAPAUD_TABLE_PREFIX}_{base_name}"
51
52
  return base_name
52
53
  # Otherwise, generate from class name
53
54
  snake = camel_to_snake(cls.__name__)
54
55
  plural = pluralize(snake)
55
- return f"lecrapaud_{plural}"
56
+ return f"{LECRAPAUD_TABLE_PREFIX}_{plural}"
56
57
 
57
58
  @classmethod
58
59
  @with_db
@@ -526,6 +526,7 @@ class PreprocessFeature:
526
526
 
527
527
  pcas_dict = {}
528
528
  for column in columns:
529
+ column = column.upper()
529
530
  # Convert text to embeddings if necessary
530
531
  if not isinstance(df[column].iloc[0], (np.ndarray, list)):
531
532
  sentences = df[column].astype(str).tolist()
@@ -581,10 +582,10 @@ class PreprocessFeature:
581
582
  Returns:
582
583
  tuple: (transformed DataFrame, ColumnTransformer)
583
584
  """
584
- columns_onehot: list[str] = self.columns_onehot
585
- columns_binary: list[str] = self.columns_binary
586
- columns_ordinal: list[str] = self.columns_ordinal
587
- columns_frequency: list[str] = self.columns_frequency
585
+ columns_onehot: list[str] = [col.upper() for col in self.columns_onehot]
586
+ columns_binary: list[str] = [col.upper() for col in self.columns_binary]
587
+ columns_ordinal: list[str] = [col.upper() for col in self.columns_ordinal]
588
+ columns_frequency: list[str] = [col.upper() for col in self.columns_frequency]
588
589
 
589
590
  X = df.loc[:, ~df.columns.str.contains("^TARGET_")]
590
591
  y = df.loc[:, df.columns.str.contains("^TARGET_")]
@@ -1000,7 +1000,8 @@ class ModelSelectionEngine:
1000
1000
 
1001
1001
  logger.info(f"👉 {model.model_name} scores on test set:")
1002
1002
  for metric, value in best_score.items():
1003
- logger.info(f" {metric}: {value:.4f}")
1003
+ if isinstance(value, (int, float)):
1004
+ logger.info(f" {metric}: {value:.4f}")
1004
1005
 
1005
1006
  # Save predictions
1006
1007
  best_pred.to_csv(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: lecrapaud
3
- Version: 0.13.0
3
+ Version: 0.14.0
4
4
  Summary: Framework for machine and deep learning, with regression, classification and time series analysis
5
5
  License: Apache License
6
6
  Author: Pierre H. Gallet
@@ -1,6 +1,6 @@
1
1
  lecrapaud/__init__.py,sha256=oCxbtw_nk8rlOXbXbWo0RRMlsh6w-hTiZ6e5PRG_wp0,28
2
2
  lecrapaud/api.py,sha256=K5eM5dXtU8DGH6je7Ai60hOgycXUAIVE1OvMh3Qvh5c,19541
3
- lecrapaud/config.py,sha256=eYnrktVq457xMIMGcUSilJdNxCsaGP_gRAlzCSwd6Vo,1047
3
+ lecrapaud/config.py,sha256=N8kQS1bNEXp6loIw7_X2_OjrbY4_a7UZhZcT1XgsYAs,1121
4
4
  lecrapaud/db/__init__.py,sha256=82o9fMfaqKXPh2_rt44EzNRVZV1R4LScEnQYvj_TjK0,34
5
5
  lecrapaud/db/alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
6
6
  lecrapaud/db/alembic/env.py,sha256=0VdxHNIxhPCgUHnx6EwlVZLUMLlbqZ_eV7i0Ho2XqeI,2337
@@ -11,7 +11,7 @@ lecrapaud/db/alembic/versions/2025_06_24_1711-86457e2f333f_.py,sha256=dl6tfvcqEr
11
11
  lecrapaud/db/alembic/versions/2025_06_25_1759-72aa496ca65b_.py,sha256=sBgPLvvqI_HmPqQ0Kime1ZL1AHSeuYJHlmFJOnXWeuU,835
12
12
  lecrapaud/db/alembic.ini,sha256=TXrZB4pWVLn2EUg867yp6paA_19vGeirO95mTPA3nbs,3699
13
13
  lecrapaud/db/models/__init__.py,sha256=Lhyw9fVLdom0Fc6yIP-ip8FjkU1EwVwjae5q2VM815Q,740
14
- lecrapaud/db/models/base.py,sha256=CYtof_UjFwX3C7XUifequh_UtLHJ25bU7LCwT501uGE,7508
14
+ lecrapaud/db/models/base.py,sha256=J9ew-0z_-tnWAwhVvOmVDys2R6jPF_oSca_ny6wpXQE,7606
15
15
  lecrapaud/db/models/experiment.py,sha256=IeS-TWPT-4l9xCMIdR2S2O-foXNt3Ru6WmtPMWToK7c,4035
16
16
  lecrapaud/db/models/feature.py,sha256=5o77O2FyRObnLOCGNj8kaPSGM3pLv1Ov6mXXHYkmnYY,1136
17
17
  lecrapaud/db/models/feature_selection.py,sha256=nXy_Lg3uDxid71vYll_qzdo8ajYsJEXskI7vLQ3uyW0,3315
@@ -24,7 +24,7 @@ lecrapaud/db/models/target.py,sha256=DKnfeaLU8eT8J_oh_vuFo5-o1CaoXR13xBbswme6Bgk
24
24
  lecrapaud/db/session.py,sha256=K9dTyXmO-aF_2r9RRHsDsbW9_zLNDaOcchXlpiv7cSo,2719
25
25
  lecrapaud/directories.py,sha256=0LrANuDgbuneSLker60c6q2hmGnQ3mKHIztTGzTx6Gw,826
26
26
  lecrapaud/experiment.py,sha256=FSj5RUQsRdFpiK0iSyRBLRZQMlKJLQbS52cFoAVxoMk,2553
27
- lecrapaud/feature_engineering.py,sha256=2Er29SxHRIdzwxcEjk-2UI-MxQNVBPdTzlTemZ8bqYg,32193
27
+ lecrapaud/feature_engineering.py,sha256=VQdryTbSaiVr7T-0ChGXobVv9d6LNe1xs5jV2NgWDcw,32329
28
28
  lecrapaud/feature_selection.py,sha256=u3TWq3G5Xh3geQevGDOZEt_rl_m6-K_CR7SttFtpwKw,43409
29
29
  lecrapaud/integrations/openai_integration.py,sha256=hHLF3fk5Bps8KNbNrEL3NUFa945jwClE6LrLpuMZOd4,7459
30
30
  lecrapaud/jobs/__init__.py,sha256=ZkrsyTOR21c_wN7RY8jPhm8jCrL1oCEtTsf3VFIlQiE,292
@@ -35,10 +35,10 @@ lecrapaud/misc/tabpfn_tests.ipynb,sha256=VkgsCUJ30d8jaL2VaWtQAgb8ngHPNtPgnXLs7QQ
35
35
  lecrapaud/misc/test-gpu-bilstm.ipynb,sha256=4nLuZRJVe2kn6kEmauhRiz5wkWT9AVrYhI9CEk_dYUY,9608
36
36
  lecrapaud/misc/test-gpu-resnet.ipynb,sha256=27Vu7nYwujYeh3fOxBNCnKJn3MXNPKZU-U8oDDUbymg,4944
37
37
  lecrapaud/misc/test-gpu-transformers.ipynb,sha256=k6MBSs_Um1h4PykvE-LTBcdpbWLbIFST_xl_AFW2jgI,8444
38
- lecrapaud/model_selection.py,sha256=S16Zc6PxyNx-HrB_5JucCijFMDAjZlHiHPrl7mer4Cw,67517
38
+ lecrapaud/model_selection.py,sha256=Sv-VJaYvYjZUV2lq0vIKUxcp9PVrdm4IE18RG3RSvsw,67577
39
39
  lecrapaud/search_space.py,sha256=-JkzuMhaomdwiWi4HvVQY5hiw3-oREemJA16tbwEIp4,34854
40
40
  lecrapaud/utils.py,sha256=JdBB1NvbNIx4y0Una-kSZdo1_ZEocc5hwyYFIZKHmGg,8305
41
- lecrapaud-0.13.0.dist-info/LICENSE,sha256=MImCryu0AnqhJE_uAZD-PIDKXDKb8sT7v0i1NOYeHTM,11350
42
- lecrapaud-0.13.0.dist-info/METADATA,sha256=OhgqiesFiciX8XtyC_wXTRPcWlWwCwGUuC1zVpoWIOI,11016
43
- lecrapaud-0.13.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
44
- lecrapaud-0.13.0.dist-info/RECORD,,
41
+ lecrapaud-0.14.0.dist-info/LICENSE,sha256=MImCryu0AnqhJE_uAZD-PIDKXDKb8sT7v0i1NOYeHTM,11350
42
+ lecrapaud-0.14.0.dist-info/METADATA,sha256=75neMeoQVhhSF7JEgcDDmb5P5Qn28scULuDayUgpsMU,11016
43
+ lecrapaud-0.14.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
44
+ lecrapaud-0.14.0.dist-info/RECORD,,