nexilis 1.0.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 (450) hide show
  1. nexilis-1.0.0/CHANGELOG.md +59 -0
  2. nexilis-1.0.0/LICENSE +21 -0
  3. nexilis-1.0.0/MANIFEST.in +39 -0
  4. nexilis-1.0.0/PKG-INFO +348 -0
  5. nexilis-1.0.0/README.md +250 -0
  6. nexilis-1.0.0/VERSION +1 -0
  7. nexilis-1.0.0/pyproject.toml +273 -0
  8. nexilis-1.0.0/setup.cfg +4 -0
  9. nexilis-1.0.0/src/nexilis/__init__.py +206 -0
  10. nexilis-1.0.0/src/nexilis/api/__init__.py +20 -0
  11. nexilis-1.0.0/src/nexilis/api/dag/__init__.py +28 -0
  12. nexilis-1.0.0/src/nexilis/api/dag/base_dag.py +163 -0
  13. nexilis-1.0.0/src/nexilis/api/dag/pipeline_dag_resolver.py +868 -0
  14. nexilis-1.0.0/src/nexilis/api/dag/pipeline_dag_serializer.py +414 -0
  15. nexilis-1.0.0/src/nexilis/api/factory/__init__.py +52 -0
  16. nexilis-1.0.0/src/nexilis/api/factory/config_class_mapper.py +293 -0
  17. nexilis-1.0.0/src/nexilis/api/factory/configuration_generator.py +393 -0
  18. nexilis-1.0.0/src/nexilis/api/factory/dag_config_factory.py +1575 -0
  19. nexilis-1.0.0/src/nexilis/api/factory/field_extractor.py +406 -0
  20. nexilis-1.0.0/src/nexilis/cli/__init__.py +55 -0
  21. nexilis-1.0.0/src/nexilis/cli/__main__.py +9 -0
  22. nexilis-1.0.0/src/nexilis/cli/_shared.py +87 -0
  23. nexilis-1.0.0/src/nexilis/cli/alignment_cli.py +749 -0
  24. nexilis-1.0.0/src/nexilis/cli/catalog_cli.py +1036 -0
  25. nexilis-1.0.0/src/nexilis/cli/compile_cli.py +384 -0
  26. nexilis-1.0.0/src/nexilis/cli/config_cli.py +113 -0
  27. nexilis-1.0.0/src/nexilis/cli/dag_cli.py +212 -0
  28. nexilis-1.0.0/src/nexilis/cli/mcp_cli.py +186 -0
  29. nexilis-1.0.0/src/nexilis/cli/pipeline_catalog_cli.py +169 -0
  30. nexilis-1.0.0/src/nexilis/cli/project_cli.py +162 -0
  31. nexilis-1.0.0/src/nexilis/cli/registry_cli.py +754 -0
  32. nexilis-1.0.0/src/nexilis/cli/steps_cli.py +214 -0
  33. nexilis-1.0.0/src/nexilis/cli/strategies_cli.py +267 -0
  34. nexilis-1.0.0/src/nexilis/cli/validate_cli.py +243 -0
  35. nexilis-1.0.0/src/nexilis/core/__init__.py +156 -0
  36. nexilis-1.0.0/src/nexilis/core/assembler/__init__.py +14 -0
  37. nexilis-1.0.0/src/nexilis/core/assembler/pipeline_assembler.py +871 -0
  38. nexilis-1.0.0/src/nexilis/core/assembler/pipeline_template_base.py +474 -0
  39. nexilis-1.0.0/src/nexilis/core/base/__init__.py +72 -0
  40. nexilis-1.0.0/src/nexilis/core/base/builder_base.py +1479 -0
  41. nexilis-1.0.0/src/nexilis/core/base/builder_templates.py +1218 -0
  42. nexilis-1.0.0/src/nexilis/core/base/config_base.py +922 -0
  43. nexilis-1.0.0/src/nexilis/core/base/contract_base.py +266 -0
  44. nexilis-1.0.0/src/nexilis/core/base/enums.py +50 -0
  45. nexilis-1.0.0/src/nexilis/core/base/hyperparameters_base.py +344 -0
  46. nexilis-1.0.0/src/nexilis/core/base/step_contract.py +24 -0
  47. nexilis-1.0.0/src/nexilis/core/base/step_interface.py +1045 -0
  48. nexilis-1.0.0/src/nexilis/core/compiler/__init__.py +80 -0
  49. nexilis-1.0.0/src/nexilis/core/compiler/dag_compiler.py +910 -0
  50. nexilis-1.0.0/src/nexilis/core/compiler/dynamic_template.py +476 -0
  51. nexilis-1.0.0/src/nexilis/core/compiler/exceptions.py +120 -0
  52. nexilis-1.0.0/src/nexilis/core/compiler/name_generator.py +124 -0
  53. nexilis-1.0.0/src/nexilis/core/compiler/single_node_compiler.py +625 -0
  54. nexilis-1.0.0/src/nexilis/core/compiler/validation.py +460 -0
  55. nexilis-1.0.0/src/nexilis/core/config_fields/__init__.py +425 -0
  56. nexilis-1.0.0/src/nexilis/core/config_fields/constants.py +90 -0
  57. nexilis-1.0.0/src/nexilis/core/config_fields/inheritance_aware_field_generator.py +531 -0
  58. nexilis-1.0.0/src/nexilis/core/config_fields/step_catalog_aware_categorizer.py +904 -0
  59. nexilis-1.0.0/src/nexilis/core/config_fields/type_aware_config_serializer.py +462 -0
  60. nexilis-1.0.0/src/nexilis/core/config_fields/unified_config_manager.py +620 -0
  61. nexilis-1.0.0/src/nexilis/core/deps/__init__.py +55 -0
  62. nexilis-1.0.0/src/nexilis/core/deps/dependency_resolver.py +793 -0
  63. nexilis-1.0.0/src/nexilis/core/deps/factory.py +66 -0
  64. nexilis-1.0.0/src/nexilis/core/deps/property_reference.py +246 -0
  65. nexilis-1.0.0/src/nexilis/core/deps/registry_manager.py +325 -0
  66. nexilis-1.0.0/src/nexilis/core/deps/semantic_matcher.py +305 -0
  67. nexilis-1.0.0/src/nexilis/core/deps/specification_registry.py +129 -0
  68. nexilis-1.0.0/src/nexilis/core/utils/__init__.py +45 -0
  69. nexilis-1.0.0/src/nexilis/core/utils/generic_path_discovery.py +309 -0
  70. nexilis-1.0.0/src/nexilis/core/utils/hybrid_path_resolution.py +710 -0
  71. nexilis-1.0.0/src/nexilis/core/utils/project_discovery.py +257 -0
  72. nexilis-1.0.0/src/nexilis/mcp/__init__.py +62 -0
  73. nexilis-1.0.0/src/nexilis/mcp/envelope.py +128 -0
  74. nexilis-1.0.0/src/nexilis/mcp/registry.py +395 -0
  75. nexilis-1.0.0/src/nexilis/mcp/server.py +226 -0
  76. nexilis-1.0.0/src/nexilis/mcp/tools/__init__.py +16 -0
  77. nexilis-1.0.0/src/nexilis/mcp/tools/author.py +973 -0
  78. nexilis-1.0.0/src/nexilis/mcp/tools/catalog.py +533 -0
  79. nexilis-1.0.0/src/nexilis/mcp/tools/compile.py +481 -0
  80. nexilis-1.0.0/src/nexilis/mcp/tools/config.py +429 -0
  81. nexilis-1.0.0/src/nexilis/mcp/tools/dag.py +489 -0
  82. nexilis-1.0.0/src/nexilis/mcp/tools/info.py +327 -0
  83. nexilis-1.0.0/src/nexilis/mcp/tools/pipeline_catalog.py +398 -0
  84. nexilis-1.0.0/src/nexilis/mcp/tools/project.py +686 -0
  85. nexilis-1.0.0/src/nexilis/mcp/tools/shared.py +165 -0
  86. nexilis-1.0.0/src/nexilis/mcp/tools/steps.py +167 -0
  87. nexilis-1.0.0/src/nexilis/mcp/tools/strategies.py +276 -0
  88. nexilis-1.0.0/src/nexilis/mcp/tools/validate.py +736 -0
  89. nexilis-1.0.0/src/nexilis/mcp/workflows/README.md +263 -0
  90. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/README.md +300 -0
  91. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/kiro-acp-client.js +368 -0
  92. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/kiro-workflow-runtime.js +905 -0
  93. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/run-toolforce-probe.js +142 -0
  94. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/run-workflow.js +228 -0
  95. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/submit-result-server.js +166 -0
  96. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/test-author-step-e2e.js +267 -0
  97. nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/test-runtime.js +529 -0
  98. nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-author-step.js +1145 -0
  99. nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-configure-pipeline.js +361 -0
  100. nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-init-project.js +207 -0
  101. nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-new-project.js +122 -0
  102. nexilis-1.0.0/src/nexilis/pipeline_catalog/__init__.py +46 -0
  103. nexilis-1.0.0/src/nexilis/pipeline_catalog/core/__init__.py +18 -0
  104. nexilis-1.0.0/src/nexilis/pipeline_catalog/core/agent_tool.py +221 -0
  105. nexilis-1.0.0/src/nexilis/pipeline_catalog/core/builders.py +155 -0
  106. nexilis-1.0.0/src/nexilis/pipeline_catalog/core/pipeline_factory.py +68 -0
  107. nexilis-1.0.0/src/nexilis/pipeline_catalog/core/router.py +249 -0
  108. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/__init__.py +120 -0
  109. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/__init__.py +28 -0
  110. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_data_processing.dag.json +97 -0
  111. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_pytorch_e2e.dag.json +179 -0
  112. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_pytorch_with_label_ruleset_e2e.dag.json +202 -0
  113. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_simple_training.dag.json +90 -0
  114. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_data_processing_with_prompt_template.dag.json +111 -0
  115. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_label_ruleset_labeling.dag.json +125 -0
  116. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_e2e.dag.json +170 -0
  117. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_incremental.dag.json +187 -0
  118. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_data_upload.dag.json +136 -0
  119. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_label_ruleset_e2e.dag.json +201 -0
  120. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_label_ruleset_percentile_e2e.dag.json +188 -0
  121. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_simple_training.dag.json +96 -0
  122. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_batch_pytorch_incremental.dag.json +197 -0
  123. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_pytorch_incremental.dag.json +188 -0
  124. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_pytorch_stratified_incremental.dag.json +178 -0
  125. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/catalog_index.json +5604 -0
  126. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/__init__.py +16 -0
  127. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/e2e_basic.dag.json +93 -0
  128. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/inference_with_wiki.dag.json +119 -0
  129. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/tabular_lookup_model_e2e.dag.json +107 -0
  130. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/__init__.py +15 -0
  131. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/complete_e2e.dag.json +153 -0
  132. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/complete_e2e_with_percentile_calibration.dag.json +190 -0
  133. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/__init__.py +19 -0
  134. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/complete_e2e.dag.json +142 -0
  135. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/lightgbmmt_complete_e2e_with_percentile_calibration_and_testing.dag.json +161 -0
  136. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/lightgbmmt_with_label_ruleset_e2e.dag.json +179 -0
  137. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/ssl_training.dag.json +206 -0
  138. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/temporal_split_e2e.dag.json +169 -0
  139. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/xgboost_mt_temporal_split_e2e.dag.json +172 -0
  140. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/__init__.py +26 -0
  141. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/comparison_eval.dag.json +113 -0
  142. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e.dag.json +129 -0
  143. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e_dummy.dag.json +121 -0
  144. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e_with_percentile_calibration.dag.json +143 -0
  145. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/hybrid_xgboost_e2e.dag.json +161 -0
  146. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/inference_percentile_e2e.dag.json +138 -0
  147. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/simple_training.dag.json +90 -0
  148. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/standard_e2e.dag.json +128 -0
  149. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/stratified_percentile_e2e.dag.json +141 -0
  150. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/tokenizer_percentile_e2e.dag.json +146 -0
  151. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/train_package_e2e.dag.json +107 -0
  152. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/train_package_e2e_dummy.dag.json +109 -0
  153. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/training.dag.json +113 -0
  154. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/singleton/__init__.py +14 -0
  155. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/singleton/dummy_data_loading.dag.json +86 -0
  156. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/__init__.py +33 -0
  157. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e.dag.json +150 -0
  158. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_dummy.dag.json +138 -0
  159. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_percentile_calibration.dag.json +185 -0
  160. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_testing.dag.json +179 -0
  161. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_wiki.dag.json +166 -0
  162. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/percentile_e2e.dag.json +135 -0
  163. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/simple.dag.json +121 -0
  164. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/ssl_training.dag.json +199 -0
  165. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/train_package_e2e.dag.json +113 -0
  166. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_calibration.dag.json +126 -0
  167. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_calibration_fs.dag.json +141 -0
  168. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_evaluation.dag.json +128 -0
  169. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_evaluation_dummy.dag.json +126 -0
  170. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_feature_selection.dag.json +178 -0
  171. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_preprocessing.dag.json +166 -0
  172. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_stratified.dag.json +133 -0
  173. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_model_calibration.dag.json +128 -0
  174. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_percentile_and_testing.dag.json +145 -0
  175. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_wiki_and_model_calibration.dag.json +145 -0
  176. nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_wiki_and_percentile_calibration.dag.json +145 -0
  177. nexilis-1.0.0/src/nexilis/processing/__init__.py +25 -0
  178. nexilis-1.0.0/src/nexilis/processing/categorical/__init__.py +27 -0
  179. nexilis-1.0.0/src/nexilis/processing/categorical/categorical_imputation_processor.py +244 -0
  180. nexilis-1.0.0/src/nexilis/processing/categorical/categorical_label_processor.py +56 -0
  181. nexilis-1.0.0/src/nexilis/processing/categorical/categorical_validation_processor.py +340 -0
  182. nexilis-1.0.0/src/nexilis/processing/categorical/dictionary_encoding_processor.py +246 -0
  183. nexilis-1.0.0/src/nexilis/processing/categorical/multiclass_label_processor.py +89 -0
  184. nexilis-1.0.0/src/nexilis/processing/categorical/numerical_categorical_processor.py +252 -0
  185. nexilis-1.0.0/src/nexilis/processing/categorical/risk_table_processor.py +282 -0
  186. nexilis-1.0.0/src/nexilis/processing/categorical/streaming_risk_table_processor.py +337 -0
  187. nexilis-1.0.0/src/nexilis/processing/custom_tokenizers/__init__.py +12 -0
  188. nexilis-1.0.0/src/nexilis/processing/custom_tokenizers/bpe_tokenizer.py +385 -0
  189. nexilis-1.0.0/src/nexilis/processing/dataloaders/__init__.py +0 -0
  190. nexilis-1.0.0/src/nexilis/processing/dataloaders/pipeline_dataloader.py +91 -0
  191. nexilis-1.0.0/src/nexilis/processing/datasets/__init__.py +14 -0
  192. nexilis-1.0.0/src/nexilis/processing/datasets/pipeline_datasets.py +225 -0
  193. nexilis-1.0.0/src/nexilis/processing/datasets/pipeline_iterable_datasets.py +612 -0
  194. nexilis-1.0.0/src/nexilis/processing/numerical/__init__.py +22 -0
  195. nexilis-1.0.0/src/nexilis/processing/numerical/feature_normalization_processor.py +315 -0
  196. nexilis-1.0.0/src/nexilis/processing/numerical/minmax_scaling_processor.py +273 -0
  197. nexilis-1.0.0/src/nexilis/processing/numerical/numerical_binning_processor.py +470 -0
  198. nexilis-1.0.0/src/nexilis/processing/numerical/numerical_imputation_processor.py +485 -0
  199. nexilis-1.0.0/src/nexilis/processing/numerical/streaming_numerical_imputation_processor.py +345 -0
  200. nexilis-1.0.0/src/nexilis/processing/processor_registry.py +239 -0
  201. nexilis-1.0.0/src/nexilis/processing/processors.py +61 -0
  202. nexilis-1.0.0/src/nexilis/processing/temporal/__init__.py +19 -0
  203. nexilis-1.0.0/src/nexilis/processing/temporal/sequence_ordering_processor.py +187 -0
  204. nexilis-1.0.0/src/nexilis/processing/temporal/sequence_padding_processor.py +147 -0
  205. nexilis-1.0.0/src/nexilis/processing/temporal/temporal_mask_processor.py +197 -0
  206. nexilis-1.0.0/src/nexilis/processing/temporal/time_delta_processor.py +187 -0
  207. nexilis-1.0.0/src/nexilis/processing/text/__init__.py +0 -0
  208. nexilis-1.0.0/src/nexilis/processing/text/bert_tokenize_processor.py +55 -0
  209. nexilis-1.0.0/src/nexilis/processing/text/cs_format_processor.py +97 -0
  210. nexilis-1.0.0/src/nexilis/processing/text/custom_bpe_tokenize_processor.py +249 -0
  211. nexilis-1.0.0/src/nexilis/processing/text/dialogue_processor.py +209 -0
  212. nexilis-1.0.0/src/nexilis/processing/text/gensim_tokenize_processor.py +72 -0
  213. nexilis-1.0.0/src/nexilis/processing/validation.py +105 -0
  214. nexilis-1.0.0/src/nexilis/py.typed +0 -0
  215. nexilis-1.0.0/src/nexilis/registry/__init__.py +232 -0
  216. nexilis-1.0.0/src/nexilis/registry/exceptions.py +52 -0
  217. nexilis-1.0.0/src/nexilis/registry/hybrid/__init__.py +62 -0
  218. nexilis-1.0.0/src/nexilis/registry/hybrid/manager.py +681 -0
  219. nexilis-1.0.0/src/nexilis/registry/hybrid/models.py +285 -0
  220. nexilis-1.0.0/src/nexilis/registry/hybrid/setup.py +394 -0
  221. nexilis-1.0.0/src/nexilis/registry/hybrid/utils.py +338 -0
  222. nexilis-1.0.0/src/nexilis/registry/interface_registry_loader.py +132 -0
  223. nexilis-1.0.0/src/nexilis/registry/step_names.py +934 -0
  224. nexilis-1.0.0/src/nexilis/registry/step_names_base.py +88 -0
  225. nexilis-1.0.0/src/nexilis/registry/strategy_registry.py +223 -0
  226. nexilis-1.0.0/src/nexilis/registry/validation_utils.py +454 -0
  227. nexilis-1.0.0/src/nexilis/step_catalog/__init__.py +102 -0
  228. nexilis-1.0.0/src/nexilis/step_catalog/adapters/__init__.py +72 -0
  229. nexilis-1.0.0/src/nexilis/step_catalog/adapters/config_class_detector.py +241 -0
  230. nexilis-1.0.0/src/nexilis/step_catalog/adapters/config_resolver.py +824 -0
  231. nexilis-1.0.0/src/nexilis/step_catalog/adapters/contract_adapter.py +376 -0
  232. nexilis-1.0.0/src/nexilis/step_catalog/adapters/file_resolver.py +593 -0
  233. nexilis-1.0.0/src/nexilis/step_catalog/adapters/legacy_wrappers.py +381 -0
  234. nexilis-1.0.0/src/nexilis/step_catalog/adapters/workspace_discovery.py +586 -0
  235. nexilis-1.0.0/src/nexilis/step_catalog/builder_discovery.py +383 -0
  236. nexilis-1.0.0/src/nexilis/step_catalog/config_discovery.py +549 -0
  237. nexilis-1.0.0/src/nexilis/step_catalog/contract_discovery.py +263 -0
  238. nexilis-1.0.0/src/nexilis/step_catalog/mapping.py +487 -0
  239. nexilis-1.0.0/src/nexilis/step_catalog/models.py +94 -0
  240. nexilis-1.0.0/src/nexilis/step_catalog/naming.py +188 -0
  241. nexilis-1.0.0/src/nexilis/step_catalog/script_discovery.py +1495 -0
  242. nexilis-1.0.0/src/nexilis/step_catalog/spec_discovery.py +761 -0
  243. nexilis-1.0.0/src/nexilis/step_catalog/step_catalog.py +2195 -0
  244. nexilis-1.0.0/src/nexilis/steps/__init__.py +20 -0
  245. nexilis-1.0.0/src/nexilis/steps/configs/__init__.py +112 -0
  246. nexilis-1.0.0/src/nexilis/steps/configs/config_active_sample_selection_step.py +374 -0
  247. nexilis-1.0.0/src/nexilis/steps/configs/config_batch_transform_step.py +98 -0
  248. nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_batch_processing_step.py +723 -0
  249. nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_processing_step.py +666 -0
  250. nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_prompt_template_generation_step.py +1061 -0
  251. nexilis-1.0.0/src/nexilis/steps/configs/config_currency_conversion_step.py +298 -0
  252. nexilis-1.0.0/src/nexilis/steps/configs/config_dummy_data_loading_step.py +301 -0
  253. nexilis-1.0.0/src/nexilis/steps/configs/config_dummy_training_step.py +237 -0
  254. nexilis-1.0.0/src/nexilis/steps/configs/config_feature_selection_step.py +298 -0
  255. nexilis-1.0.0/src/nexilis/steps/configs/config_graph_construction_step.py +83 -0
  256. nexilis-1.0.0/src/nexilis/steps/configs/config_graph_feature_processing_step.py +155 -0
  257. nexilis-1.0.0/src/nexilis/steps/configs/config_graph_subgraph_extraction_step.py +136 -0
  258. nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_inference_eval_step.py +116 -0
  259. nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_training_step.py +107 -0
  260. nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_tuning_step.py +31 -0
  261. nexilis-1.0.0/src/nexilis/steps/configs/config_label_ruleset_execution_step.py +317 -0
  262. nexilis-1.0.0/src/nexilis/steps/configs/config_label_ruleset_generation_step.py +930 -0
  263. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_model_eval_step.py +274 -0
  264. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_model_inference_step.py +226 -0
  265. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_training_step.py +273 -0
  266. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_model_eval_step.py +319 -0
  267. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_model_inference_step.py +246 -0
  268. nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_training_step.py +302 -0
  269. nexilis-1.0.0/src/nexilis/steps/configs/config_missing_value_imputation_step.py +487 -0
  270. nexilis-1.0.0/src/nexilis/steps/configs/config_model_calibration_step.py +434 -0
  271. nexilis-1.0.0/src/nexilis/steps/configs/config_model_metrics_computation_step.py +486 -0
  272. nexilis-1.0.0/src/nexilis/steps/configs/config_model_wiki_generator_step.py +340 -0
  273. nexilis-1.0.0/src/nexilis/steps/configs/config_package_step.py +130 -0
  274. nexilis-1.0.0/src/nexilis/steps/configs/config_payload_step.py +233 -0
  275. nexilis-1.0.0/src/nexilis/steps/configs/config_percentile_model_calibration_step.py +230 -0
  276. nexilis-1.0.0/src/nexilis/steps/configs/config_processing_step_base.py +402 -0
  277. nexilis-1.0.0/src/nexilis/steps/configs/config_pseudo_label_merge_step.py +386 -0
  278. nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_eval_step.py +354 -0
  279. nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_inference_step.py +235 -0
  280. nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_step.py +149 -0
  281. nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_training_step.py +333 -0
  282. nexilis-1.0.0/src/nexilis/steps/configs/config_risk_table_mapping_step.py +168 -0
  283. nexilis-1.0.0/src/nexilis/steps/configs/config_slipbox_knowledge_routing_step.py +312 -0
  284. nexilis-1.0.0/src/nexilis/steps/configs/config_stratified_sampling_step.py +277 -0
  285. nexilis-1.0.0/src/nexilis/steps/configs/config_tabular_lookup_model_building_step.py +213 -0
  286. nexilis-1.0.0/src/nexilis/steps/configs/config_tabular_preprocessing_step.py +313 -0
  287. nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_feature_engineering_step.py +489 -0
  288. nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_sequence_normalization_step.py +382 -0
  289. nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_split_preprocessing_step.py +453 -0
  290. nexilis-1.0.0/src/nexilis/steps/configs/config_tokenizer_training_step.py +158 -0
  291. nexilis-1.0.0/src/nexilis/steps/configs/config_tuning_step_base.py +129 -0
  292. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_eval_step.py +263 -0
  293. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_inference_step.py +215 -0
  294. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_step.py +158 -0
  295. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_mt_model_eval_step.py +313 -0
  296. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_mt_training_step.py +298 -0
  297. nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_training_step.py +266 -0
  298. nexilis-1.0.0/src/nexilis/steps/configs/utils.py +674 -0
  299. nexilis-1.0.0/src/nexilis/steps/hyperparams/__init__.py +29 -0
  300. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_bimodal.py +281 -0
  301. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lightgbm.py +217 -0
  302. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lightgbmmt.py +450 -0
  303. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lstm2risk.py +255 -0
  304. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_transformer2risk.py +287 -0
  305. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_trimodal.py +304 -0
  306. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_xgboost.py +214 -0
  307. nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_xgboost_mt.py +97 -0
  308. nexilis-1.0.0/src/nexilis/steps/interfaces/__init__.py +214 -0
  309. nexilis-1.0.0/src/nexilis/steps/interfaces/active_sample_selection.step.yaml +105 -0
  310. nexilis-1.0.0/src/nexilis/steps/interfaces/batch_transform.step.yaml +119 -0
  311. nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_batch_processing.step.yaml +134 -0
  312. nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_processing.step.yaml +134 -0
  313. nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_prompt_template_generation.step.yaml +94 -0
  314. nexilis-1.0.0/src/nexilis/steps/interfaces/currency_conversion.step.yaml +73 -0
  315. nexilis-1.0.0/src/nexilis/steps/interfaces/dummy_data_loading.step.yaml +114 -0
  316. nexilis-1.0.0/src/nexilis/steps/interfaces/dummy_training.step.yaml +84 -0
  317. nexilis-1.0.0/src/nexilis/steps/interfaces/feature_selection.step.yaml +290 -0
  318. nexilis-1.0.0/src/nexilis/steps/interfaces/graph_construction.step.yaml +83 -0
  319. nexilis-1.0.0/src/nexilis/steps/interfaces/graph_feature_processing.step.yaml +79 -0
  320. nexilis-1.0.0/src/nexilis/steps/interfaces/graph_subgraph_extraction.step.yaml +99 -0
  321. nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_inference_eval.step.yaml +80 -0
  322. nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_training.step.yaml +78 -0
  323. nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_tuning.step.yaml +73 -0
  324. nexilis-1.0.0/src/nexilis/steps/interfaces/io_view.py +348 -0
  325. nexilis-1.0.0/src/nexilis/steps/interfaces/label_ruleset_execution.step.yaml +97 -0
  326. nexilis-1.0.0/src/nexilis/steps/interfaces/label_ruleset_generation.step.yaml +86 -0
  327. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_model_eval.step.yaml +108 -0
  328. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_model_inference.step.yaml +98 -0
  329. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_training.step.yaml +145 -0
  330. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_model_eval.step.yaml +136 -0
  331. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_model_inference.step.yaml +116 -0
  332. nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_training.step.yaml +151 -0
  333. nexilis-1.0.0/src/nexilis/steps/interfaces/missing_value_imputation.step.yaml +302 -0
  334. nexilis-1.0.0/src/nexilis/steps/interfaces/model_calibration.step.yaml +124 -0
  335. nexilis-1.0.0/src/nexilis/steps/interfaces/model_metrics_computation.step.yaml +113 -0
  336. nexilis-1.0.0/src/nexilis/steps/interfaces/model_wiki_generator.step.yaml +99 -0
  337. nexilis-1.0.0/src/nexilis/steps/interfaces/package.step.yaml +94 -0
  338. nexilis-1.0.0/src/nexilis/steps/interfaces/payload.step.yaml +87 -0
  339. nexilis-1.0.0/src/nexilis/steps/interfaces/percentile_model_calibration.step.yaml +139 -0
  340. nexilis-1.0.0/src/nexilis/steps/interfaces/pseudo_label_merge.step.yaml +117 -0
  341. nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model.step.yaml +59 -0
  342. nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model_eval.step.yaml +118 -0
  343. nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model_inference.step.yaml +102 -0
  344. nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_training.step.yaml +144 -0
  345. nexilis-1.0.0/src/nexilis/steps/interfaces/risk_table_mapping.step.yaml +275 -0
  346. nexilis-1.0.0/src/nexilis/steps/interfaces/slipbox_knowledge_routing.step.yaml +155 -0
  347. nexilis-1.0.0/src/nexilis/steps/interfaces/stratified_sampling.step.yaml +84 -0
  348. nexilis-1.0.0/src/nexilis/steps/interfaces/tabular_lookup_model_building.step.yaml +79 -0
  349. nexilis-1.0.0/src/nexilis/steps/interfaces/tabular_preprocessing.step.yaml +121 -0
  350. nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_feature_engineering.step.yaml +184 -0
  351. nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_sequence_normalization.step.yaml +200 -0
  352. nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_split_preprocessing.step.yaml +115 -0
  353. nexilis-1.0.0/src/nexilis/steps/interfaces/tokenizer_training.step.yaml +76 -0
  354. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model.step.yaml +59 -0
  355. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model_eval.step.yaml +104 -0
  356. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model_inference.step.yaml +96 -0
  357. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_mt_model_eval.step.yaml +114 -0
  358. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_mt_training.step.yaml +146 -0
  359. nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_training.step.yaml +145 -0
  360. nexilis-1.0.0/src/nexilis/steps/scripts/__init__.py +14 -0
  361. nexilis-1.0.0/src/nexilis/steps/scripts/active_sample_selection.py +931 -0
  362. nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_batch_processing.py +3361 -0
  363. nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_processing.py +2800 -0
  364. nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_prompt_template_generation.py +607 -0
  365. nexilis-1.0.0/src/nexilis/steps/scripts/bspline_calibration.py +888 -0
  366. nexilis-1.0.0/src/nexilis/steps/scripts/calibration/standard_calibration_dictionary.json +1 -0
  367. nexilis-1.0.0/src/nexilis/steps/scripts/currency_conversion.py +540 -0
  368. nexilis-1.0.0/src/nexilis/steps/scripts/dummy_data_loading.py +1443 -0
  369. nexilis-1.0.0/src/nexilis/steps/scripts/dummy_training.py +468 -0
  370. nexilis-1.0.0/src/nexilis/steps/scripts/feature_selection.py +1713 -0
  371. nexilis-1.0.0/src/nexilis/steps/scripts/graph_feature_processing.py +108 -0
  372. nexilis-1.0.0/src/nexilis/steps/scripts/graph_subgraph_extraction.py +390 -0
  373. nexilis-1.0.0/src/nexilis/steps/scripts/graphstorm_gnn_inference_eval.py +43 -0
  374. nexilis-1.0.0/src/nexilis/steps/scripts/graphstorm_gnn_training.py +42 -0
  375. nexilis-1.0.0/src/nexilis/steps/scripts/label_ruleset_execution.py +890 -0
  376. nexilis-1.0.0/src/nexilis/steps/scripts/label_ruleset_generation.py +1052 -0
  377. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_model_eval.py +2040 -0
  378. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_model_inference.py +751 -0
  379. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_training.py +1511 -0
  380. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_model_eval.py +1978 -0
  381. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_model_inference.py +898 -0
  382. nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_training.py +1547 -0
  383. nexilis-1.0.0/src/nexilis/steps/scripts/missing_value_imputation.py +1982 -0
  384. nexilis-1.0.0/src/nexilis/steps/scripts/model_calibration.py +2209 -0
  385. nexilis-1.0.0/src/nexilis/steps/scripts/model_metrics_computation.py +2375 -0
  386. nexilis-1.0.0/src/nexilis/steps/scripts/model_wiki_generator.py +1447 -0
  387. nexilis-1.0.0/src/nexilis/steps/scripts/package.py +391 -0
  388. nexilis-1.0.0/src/nexilis/steps/scripts/payload.py +1498 -0
  389. nexilis-1.0.0/src/nexilis/steps/scripts/percentile_model_calibration.py +1838 -0
  390. nexilis-1.0.0/src/nexilis/steps/scripts/pseudo_label_merge.py +1107 -0
  391. nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_model_eval.py +1871 -0
  392. nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_model_inference.py +1399 -0
  393. nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_training.py +2418 -0
  394. nexilis-1.0.0/src/nexilis/steps/scripts/risk_table_mapping.py +1525 -0
  395. nexilis-1.0.0/src/nexilis/steps/scripts/run_gconstruct.py +114 -0
  396. nexilis-1.0.0/src/nexilis/steps/scripts/slipbox_knowledge_routing.py +637 -0
  397. nexilis-1.0.0/src/nexilis/steps/scripts/stratified_sampling.py +1068 -0
  398. nexilis-1.0.0/src/nexilis/steps/scripts/tabular_lookup_model_building.py +413 -0
  399. nexilis-1.0.0/src/nexilis/steps/scripts/tabular_preprocessing.py +2265 -0
  400. nexilis-1.0.0/src/nexilis/steps/scripts/temporal_feature_engineering.py +1440 -0
  401. nexilis-1.0.0/src/nexilis/steps/scripts/temporal_sequence_normalization.py +1048 -0
  402. nexilis-1.0.0/src/nexilis/steps/scripts/temporal_split_preprocessing.py +1757 -0
  403. nexilis-1.0.0/src/nexilis/steps/scripts/tokenizer_training.py +413 -0
  404. nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_model_eval.py +1959 -0
  405. nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_model_inference.py +717 -0
  406. nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_training.py +1515 -0
  407. nexilis-1.0.0/src/nexilis/steps/utils/__init__.py +17 -0
  408. nexilis-1.0.0/src/nexilis/steps/utils/s3_utils.py +210 -0
  409. nexilis-1.0.0/src/nexilis/validation/__init__.py +65 -0
  410. nexilis-1.0.0/src/nexilis/validation/alignment/__init__.py +80 -0
  411. nexilis-1.0.0/src/nexilis/validation/alignment/analyzer/__init__.py +9 -0
  412. nexilis-1.0.0/src/nexilis/validation/alignment/analyzer/script_analyzer.py +618 -0
  413. nexilis-1.0.0/src/nexilis/validation/alignment/config/__init__.py +100 -0
  414. nexilis-1.0.0/src/nexilis/validation/alignment/config/step_type_specific_rules.py +534 -0
  415. nexilis-1.0.0/src/nexilis/validation/alignment/config/universal_builder_rules.py +390 -0
  416. nexilis-1.0.0/src/nexilis/validation/alignment/config/validation_ruleset.py +310 -0
  417. nexilis-1.0.0/src/nexilis/validation/alignment/core/__init__.py +36 -0
  418. nexilis-1.0.0/src/nexilis/validation/alignment/core/level3_validation_config.py +165 -0
  419. nexilis-1.0.0/src/nexilis/validation/alignment/core/level_validators.py +269 -0
  420. nexilis-1.0.0/src/nexilis/validation/alignment/core/script_contract_alignment.py +629 -0
  421. nexilis-1.0.0/src/nexilis/validation/alignment/core/spec_dependency_alignment.py +571 -0
  422. nexilis-1.0.0/src/nexilis/validation/alignment/reporting/__init__.py +17 -0
  423. nexilis-1.0.0/src/nexilis/validation/alignment/unified_alignment_tester.py +603 -0
  424. nexilis-1.0.0/src/nexilis/validation/alignment/utils/__init__.py +113 -0
  425. nexilis-1.0.0/src/nexilis/validation/alignment/utils/utils.py +206 -0
  426. nexilis-1.0.0/src/nexilis/validation/alignment/utils/validation_models.py +365 -0
  427. nexilis-1.0.0/src/nexilis/validation/alignment/validators/__init__.py +37 -0
  428. nexilis-1.0.0/src/nexilis/validation/alignment/validators/dependency_validator.py +539 -0
  429. nexilis-1.0.0/src/nexilis/validation/alignment/validators/property_path_validator.py +794 -0
  430. nexilis-1.0.0/src/nexilis/validation/alignment/validators/registry_binding_validator.py +266 -0
  431. nexilis-1.0.0/src/nexilis/validation/builders/__init__.py +87 -0
  432. nexilis-1.0.0/src/nexilis/validation/builders/reporting/__init__.py +47 -0
  433. nexilis-1.0.0/src/nexilis/validation/builders/reporting/builder_reporter.py +454 -0
  434. nexilis-1.0.0/src/nexilis/validation/builders/reporting/scoring.py +463 -0
  435. nexilis-1.0.0/src/nexilis/validation/builders/universal_test.py +1612 -0
  436. nexilis-1.0.0/src/nexilis/validation/script_testing/__init__.py +220 -0
  437. nexilis-1.0.0/src/nexilis/validation/script_testing/api.py +762 -0
  438. nexilis-1.0.0/src/nexilis/validation/script_testing/input_collector.py +703 -0
  439. nexilis-1.0.0/src/nexilis/validation/script_testing/result_formatter.py +505 -0
  440. nexilis-1.0.0/src/nexilis/validation/script_testing/script_dependency_matcher.py +766 -0
  441. nexilis-1.0.0/src/nexilis/validation/script_testing/script_execution_registry.py +621 -0
  442. nexilis-1.0.0/src/nexilis/validation/script_testing/script_input_resolver.py +413 -0
  443. nexilis-1.0.0/src/nexilis/validation/script_testing/utils.py +445 -0
  444. nexilis-1.0.0/src/nexilis/validation/utils/__init__.py +1 -0
  445. nexilis-1.0.0/src/nexilis.egg-info/PKG-INFO +348 -0
  446. nexilis-1.0.0/src/nexilis.egg-info/SOURCES.txt +448 -0
  447. nexilis-1.0.0/src/nexilis.egg-info/dependency_links.txt +1 -0
  448. nexilis-1.0.0/src/nexilis.egg-info/entry_points.txt +3 -0
  449. nexilis-1.0.0/src/nexilis.egg-info/requires.txt +71 -0
  450. nexilis-1.0.0/src/nexilis.egg-info/top_level.txt +1 -0
@@ -0,0 +1,59 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2026-09-19
9
+
10
+ Initial release of Nexilis β€” a specification-driven compiler that turns a pipeline graph plus a
11
+ JSON configuration into a runnable Amazon SageMaker pipeline.
12
+
13
+ ### Added
14
+
15
+ **Graph-to-pipeline compilation.** A DAG of step names and a config JSON compile to a
16
+ `sagemaker.workflow.pipeline.Pipeline`. Step objects, their wiring and their naming are generated,
17
+ so a pipeline is described rather than assembled by hand. Available three ways: the
18
+ `PipelineDAGCompiler` API, the `nexilis compile` CLI, and a DAG built directly in Python.
19
+
20
+ **Dependency resolution by inference.** Edges between steps are resolved by semantically matching
21
+ each step's declared outputs to the next step's declared inputs, instead of hand-wired `properties`
22
+ paths. This is the core of the system: steps are authored independently and joined automatically.
23
+
24
+ **Declarative step interfaces.** Every step is a single `<step>.step.yaml` that unifies its script
25
+ contract (inputs, outputs, environment variables, job arguments) with its dependency
26
+ specification. Step builders are synthesized at runtime, so there are no hand-written builder
27
+ classes to maintain. This release ships 50 declarative interfaces and 53 registered step names.
28
+
29
+ **A pre-built pipeline catalog.** 60 ready-to-use DAGs across 8 frameworks (XGBoost, PyTorch,
30
+ LightGBM, Bedrock and more), discoverable by framework, task type and complexity. Each carries
31
+ structured guidance β€” when to use it, when not to, prerequisites, differentiators and a decision
32
+ tree β€” so both people and LLM agents can choose a starting point. Query via `catalog_index.json`,
33
+ `recommend_dag` and `load_shared_dag`.
34
+
35
+ **Validation before deployment.** DAG-to-config alignment, interface conformance and dependency
36
+ resolution are all checked before anything reaches SageMaker, via `nexilis validate`,
37
+ `nexilis alignment`, and `--validate-only` on compile.
38
+
39
+ **Extensibility through step packs.** Steps defined in a folder outside the installed package are
40
+ discovered as native, strictly additively β€” built-in steps are never removed or shadowed.
41
+
42
+ **An agent-facing MCP server.** `nexilis-mcp` exposes 55 JSON-in / JSON-out tools across 11
43
+ namespaces, mirroring the CLI and API for LLM agents, with per-tool safety annotations.
44
+
45
+ ### Requirements
46
+
47
+ - Python 3.9 or newer; targets the SageMaker Python SDK 2.x (`sagemaker>=2.248.0,<3`).
48
+ - Depends only on the public SageMaker Python SDK and packages published on PyPI. Optional extras
49
+ (`processing`, `pytorch`, `gbm`, `nlp`, `mcp`, `all`) keep heavier ML and data libraries out of the
50
+ core install.
51
+
52
+ ### Notes
53
+
54
+ - Compiled pipelines end at model packaging (`Package` / `Payload`). Promoting a packaged model into
55
+ a model registry is outside the scope of the shipped steps and remains yours to own.
56
+ - Data enters a pipeline through `DummyDataLoading`, which reads user-provided data from an S3
57
+ location you supply.
58
+
59
+ [1.0.0]: https://github.com/TianpeiLuke/nexilis/releases/tag/v1.0.0
nexilis-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tianpei Xie
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,39 @@
1
+ # Include package metadata and documentation
2
+ include README.md
3
+ include CHANGELOG.md
4
+ include LICENSE
5
+ include pyproject.toml
6
+
7
+ # Include all Python files
8
+ recursive-include src/nexilis *.py
9
+
10
+ # Include runtime data files (load-bearing): unified step interfaces (*.step.yaml),
11
+ # the YAML step registry, and the declarative pipeline catalog (*.dag.json + index)
12
+ recursive-include src/nexilis *.yaml *.yml *.json py.typed
13
+
14
+ # Include the shipped agent-authoring workflow orchestrators (reference/runnable
15
+ # Claude Code dynamic-workflow scripts + README under mcp/workflows/, not importable Python)
16
+ recursive-include src/nexilis/mcp/workflows *.js *.md
17
+
18
+ # Exclude development and build files
19
+ exclude .gitignore
20
+ exclude requirements.txt
21
+ recursive-exclude * __pycache__
22
+ recursive-exclude * *.py[co]
23
+ recursive-exclude * *.so
24
+ recursive-exclude * .DS_Store
25
+ recursive-exclude .git *
26
+ recursive-exclude .venv *
27
+ recursive-exclude .pytest_cache *
28
+ recursive-exclude build *
29
+ recursive-exclude dist *
30
+ recursive-exclude *.egg-info *
31
+
32
+ # Exclude test files from distribution
33
+ recursive-exclude tests *
34
+
35
+ # Exclude development directories
36
+ recursive-exclude tools *
37
+ recursive-exclude dockers *
38
+ recursive-exclude pipeline_config *
39
+ recursive-exclude pipeline_examples *
nexilis-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,348 @@
1
+ Metadata-Version: 2.4
2
+ Name: nexilis
3
+ Version: 1.0.0
4
+ Summary: Automatic SageMaker Pipeline Generation from DAG Specifications
5
+ Author-email: Tianpei Xie <unidoctor@gmail.com>
6
+ Maintainer-email: Tianpei Xie <unidoctor@gmail.com>
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/TianpeiLuke/nexilis
9
+ Project-URL: Documentation, https://nexilis.readthedocs.io/
10
+ Project-URL: Repository, https://github.com/TianpeiLuke/nexilis
11
+ Project-URL: Issues, https://github.com/TianpeiLuke/nexilis/issues
12
+ Project-URL: Changelog, https://github.com/TianpeiLuke/nexilis/blob/main/CHANGELOG.md
13
+ Keywords: sagemaker,pipeline,dag,machine-learning,aws,automation,mlops,data-science,workflow,orchestration
14
+ Classifier: Development Status :: 5 - Production/Stable
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Science/Research
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Environment :: Console
20
+ Classifier: Natural Language :: English
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
28
+ Classifier: Topic :: Software Development :: Code Generators
29
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
+ Classifier: Topic :: System :: Distributed Computing
31
+ Classifier: Topic :: System :: Monitoring
32
+ Classifier: Typing :: Typed
33
+ Requires-Python: >=3.9
34
+ Description-Content-Type: text/markdown
35
+ License-File: LICENSE
36
+ Requires-Dist: boto3>=1.39.0
37
+ Requires-Dist: botocore>=1.39.0
38
+ Requires-Dist: sagemaker<3,>=2.248.0
39
+ Requires-Dist: pydantic<3,>=2.11.0
40
+ Requires-Dist: PyYAML>=6.0.0
41
+ Requires-Dist: networkx>=2.8.0
42
+ Requires-Dist: click>=8.1.0
43
+ Requires-Dist: pytz
44
+ Provides-Extra: processing
45
+ Requires-Dist: pandas>=2.1.0; extra == "processing"
46
+ Requires-Dist: numpy>=1.26.0; extra == "processing"
47
+ Requires-Dist: scikit-learn>=1.3.0; extra == "processing"
48
+ Requires-Dist: pyarrow>=14.0.0; extra == "processing"
49
+ Provides-Extra: pytorch
50
+ Requires-Dist: torch>=2.0.0; extra == "pytorch"
51
+ Requires-Dist: pytorch-lightning>=2.0.0; extra == "pytorch"
52
+ Requires-Dist: lightning>=2.0.0; extra == "pytorch"
53
+ Provides-Extra: gbm
54
+ Requires-Dist: xgboost>=2.0.0; extra == "gbm"
55
+ Requires-Dist: lightgbm>=4.0.0; extra == "gbm"
56
+ Requires-Dist: pandas>=2.1.0; extra == "gbm"
57
+ Requires-Dist: numpy>=1.26.0; extra == "gbm"
58
+ Requires-Dist: scikit-learn>=1.3.0; extra == "gbm"
59
+ Provides-Extra: nlp
60
+ Requires-Dist: transformers>=4.30.0; extra == "nlp"
61
+ Requires-Dist: tokenizers>=0.15.0; extra == "nlp"
62
+ Provides-Extra: jupyter
63
+ Requires-Dist: jupyter>=1.0.0; extra == "jupyter"
64
+ Requires-Dist: ipywidgets>=8.0.0; extra == "jupyter"
65
+ Requires-Dist: plotly>=5.0.0; extra == "jupyter"
66
+ Requires-Dist: nbformat>=5.0.0; extra == "jupyter"
67
+ Requires-Dist: jinja2>=3.0.0; extra == "jupyter"
68
+ Requires-Dist: seaborn>=0.12.0; extra == "jupyter"
69
+ Requires-Dist: jupyterlab>=4.0.0; extra == "jupyter"
70
+ Requires-Dist: ipython>=8.0.0; extra == "jupyter"
71
+ Provides-Extra: viz
72
+ Requires-Dist: matplotlib>=3.8.0; extra == "viz"
73
+ Requires-Dist: seaborn>=0.12.0; extra == "viz"
74
+ Requires-Dist: plotly>=5.0.0; extra == "viz"
75
+ Provides-Extra: dev
76
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
77
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
78
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
79
+ Requires-Dist: black>=23.0.0; extra == "dev"
80
+ Requires-Dist: isort>=5.12.0; extra == "dev"
81
+ Requires-Dist: flake8>=6.0.0; extra == "dev"
82
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
83
+ Requires-Dist: pre-commit>=3.0.0; extra == "dev"
84
+ Provides-Extra: docs
85
+ Requires-Dist: sphinx<9,>=7.2; extra == "docs"
86
+ Requires-Dist: furo==2025.12.19; extra == "docs"
87
+ Requires-Dist: myst-parser>=2.0.0; extra == "docs"
88
+ Requires-Dist: linkify-it-py>=2.0; extra == "docs"
89
+ Requires-Dist: sphinx-click>=6.0; extra == "docs"
90
+ Requires-Dist: jinja2>=3.1; extra == "docs"
91
+ Requires-Dist: pyyaml>=6.0; extra == "docs"
92
+ Provides-Extra: mcp
93
+ Requires-Dist: mcp<2,>=1.2.0; extra == "mcp"
94
+ Requires-Dist: anyio>=4.0.0; extra == "mcp"
95
+ Provides-Extra: all
96
+ Requires-Dist: nexilis[gbm,jupyter,mcp,nlp,processing,pytorch,viz]; extra == "all"
97
+ Dynamic: license-file
98
+
99
+ # Nexilis: Automatic SageMaker Pipeline Generation
100
+
101
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
102
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
103
+
104
+ **Turn a pipeline graph plus a JSON config into a complete, production-ready SageMaker pipeline β€” automatically.**
105
+
106
+ Nexilis is a specification-driven pipeline generation system for Amazon SageMaker. You describe your ML workflow as a **DAG of step names**; Nexilis resolves the dependencies between steps, wires their inputs and outputs, looks up each step's declarative interface, and assembles a runnable `sagemaker.workflow.pipeline.Pipeline`. You say *what* the pipeline is β€” Nexilis figures out *how* to build it.
107
+
108
+ > **πŸ“– Full documentation:** the [`docs/`](https://github.com/TianpeiLuke/nexilis/tree/main/docs) tree β€” getting-started, tutorials, concepts & architecture, and the complete API / CLI / MCP / step-catalog reference. It builds as a Sphinx site with `make -C docs html`.
109
+
110
+ ---
111
+
112
+ ## Installation
113
+
114
+ Install from a clone β€” the first PyPI release is still ahead:
115
+
116
+ ```bash
117
+ git clone https://github.com/TianpeiLuke/nexilis.git
118
+ cd nexilis
119
+ pip install -e .
120
+ ```
121
+
122
+ Requires **Python 3.9+** and targets the **SageMaker Python SDK 2.x** (`sagemaker>=2.248.0,<3`).
123
+
124
+ Optional extras keep heavy ML/data libraries out of the core install β€” pull in only what your steps run:
125
+
126
+ ```bash
127
+ pip install -e ".[processing]" # pandas / numpy data-processing utilities
128
+ pip install -e ".[pytorch]" # PyTorch / Lightning
129
+ pip install -e ".[gbm]" # XGBoost / LightGBM
130
+ pip install -e ".[nlp]" # tokenizers / transformers
131
+ pip install -e ".[mcp]" # MCP server for LLM agents (mcp + anyio)
132
+ pip install -e ".[all]" # everything
133
+ ```
134
+
135
+ Verify:
136
+
137
+ ```bash
138
+ nexilis --version
139
+ python -c "import nexilis; print(nexilis.__version__)"
140
+ ```
141
+
142
+ ---
143
+
144
+ ## Quick Start
145
+
146
+ There are three ways in, highest-level first. They all compile through the same engine, so the same DAG + config produces the same pipeline.
147
+
148
+ Every path needs two ingredients: a **DAG** (step names + edges) and a **config JSON** whose `metadata.config_types` maps each node to a configuration class. Compilation is offline; you only need AWS credentials to *deploy* (`--upsert`) or *run* (`--start`).
149
+
150
+ ### 1. Start from the pre-built pipeline catalog
151
+
152
+ Nexilis ships **60 validated DAGs** across 8 frameworks. Let the router recommend one and build it:
153
+
154
+ ```python
155
+ from nexilis.pipeline_catalog import recommend_dag, load_shared_dag
156
+ from nexilis import PipelineDAGCompiler
157
+
158
+ # recommend_dag returns a ranked list of matches (dicts with 'id', 'score', ...)
159
+ recommendations = recommend_dag(framework="xgboost", task_type="end_to_end")
160
+ dag = load_shared_dag(recommendations[0]["id"])
161
+
162
+ pipeline, report = PipelineDAGCompiler(config_path="config.json").compile_with_report(dag)
163
+ print(pipeline.name, "-", len(pipeline.steps), "steps")
164
+ ```
165
+
166
+ ### 2. Compile from the command line
167
+
168
+ Reproducible, no-glue path β€” point it at a DAG JSON and a config JSON:
169
+
170
+ ```bash
171
+ # compile only (writes the SageMaker pipeline definition to a file)
172
+ nexilis compile -d my_dag.json -c my_config.json -o pipeline.json
173
+
174
+ # validate DAG <-> config alignment without compiling
175
+ nexilis compile -d my_dag.json -c my_config.json --validate-only
176
+
177
+ # compile, deploy to SageMaker, and start an execution
178
+ nexilis compile -d my_dag.json -c my_config.json \
179
+ --upsert --start --role arn:aws:iam::123456789012:role/MySageMakerRole
180
+ ```
181
+
182
+ ### 3. Build a DAG in Python
183
+
184
+ ```python
185
+ from nexilis.api import PipelineDAG
186
+ from nexilis.core import compile_dag_to_pipeline
187
+
188
+ # Nodes are step names; edges are data dependencies
189
+ dag = PipelineDAG()
190
+ for node in ["DummyDataLoading", "TabularPreprocessing", "XGBoostTraining"]:
191
+ dag.add_node(node)
192
+ dag.add_edge("DummyDataLoading", "TabularPreprocessing")
193
+ dag.add_edge("TabularPreprocessing", "XGBoostTraining")
194
+
195
+ # config.json maps each node -> a config class (metadata.config_types)
196
+ pipeline = compile_dag_to_pipeline(dag=dag, config_path="config.json")
197
+
198
+ # Deploy / run when ready
199
+ pipeline.upsert(role_arn="arn:aws:iam::123456789012:role/MySageMakerRole")
200
+ pipeline.start()
201
+ ```
202
+
203
+ See the [Quickstart guide](https://github.com/TianpeiLuke/nexilis/blob/main/docs/getting_started/quickstart.md) for the full walkthrough.
204
+
205
+ ---
206
+
207
+ ## Key Features
208
+
209
+ - **🎯 Graph-to-pipeline automation** β€” a DAG of step names compiles straight to a SageMaker pipeline; the SageMaker step objects, wiring, and naming are generated for you.
210
+ - **🧠 Intelligent dependency resolution** β€” Nexilis infers step connections and data flow by matching each step's declared outputs to the next step's declared inputs (semantic scoring), instead of hand-wiring `properties` paths.
211
+ - **πŸ“„ Declarative, data-driven steps** β€” every step is a single `<step>.step.yaml` interface unifying the script contract (I/O, env vars, job arguments) and the dependency spec; step builders are synthesized at runtime, with no hand-written builder classes to maintain.
212
+ - **πŸ“¦ A pre-built pipeline catalog** β€” 60 ready-to-use DAGs across XGBoost, PyTorch, LightGBM, Bedrock and more, discoverable by framework, task type, and complexity.
213
+ - **🧩 Extensible via step packs** β€” define your own steps in a folder *outside* the installed package and Nexilis discovers them as native, strictly additively (built-in steps are never removed).
214
+ - **πŸ›‘οΈ Built-in validation** β€” DAG↔config alignment, interface conformance, and dependency resolution are checked before you deploy (`nexilis validate`, `nexilis alignment`, `--validate-only`).
215
+ - **πŸ€– Agent-ready (MCP)** β€” a framework-neutral, self-documenting tool surface of **55 JSON-in/JSON-out tools** across 11 namespaces mirrors the CLI/API for LLM agents. `pip install -e ".[mcp]"`, then wire `nexilis-mcp` into any MCP host (Claude Desktop, Cursor, Kiro). **Read-only by default** β€” state-changing tools are opt-in via env vars β€” with per-tool safety annotations. See the [MCP server guide](https://github.com/TianpeiLuke/nexilis/blob/main/src/nexilis/mcp/README.md); `nexilis mcp help` to inspect the tools.
216
+
217
+ ---
218
+
219
+ ## How It Works
220
+
221
+ A DAG + config flows through layered subsystems to a SageMaker pipeline:
222
+
223
+ | Subsystem | Package | Responsibility |
224
+ |---|---|---|
225
+ | **DAG model** | `nexilis.api.dag` | `PipelineDAG` β€” nodes (step names) + edges (dependencies) |
226
+ | **Compiler** | `nexilis.core.compiler` | `PipelineDAGCompiler` / `compile_dag_to_pipeline` β€” validate β†’ resolve β†’ build β†’ assemble |
227
+ | **Assembler** | `nexilis.core.assembler` | Turns resolved steps into a `sagemaker` `Pipeline` |
228
+ | **Dependency resolver** | `nexilis.core.deps` | Matches producer outputs to consumer inputs (semantic scoring) |
229
+ | **Step interfaces** | `nexilis.core.base` + `nexilis.steps.interfaces` | Declarative `<step>.step.yaml`; builders synthesized at runtime |
230
+ | **Registry & discovery** | `nexilis.registry` + `nexilis.step_catalog` | Canonical step table, derived interface-first; step-pack discovery |
231
+ | **Config system** | `nexilis.core.config_fields` + `nexilis.api.factory` | Pydantic config classes; `metadata.config_types` node→class map |
232
+ | **Pipeline catalog** | `nexilis.pipeline_catalog` | Pre-built shared DAGs + router (`recommend_dag` / `load_shared_dag`) |
233
+ | **Validation** | `nexilis.validation` | Alignment / interface / dependency checks |
234
+ | **Agent surface** | `nexilis.mcp` | The MCP tool surface |
235
+ | **CLI** | `nexilis.cli` | 13 command groups |
236
+
237
+ Read the [Concepts, Architecture & Design](https://github.com/TianpeiLuke/nexilis/blob/main/docs/concepts/index.md) docs for the full picture.
238
+
239
+ ---
240
+
241
+ ## What's Included
242
+
243
+ | | Count | |
244
+ |---|---|---|
245
+ | **Step types** | 53 registered (50 declarative `.step.yaml` interfaces) | data loading, preprocessing, training, eval, calibration, packaging, … |
246
+ | **Pre-built DAGs** | 60 across 8 frameworks | XGBoost, XGBoost-MT, PyTorch, LightGBM, LightGBM-MT, Bedrock, Dummy, Generic |
247
+ | **CLI command groups** | 13 | `compile`, `dag`, `config`, `catalog`, `steps`, `strategies`, `pipeline-catalog`, `validate`, `alignment`, `registry`, `projects`, `exec-doc`, `mcp` |
248
+ | **MCP agent tools** | 55 across 11 namespaces | discover, construct, validate, compile, author β€” for LLM agents |
249
+
250
+ ---
251
+
252
+ ## Command-Line Interface
253
+
254
+ ```bash
255
+ nexilis compile -d dag.json -c config.json -o pipeline.json # DAG + config -> pipeline
256
+ nexilis compile -d dag.json -c config.json --validate-only # dry-run alignment report
257
+ nexilis pipeline-catalog recommend --framework xgboost # discover a pre-built DAG
258
+ nexilis pipeline-catalog get-dag xgboost_complete_e2e # inspect a catalog DAG
259
+ nexilis catalog list # browse available step types
260
+ nexilis steps io XGBoostTraining # a step's declared I/O
261
+ nexilis dag resolve TabularPreprocessing XGBoostTraining # score dependency edges
262
+ nexilis validate step-interface --all # validate every interface
263
+ nexilis projects list # discover pipeline projects
264
+ nexilis mcp help # explore the agent tool surface
265
+ ```
266
+
267
+ Every group, subcommand, and flag is in the [CLI reference](https://github.com/TianpeiLuke/nexilis/blob/main/docs/cli.rst) β€” rendered from the live Click app when the docs build β€” or a `nexilis --help` away.
268
+
269
+ ---
270
+
271
+ ## Installation Options
272
+
273
+ | Extra | Installs | For |
274
+ |---|---|---|
275
+ | *(core)* | DAG model, compiler, catalog, registry, CLI | everything except heavy ML/data libs |
276
+ | `processing` | pandas, numpy | data-processing utilities & scripts |
277
+ | `pytorch` | torch, lightning | PyTorch training/eval steps |
278
+ | `gbm` | xgboost, lightgbm | gradient-boosting steps |
279
+ | `nlp` | tokenizers, transformers | text steps |
280
+ | `mcp` | mcp, anyio | the `nexilis-mcp` agent server |
281
+ | `jupyter` | notebook tooling | interactive development |
282
+ | `viz` | plotting libraries | reports/visualizations |
283
+ | `docs` | sphinx, furo, sphinx-click, … | building this documentation |
284
+ | `dev` | test/lint toolchain | contributing |
285
+ | `all` | pytorch + gbm + nlp + processing + jupyter + viz + mcp | full runtime install |
286
+
287
+ ```bash
288
+ pip install -e ".[all]" # full ML runtime
289
+ pip install -e ".[dev]" # contributor toolchain
290
+ ```
291
+
292
+ ---
293
+
294
+ ## πŸ“– Documentation
295
+
296
+ ### πŸ“š [The `docs/` tree](https://github.com/TianpeiLuke/nexilis/tree/main/docs)
297
+ **The full documentation, versioned with the code.** It is a Sphinx site β€” `pip install -e ".[docs]"`, then `make -C docs html` and open `docs/_build/html/index.html`:
298
+ [Getting Started](https://github.com/TianpeiLuke/nexilis/blob/main/docs/getting_started/index.md) Β·
299
+ [Tutorials](https://github.com/TianpeiLuke/nexilis/blob/main/docs/tutorials/index.md) Β·
300
+ [Concepts & Architecture](https://github.com/TianpeiLuke/nexilis/blob/main/docs/concepts/index.md) Β·
301
+ [How-to Guides](https://github.com/TianpeiLuke/nexilis/blob/main/docs/guides/index.md) Β·
302
+ [Step Catalog](https://github.com/TianpeiLuke/nexilis/blob/main/docs/steps-catalog/index.md) Β·
303
+ [Migration](https://github.com/TianpeiLuke/nexilis/blob/main/docs/migration/index.md)
304
+
305
+ The Python API, CLI, and MCP-tool references are generated from the installed package at build time ([`docs/api/`](https://github.com/TianpeiLuke/nexilis/blob/main/docs/api/index.rst), [`docs/cli.rst`](https://github.com/TianpeiLuke/nexilis/blob/main/docs/cli.rst), [`docs/reference/`](https://github.com/TianpeiLuke/nexilis/blob/main/docs/reference/index.md)), so they never drift from the version you have. Build the site to read them, or ask the terminal: `nexilis --help`, `nexilis mcp help`.
306
+
307
+ ### Design & developer notes (in-repo)
308
+ - **[Author a Custom Step](https://github.com/TianpeiLuke/nexilis/blob/main/docs/tutorials/author_a_step.md)** β€” the three files a new step needs, end to end
309
+ - **[Define a Step Pack](https://github.com/TianpeiLuke/nexilis/blob/main/docs/guides/define_a_step_pack.md)** β€” extending Nexilis with your own steps from outside the package
310
+ - **[Concepts, Architecture & Design](https://github.com/TianpeiLuke/nexilis/blob/main/docs/concepts/index.md)** β€” subsystem mechanics, plus the [design principles](https://github.com/TianpeiLuke/nexilis/blob/main/docs/concepts/design_principles.md) behind them
311
+ - **[Pipeline Catalog](https://github.com/TianpeiLuke/nexilis/blob/main/src/nexilis/pipeline_catalog/README.md)** β€” the prebuilt-DAG collection
312
+ - **[MCP Server](https://github.com/TianpeiLuke/nexilis/blob/main/src/nexilis/mcp/README.md)** β€” the agent tool surface and its safety model
313
+ - **[Changelog](https://github.com/TianpeiLuke/nexilis/blob/main/CHANGELOG.md)** β€” release history
314
+
315
+ ---
316
+
317
+ ## Who Should Use Nexilis?
318
+
319
+ - **Data scientists & ML practitioners** β€” go from a workflow sketch to a running SageMaker pipeline without writing SageMaker step glue; start from a catalog template and customize.
320
+ - **Platform & ML engineers** β€” standardize pipeline construction, enforce DAG↔config alignment in CI, and extend the step library with your own step packs.
321
+ - **Organizations** β€” a consistent, validated, reproducible path from graph to production pipeline, with less bespoke SageMaker code to maintain.
322
+
323
+ ---
324
+
325
+ ## 🀝 Contributing
326
+
327
+ Contributions are welcome! Start with `pip install -e ".[dev]"`, then:
328
+
329
+ - **[Installation](https://github.com/TianpeiLuke/nexilis/blob/main/docs/getting_started/installation.md)** β€” install options and how to verify one
330
+ - **[Author a Custom Step](https://github.com/TianpeiLuke/nexilis/blob/main/docs/tutorials/author_a_step.md)** β€” the interface, config, and script a new step needs
331
+ - **[Define a Step Pack](https://github.com/TianpeiLuke/nexilis/blob/main/docs/guides/define_a_step_pack.md)** β€” adding steps without touching the package
332
+ - **[Validate a Pipeline](https://github.com/TianpeiLuke/nexilis/blob/main/docs/guides/validate_a_pipeline.md)** β€” the checks to run before you push, and how to read them
333
+ - **[Design Principles](https://github.com/TianpeiLuke/nexilis/blob/main/docs/concepts/design_principles.md)** β€” the load-bearing decisions the codebase follows
334
+
335
+ Then let the test suite and the validators have a look: `pytest`, `nexilis validate step-interface --all`, `nexilis alignment validate-all`.
336
+
337
+ Or author a step the guided way with the [`nexilis mcp`](https://github.com/TianpeiLuke/nexilis/blob/main/docs/tutorials/agentic.md) agent tools.
338
+
339
+ ## πŸ“„ License
340
+
341
+ Licensed under the MIT License β€” see [LICENSE](https://github.com/TianpeiLuke/nexilis/blob/main/LICENSE).
342
+
343
+ ## πŸ”— Links
344
+
345
+ - **Documentation**: [`docs/`](https://github.com/TianpeiLuke/nexilis/tree/main/docs) β€” Sphinx source; `make -C docs html` to build the site
346
+ - **GitHub**: https://github.com/TianpeiLuke/nexilis
347
+ - **Issues**: https://github.com/TianpeiLuke/nexilis/issues
348
+ - **Changelog**: [CHANGELOG.md](https://github.com/TianpeiLuke/nexilis/blob/main/CHANGELOG.md)