dragon-ml-toolbox 19.8.2__tar.gz → 19.10.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.
Files changed (116) hide show
  1. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/LICENSE-THIRD-PARTY.md +0 -4
  2. {dragon_ml_toolbox-19.8.2/dragon_ml_toolbox.egg-info → dragon_ml_toolbox-19.10.0}/PKG-INFO +2 -20
  3. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/README.md +1 -13
  4. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0/dragon_ml_toolbox.egg-info}/PKG-INFO +2 -20
  5. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/dragon_ml_toolbox.egg-info/requires.txt +0 -8
  6. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_configuration.py +12 -7
  7. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_optimization.py +3 -5
  8. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_optimization_pareto.py +17 -3
  9. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_path_manager.py +55 -13
  10. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/optimization_tools.py +4 -0
  11. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/pyproject.toml +30 -13
  12. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/LICENSE +0 -0
  13. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/dragon_ml_toolbox.egg-info/SOURCES.txt +0 -0
  14. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/dragon_ml_toolbox.egg-info/dependency_links.txt +0 -0
  15. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/dragon_ml_toolbox.egg-info/top_level.txt +0 -0
  16. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ETL_cleaning.py +0 -0
  17. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ETL_engineering.py +0 -0
  18. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/GUI_tools.py +0 -0
  19. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/IO_tools.py +0 -0
  20. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/MICE_imputation.py +0 -0
  21. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_callbacks.py +0 -0
  22. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_chaining_inference.py +0 -0
  23. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_chaining_utilities.py +0 -0
  24. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_configuration.py +0 -0
  25. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_configuration_pytab.py +0 -0
  26. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_datasetmaster.py +0 -0
  27. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_evaluation.py +0 -0
  28. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_evaluation_captum.py +0 -0
  29. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_evaluation_multi.py +0 -0
  30. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_finalize_handler.py +0 -0
  31. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_inference.py +0 -0
  32. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_models.py +0 -0
  33. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_models_advanced.py +0 -0
  34. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_models_pytab.py +0 -0
  35. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_optimization.py +0 -0
  36. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_optimization_pareto.py +0 -0
  37. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_scaler.py +0 -0
  38. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_sequence_datasetmaster.py +0 -0
  39. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_sequence_evaluation.py +0 -0
  40. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_sequence_inference.py +0 -0
  41. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_sequence_models.py +0 -0
  42. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_trainer.py +0 -0
  43. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_utilities.py +0 -0
  44. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_vision_datasetmaster.py +0 -0
  45. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_vision_evaluation.py +0 -0
  46. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_vision_inference.py +0 -0
  47. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_vision_models.py +0 -0
  48. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ML_vision_transformers.py +0 -0
  49. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/PSO_optimization.py +0 -0
  50. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/SQL.py +0 -0
  51. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/VIF_factor.py +0 -0
  52. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/__init__.py +0 -0
  53. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ETL_cleaning.py +0 -0
  54. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ETL_engineering.py +0 -0
  55. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_GUI_tools.py +0 -0
  56. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_IO_tools.py +0 -0
  57. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_MICE_imputation.py +0 -0
  58. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_callbacks.py +0 -0
  59. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_chaining_inference.py +0 -0
  60. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_chaining_utilities.py +0 -0
  61. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_configuration_pytab.py +0 -0
  62. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_datasetmaster.py +0 -0
  63. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_evaluation.py +0 -0
  64. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_evaluation_captum.py +0 -0
  65. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_evaluation_multi.py +0 -0
  66. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_finalize_handler.py +0 -0
  67. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_inference.py +0 -0
  68. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_models.py +0 -0
  69. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_models_advanced.py +0 -0
  70. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_models_pytab.py +0 -0
  71. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_scaler.py +0 -0
  72. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_sequence_datasetmaster.py +0 -0
  73. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_sequence_evaluation.py +0 -0
  74. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_sequence_inference.py +0 -0
  75. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_sequence_models.py +0 -0
  76. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_trainer.py +0 -0
  77. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_utilities.py +0 -0
  78. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_vision_datasetmaster.py +0 -0
  79. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_vision_evaluation.py +0 -0
  80. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_vision_inference.py +0 -0
  81. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_vision_models.py +0 -0
  82. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ML_vision_transformers.py +0 -0
  83. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_PSO_optimization.py +0 -0
  84. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_SQL.py +0 -0
  85. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_VIF_factor.py +0 -0
  86. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/__init__.py +0 -0
  87. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_data_exploration.py +0 -0
  88. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ensemble_evaluation.py +0 -0
  89. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ensemble_inference.py +0 -0
  90. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_ensemble_learning.py +0 -0
  91. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_excel_handler.py +0 -0
  92. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_keys.py +0 -0
  93. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_logger.py +0 -0
  94. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_math_utilities.py +0 -0
  95. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_models_advanced_base.py +0 -0
  96. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_models_advanced_helpers.py +0 -0
  97. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_optimization_tools.py +0 -0
  98. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_plot_fonts.py +0 -0
  99. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_schema.py +0 -0
  100. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_script_info.py +0 -0
  101. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_serde.py +0 -0
  102. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/_core/_utilities.py +0 -0
  103. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/constants.py +0 -0
  104. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/data_exploration.py +0 -0
  105. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ensemble_evaluation.py +0 -0
  106. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ensemble_inference.py +0 -0
  107. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/ensemble_learning.py +0 -0
  108. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/excel_handler.py +0 -0
  109. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/keys.py +0 -0
  110. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/math_utilities.py +0 -0
  111. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/path_manager.py +0 -0
  112. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/plot_fonts.py +0 -0
  113. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/schema.py +0 -0
  114. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/serde.py +0 -0
  115. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/ml_tools/utilities.py +0 -0
  116. {dragon_ml_toolbox-19.8.2 → dragon_ml_toolbox-19.10.0}/setup.cfg +0 -0
@@ -31,13 +31,9 @@ This project depends on the following third-party packages. Each is governed by
31
31
  - [colorlog](https://github.com/borntyping/python-colorlog/blob/main/LICENSE)
32
32
  - [evotorch](https://github.com/nnaisense/evotorch/blob/master/LICENSE)
33
33
  - [FreeSimpleGUI](https://github.com/spyoungtech/FreeSimpleGUI/blob/main/license.txt)
34
- - [nuitka](https://github.com/Nuitka/Nuitka/blob/main/LICENSE.txt)
35
34
  - [omegaconf](https://github.com/omry/omegaconf/blob/master/LICENSE)
36
- - [ordered-set](https://github.com/rspeer/ordered-set/blob/master/MIT-LICENSE)
37
- - [pyinstaller](https://github.com/pyinstaller/pyinstaller/blob/develop/COPYING.txt)
38
35
  - [pytorch_tabular](https://github.com/manujosephv/pytorch_tabular/blob/main/LICENSE)
39
36
  - [torchmetrics](https://github.com/Lightning-AI/torchmetrics/blob/master/LICENSE)
40
- - [zstandard](https://github.com/indygreg/python-zstandard/blob/main/LICENSE)
41
37
  - [captum](https://github.com/meta-pytorch/captum/blob/master/LICENSE)
42
38
  - [node](https://github.com/Qwicen/node/blob/master/LICENSE.md)
43
39
  - [pytorch-widedeep](https://github.com/jrzaurin/pytorch-widedeep?tab=readme-ov-file#license)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dragon-ml-toolbox
3
- Version: 19.8.2
3
+ Version: 19.10.0
4
4
  Summary: Complete pipelines and helper tools for data science and machine learning projects.
5
5
  Author-email: Karl Luigi Loza Vidaurre <luigiloza@gmail.com>
6
6
  License-Expression: MIT
@@ -90,12 +90,6 @@ Provides-Extra: gui-torch
90
90
  Requires-Dist: numpy<2.0; extra == "gui-torch"
91
91
  Requires-Dist: torch; extra == "gui-torch"
92
92
  Requires-Dist: FreeSimpleGUI>=5.2; extra == "gui-torch"
93
- Provides-Extra: pyinstaller
94
- Requires-Dist: pyinstaller; extra == "pyinstaller"
95
- Provides-Extra: nuitka
96
- Requires-Dist: nuitka; extra == "nuitka"
97
- Requires-Dist: zstandard; extra == "nuitka"
98
- Requires-Dist: ordered-set; extra == "nuitka"
99
93
  Dynamic: license-file
100
94
 
101
95
  # dragon-ml-toolbox
@@ -137,7 +131,7 @@ conda install -c conda-forge dragon-ml-toolbox
137
131
 
138
132
  ## Modular Installation
139
133
 
140
- This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies, except APP bundlers (PyInstaller/Nuitka).
134
+ This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies.
141
135
 
142
136
  - Rule: Create a fresh virtual environment for each module to use.
143
137
 
@@ -330,18 +324,6 @@ schema
330
324
 
331
325
  ---
332
326
 
333
- ### ⚒️ APP bundlers
334
-
335
- Dependencies required to compile applications, inference scripts, or GUIs into standalone executables (`.exe` or binary) for distribution. Choose your preferred backend:
336
-
337
- ```Bash
338
- pip install "dragon-ml-toolbox[pyinstaller]"
339
- ```
340
-
341
- ```Bash
342
- pip install "dragon-ml-toolbox[nuitka]"
343
- ```
344
-
345
327
  ## Usage
346
328
 
347
329
  After installation, import modules like this:
@@ -37,7 +37,7 @@ conda install -c conda-forge dragon-ml-toolbox
37
37
 
38
38
  ## Modular Installation
39
39
 
40
- This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies, except APP bundlers (PyInstaller/Nuitka).
40
+ This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies.
41
41
 
42
42
  - Rule: Create a fresh virtual environment for each module to use.
43
43
 
@@ -230,18 +230,6 @@ schema
230
230
 
231
231
  ---
232
232
 
233
- ### ⚒️ APP bundlers
234
-
235
- Dependencies required to compile applications, inference scripts, or GUIs into standalone executables (`.exe` or binary) for distribution. Choose your preferred backend:
236
-
237
- ```Bash
238
- pip install "dragon-ml-toolbox[pyinstaller]"
239
- ```
240
-
241
- ```Bash
242
- pip install "dragon-ml-toolbox[nuitka]"
243
- ```
244
-
245
233
  ## Usage
246
234
 
247
235
  After installation, import modules like this:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dragon-ml-toolbox
3
- Version: 19.8.2
3
+ Version: 19.10.0
4
4
  Summary: Complete pipelines and helper tools for data science and machine learning projects.
5
5
  Author-email: Karl Luigi Loza Vidaurre <luigiloza@gmail.com>
6
6
  License-Expression: MIT
@@ -90,12 +90,6 @@ Provides-Extra: gui-torch
90
90
  Requires-Dist: numpy<2.0; extra == "gui-torch"
91
91
  Requires-Dist: torch; extra == "gui-torch"
92
92
  Requires-Dist: FreeSimpleGUI>=5.2; extra == "gui-torch"
93
- Provides-Extra: pyinstaller
94
- Requires-Dist: pyinstaller; extra == "pyinstaller"
95
- Provides-Extra: nuitka
96
- Requires-Dist: nuitka; extra == "nuitka"
97
- Requires-Dist: zstandard; extra == "nuitka"
98
- Requires-Dist: ordered-set; extra == "nuitka"
99
93
  Dynamic: license-file
100
94
 
101
95
  # dragon-ml-toolbox
@@ -137,7 +131,7 @@ conda install -c conda-forge dragon-ml-toolbox
137
131
 
138
132
  ## Modular Installation
139
133
 
140
- This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies, except APP bundlers (PyInstaller/Nuitka).
134
+ This toolbox is designed as a collection of mutually exclusive environments due to conflicting core dependencies.
141
135
 
142
136
  - Rule: Create a fresh virtual environment for each module to use.
143
137
 
@@ -330,18 +324,6 @@ schema
330
324
 
331
325
  ---
332
326
 
333
- ### ⚒️ APP bundlers
334
-
335
- Dependencies required to compile applications, inference scripts, or GUIs into standalone executables (`.exe` or binary) for distribution. Choose your preferred backend:
336
-
337
- ```Bash
338
- pip install "dragon-ml-toolbox[pyinstaller]"
339
- ```
340
-
341
- ```Bash
342
- pip install "dragon-ml-toolbox[nuitka]"
343
- ```
344
-
345
327
  ## Usage
346
328
 
347
329
  After installation, import modules like this:
@@ -80,14 +80,6 @@ shap
80
80
  colorlog
81
81
  pyarrow
82
82
 
83
- [nuitka]
84
- nuitka
85
- zstandard
86
- ordered-set
87
-
88
83
  [py-tab]
89
84
  omegaconf
90
85
  pytorch_tabular
91
-
92
- [pyinstaller]
93
- pyinstaller
@@ -6,7 +6,7 @@ import numpy as np
6
6
  from ._schema import FeatureSchema
7
7
  from ._script_info import _script_info
8
8
  from ._logger import get_logger
9
- from ._path_manager import sanitize_filename
9
+ from ._path_manager import sanitize_filename, make_fullpath
10
10
  from ._keys import MLTaskKeys
11
11
 
12
12
 
@@ -701,11 +701,11 @@ class DragonParetoConfig(_BaseModelParams):
701
701
  def __init__(self,
702
702
  save_directory: Union[str, Path],
703
703
  target_objectives: Dict[str, Literal["min", "max"]],
704
- continuous_bounds_map: Union[Dict[str, Tuple[float, float]], Dict[str, List[float]]],
704
+ continuous_bounds_map: Union[Dict[str, Tuple[float, float]], Dict[str, List[float]], str, Path],
705
705
  columns_to_round: Optional[List[str]] = None,
706
- population_size: int = 400,
706
+ population_size: int = 500,
707
707
  generations: int = 1000,
708
- solutions_filename: str = "ParetoSolutions",
708
+ solutions_filename: str = "NonDominatedSolutions",
709
709
  float_precision: int = 4,
710
710
  log_interval: int = 10,
711
711
  plot_size: Tuple[int, int] = (10, 7),
@@ -718,7 +718,7 @@ class DragonParetoConfig(_BaseModelParams):
718
718
  save_directory (str | Path): Directory to save artifacts.
719
719
  target_objectives (Dict[str, "min"|"max"]): Dictionary mapping target names to optimization direction.
720
720
  Example: {"price": "max", "error": "min"}
721
- continuous_bounds_map (Dict): Bounds for continuous features {name: (min, max)}.
721
+ continuous_bounds_map (Dict): Bounds for continuous features {name: (min, max)}. Or a path/str to a directory containing the "optimization_bounds.json" file.
722
722
  columns_to_round (List[str] | None): List of continuous column names that should be rounded to the nearest integer.
723
723
  population_size (int): Size of the genetic population.
724
724
  generations (int): Number of generations to run.
@@ -729,7 +729,13 @@ class DragonParetoConfig(_BaseModelParams):
729
729
  plot_font_size (int): Font size for plot text.
730
730
  discretize_start_at_zero (bool): Categorical encoding start index. True=0, False=1.
731
731
  """
732
- self.save_directory = save_directory
732
+ # Validate string or Path
733
+ valid_save_dir = make_fullpath(save_directory, make=True, enforce="directory")
734
+
735
+ if isinstance(continuous_bounds_map, (str, Path)):
736
+ continuous_bounds_map = make_fullpath(continuous_bounds_map, make=False, enforce="directory")
737
+
738
+ self.save_directory = valid_save_dir
733
739
  self.target_objectives = target_objectives
734
740
  self.continuous_bounds_map = continuous_bounds_map
735
741
  self.columns_to_round = columns_to_round
@@ -742,7 +748,6 @@ class DragonParetoConfig(_BaseModelParams):
742
748
  self.plot_font_size = plot_font_size
743
749
  self.discretize_start_at_zero = discretize_start_at_zero
744
750
 
745
-
746
751
  # ----------------------------
747
752
  # Metrics Configurations
748
753
  # ----------------------------
@@ -44,12 +44,10 @@ class DragonOptimizer:
44
44
  SNES and CEM algorithms do not accept bounds, the given bounds will be used as an initial starting point.
45
45
 
46
46
  Example:
47
- >>> # 1. Get the final schema from data exploration
48
- >>> schema = data_exploration.finalize_feature_schema(...)
49
- >>> # 2. Define bounds for continuous features
47
+ >>> # 1. Define bounds for continuous features
50
48
  >>> cont_bounds = {'feature_A': (0, 100), 'feature_B': (-10, 10)}
51
49
  >>>
52
- >>> # 3. Initialize the optimizer
50
+ >>> # 2. Initialize the optimizer
53
51
  >>> optimizer = DragonOptimizer(
54
52
  ... inference_handler=my_handler,
55
53
  ... schema=schema,
@@ -58,7 +56,7 @@ class DragonOptimizer:
58
56
  ... task="max",
59
57
  ... algorithm="Genetic",
60
58
  ... )
61
- >>> # 4. Run the optimization
59
+ >>> # 3. Run the optimization
62
60
  >>> best_result = optimizer.run(
63
61
  ... num_generations=100,
64
62
  ... save_dir="/path/to/results",
@@ -7,7 +7,7 @@ import matplotlib.cm as cm
7
7
  from matplotlib.collections import LineCollection
8
8
  import seaborn as sns
9
9
  from pathlib import Path
10
- from typing import Literal, Union, Tuple, List, Optional, Dict
10
+ from typing import Literal, Union, List, Optional, Dict
11
11
  from tqdm import tqdm
12
12
  import plotly.express as px
13
13
  import plotly.graph_objects as go
@@ -21,7 +21,7 @@ from ._SQL import DragonSQL
21
21
  from ._ML_inference import DragonInferenceHandler
22
22
  from ._ML_chaining_inference import DragonChainInference
23
23
  from ._ML_configuration import DragonParetoConfig
24
- from ._optimization_tools import create_optimization_bounds, plot_optimal_feature_distributions_from_dataframe
24
+ from ._optimization_tools import create_optimization_bounds, plot_optimal_feature_distributions_from_dataframe, load_continuous_bounds_template
25
25
  from ._math_utilities import discretize_categorical_values
26
26
  from ._utilities import save_dataframe_filename
27
27
  from ._IO_tools import save_json
@@ -107,6 +107,10 @@ class DragonParetoOptimizer:
107
107
  _LOGGER.error(f"Target '{name}' not found in model targets: {available_targets}")
108
108
  raise ValueError()
109
109
 
110
+ if direction not in ["min" , "max"]:
111
+ _LOGGER.error(f"Invalid optimization direction '{direction}' for target '{name}'. Use 'min' or 'max'.")
112
+ raise ValueError()
113
+
110
114
  # For standard handlers, we need indices to slice the output tensor.
111
115
  # For chain handlers, we just rely on name matching, but we track index for consistency.
112
116
  idx = available_targets.index(name)
@@ -117,10 +121,20 @@ class DragonParetoOptimizer:
117
121
  _LOGGER.info(f"Pareto Optimization setup for: {self.ordered_target_names}")
118
122
 
119
123
  # --- 2. Bounds Setup ---
124
+ # check type
125
+ raw_bounds_map = config.continuous_bounds_map
126
+ if isinstance(raw_bounds_map, (str, Path)):
127
+ continuous_bounds = load_continuous_bounds_template(raw_bounds_map)
128
+ elif isinstance(raw_bounds_map, dict):
129
+ continuous_bounds = raw_bounds_map
130
+ else:
131
+ _LOGGER.error(f"Invalid type for 'continuous_bounds_map' in config. Expected dict or Path. Got {type(raw_bounds_map)}.")
132
+ raise ValueError()
133
+
120
134
  # Uses the external tool which reads the schema to set correct bounds for both continuous and categorical
121
135
  bounds = create_optimization_bounds(
122
136
  schema=schema,
123
- continuous_bounds_map=config.continuous_bounds_map,
137
+ continuous_bounds_map=continuous_bounds,
124
138
  start_at_zero=self.discretize_start_at_zero
125
139
  )
126
140
  self.lower_bounds = list(bounds[0])
@@ -35,7 +35,8 @@ class DragonPathManager:
35
35
  def __init__(
36
36
  self,
37
37
  anchor_file: str,
38
- base_directories: Optional[List[str]] = None
38
+ base_directories: Optional[List[str]] = None,
39
+ strict_to_root: bool = True
39
40
  ):
40
41
  """
41
42
  Sets up the core paths for a project by anchoring to a specific file.
@@ -53,14 +54,16 @@ class DragonPathManager:
53
54
  where each string is the name
54
55
  of a subdirectory to register
55
56
  relative to the package root.
57
+ strict_to_root (bool): If True, checks that all registered paths are defined within the package ROOT.
56
58
  """
57
59
  resolved_anchor_path = Path(anchor_file).resolve()
58
60
  self._package_name = resolved_anchor_path.parent.name
59
61
  self._is_bundled, bundle_root = self._get_bundle_root()
60
62
  self._paths: Dict[str, Path] = {}
63
+ self._strict_to_root = strict_to_root
61
64
 
62
65
  if self._is_bundled:
63
- # In a PyInstaller bundle, the package is inside the temp _MEIPASS dir
66
+ # In a PyInstaller/Nuitka bundle, the package is inside the temp _MEIPASS dir
64
67
  package_root = Path(bundle_root) / self._package_name # type: ignore
65
68
  else:
66
69
  # In dev mode, the package root is the directory containing the anchor file.
@@ -182,17 +185,44 @@ class DragonPathManager:
182
185
  """
183
186
  Checks the status of all registered paths on the filesystem and prints a formatted report.
184
187
  """
185
- report = {}
186
- for key, path in self.items():
188
+ # 1. Gather Data and determine max widths
189
+ rows = []
190
+ max_key_len = len("Key") # Start with header width
191
+
192
+ # Sort by key for readability
193
+ for key, path in sorted(self.items()):
187
194
  if path.is_dir():
188
- report[key] = "📁 Directory"
195
+ stat_msg = "📁 Directory"
189
196
  elif path.is_file():
190
- report[key] = "📄 File"
197
+ stat_msg = "📄 File"
198
+ elif not path.exists():
199
+ stat_msg = "❌ Not Found"
191
200
  else:
192
- report[key] = " Not Found"
201
+ stat_msg = " Unknown"
202
+
203
+ rows.append((key, stat_msg, str(path)))
204
+ max_key_len = max(max_key_len, len(key))
193
205
 
194
- print("\n--- Path Status Report ---")
195
- pprint(report)
206
+ # 2. Print Header
207
+ mode_icon = "📦" if self._is_bundled else "🛠️"
208
+ mode_text = "Bundled Mode" if self._is_bundled else "Development Mode"
209
+
210
+ print(f"\n{'-'*80}")
211
+ print(f" 🐉 DragonPathManager Status Report")
212
+ print(f" Context: {mode_icon} {mode_text}")
213
+ print(f" Root: {self.ROOT}")
214
+ print(f"{'-'*80}")
215
+
216
+ # 3. Print Table Header
217
+ # {variable:<width} aligns text to the left within the padding
218
+ print(f" {'Key':<{max_key_len}} | {'Status':<12} | Path")
219
+ print(f" {'-'*max_key_len} | {'-'*12} | {'-'*40}")
220
+
221
+ # 4. Print Rows
222
+ for key, stat, p_str in rows:
223
+ print(f" {key:<{max_key_len}} | {stat:<12} | {p_str}")
224
+
225
+ print(f"{'-'*80}\n")
196
226
 
197
227
  def __repr__(self) -> str:
198
228
  """Provides a string representation of the stored paths."""
@@ -276,10 +306,22 @@ class DragonPathManager:
276
306
 
277
307
  if not isinstance(value, (str, Path)):
278
308
  _LOGGER.error(f"Cannot assign type '{type(value).__name__}' to a path. Must be str or Path.")
279
- raise TypeError
280
-
281
- # If all checks pass, treat it as a public path and store it in the _paths dictionary.
282
- self._paths[sanitized_name] = Path(value)
309
+ raise TypeError()
310
+
311
+ # Resolve the new path
312
+ new_path = Path(value).expanduser().absolute()
313
+
314
+ # --- STRICT CHECK ---
315
+ # Only check if strict mode is on
316
+ if self.__dict__.get("_strict_to_root", False) and sanitized_name != "ROOT":
317
+ root_path = self._paths.get("ROOT")
318
+ # Ensure ROOT exists and the new path is inside it
319
+ if root_path and not new_path.is_relative_to(root_path):
320
+ _LOGGER.error(f"Strict Mode Violation: '{name}' ({new_path}) is outside ROOT ({root_path})")
321
+ raise ValueError()
322
+
323
+ # Store absolute Path.
324
+ self._paths[sanitized_name] = new_path
283
325
 
284
326
 
285
327
  def make_fullpath(
@@ -1,4 +1,6 @@
1
1
  from ._core._optimization_tools import (
2
+ make_continuous_bounds_template,
3
+ load_continuous_bounds_template,
2
4
  create_optimization_bounds,
3
5
  parse_lower_upper_bounds,
4
6
  plot_optimal_feature_distributions,
@@ -7,6 +9,8 @@ from ._core._optimization_tools import (
7
9
  )
8
10
 
9
11
  __all__ = [
12
+ "make_continuous_bounds_template",
13
+ "load_continuous_bounds_template",
10
14
  "create_optimization_bounds",
11
15
  "parse_lower_upper_bounds",
12
16
  "plot_optimal_feature_distributions",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dragon-ml-toolbox"
3
- version = "19.8.2"
3
+ version = "19.10.0"
4
4
  description = "Complete pipelines and helper tools for data science and machine learning projects."
5
5
  authors = [
6
6
  { name = "Karl Luigi Loza Vidaurre", email = "luigiloza@gmail.com" }
@@ -127,24 +127,13 @@ gui-boost = [
127
127
  ]
128
128
 
129
129
  # GUI for Pytorch
130
- # Optional: Pil / Torchvision / matplotlib / seaborn
130
+ # Optional: Pillow / Torchvision / matplotlib / seaborn
131
131
  gui-torch = [
132
132
  "numpy<2.0",
133
133
  "torch",
134
134
  "FreeSimpleGUI>=5.2",
135
135
  ]
136
136
 
137
- # APP Bundlers - Choose one
138
- pyinstaller = [
139
- "pyinstaller"
140
- ]
141
-
142
- nuitka = [
143
- "nuitka",
144
- "zstandard",
145
- "ordered-set"
146
- ]
147
-
148
137
  [build-system]
149
138
  requires = ["setuptools>=61.0"]
150
139
  build-backend = "setuptools.build_meta"
@@ -156,3 +145,31 @@ build-backend = "setuptools.build_meta"
156
145
  where = ["."]
157
146
  include = ["ml_tools*"]
158
147
  namespaces = false
148
+
149
+ [dependency-groups]
150
+ dev = [
151
+ "captum>=0.8.0",
152
+ "colorlog>=6.10.1",
153
+ "evotorch>=0.6.1",
154
+ "freesimplegui>=5.2",
155
+ "ipykernel>=7.1.0",
156
+ "ipython>=9.8.0",
157
+ "ipywidgets>=8.1.8",
158
+ "joblib>=1.5.2",
159
+ "jupyterlab>=4.5.0",
160
+ "matplotlib>=3.10.8",
161
+ "notebook>=7.5.0",
162
+ "numpy<2.0",
163
+ "openpyxl>=3.1.5",
164
+ "pandas>=2.3.3",
165
+ "pillow>=12.0.0",
166
+ "plotly>=6.5.0",
167
+ "polars>=1.0",
168
+ "pyarrow>=22.0.0",
169
+ "scikit-learn>=1.7.2",
170
+ "seaborn>=0.13.2",
171
+ "shap>=0.49.1",
172
+ "torch>=2.9.1",
173
+ "torchmetrics>=1.5.2",
174
+ "tqdm>=4.67.1",
175
+ ]