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.
- nexilis-1.0.0/CHANGELOG.md +59 -0
- nexilis-1.0.0/LICENSE +21 -0
- nexilis-1.0.0/MANIFEST.in +39 -0
- nexilis-1.0.0/PKG-INFO +348 -0
- nexilis-1.0.0/README.md +250 -0
- nexilis-1.0.0/VERSION +1 -0
- nexilis-1.0.0/pyproject.toml +273 -0
- nexilis-1.0.0/setup.cfg +4 -0
- nexilis-1.0.0/src/nexilis/__init__.py +206 -0
- nexilis-1.0.0/src/nexilis/api/__init__.py +20 -0
- nexilis-1.0.0/src/nexilis/api/dag/__init__.py +28 -0
- nexilis-1.0.0/src/nexilis/api/dag/base_dag.py +163 -0
- nexilis-1.0.0/src/nexilis/api/dag/pipeline_dag_resolver.py +868 -0
- nexilis-1.0.0/src/nexilis/api/dag/pipeline_dag_serializer.py +414 -0
- nexilis-1.0.0/src/nexilis/api/factory/__init__.py +52 -0
- nexilis-1.0.0/src/nexilis/api/factory/config_class_mapper.py +293 -0
- nexilis-1.0.0/src/nexilis/api/factory/configuration_generator.py +393 -0
- nexilis-1.0.0/src/nexilis/api/factory/dag_config_factory.py +1575 -0
- nexilis-1.0.0/src/nexilis/api/factory/field_extractor.py +406 -0
- nexilis-1.0.0/src/nexilis/cli/__init__.py +55 -0
- nexilis-1.0.0/src/nexilis/cli/__main__.py +9 -0
- nexilis-1.0.0/src/nexilis/cli/_shared.py +87 -0
- nexilis-1.0.0/src/nexilis/cli/alignment_cli.py +749 -0
- nexilis-1.0.0/src/nexilis/cli/catalog_cli.py +1036 -0
- nexilis-1.0.0/src/nexilis/cli/compile_cli.py +384 -0
- nexilis-1.0.0/src/nexilis/cli/config_cli.py +113 -0
- nexilis-1.0.0/src/nexilis/cli/dag_cli.py +212 -0
- nexilis-1.0.0/src/nexilis/cli/mcp_cli.py +186 -0
- nexilis-1.0.0/src/nexilis/cli/pipeline_catalog_cli.py +169 -0
- nexilis-1.0.0/src/nexilis/cli/project_cli.py +162 -0
- nexilis-1.0.0/src/nexilis/cli/registry_cli.py +754 -0
- nexilis-1.0.0/src/nexilis/cli/steps_cli.py +214 -0
- nexilis-1.0.0/src/nexilis/cli/strategies_cli.py +267 -0
- nexilis-1.0.0/src/nexilis/cli/validate_cli.py +243 -0
- nexilis-1.0.0/src/nexilis/core/__init__.py +156 -0
- nexilis-1.0.0/src/nexilis/core/assembler/__init__.py +14 -0
- nexilis-1.0.0/src/nexilis/core/assembler/pipeline_assembler.py +871 -0
- nexilis-1.0.0/src/nexilis/core/assembler/pipeline_template_base.py +474 -0
- nexilis-1.0.0/src/nexilis/core/base/__init__.py +72 -0
- nexilis-1.0.0/src/nexilis/core/base/builder_base.py +1479 -0
- nexilis-1.0.0/src/nexilis/core/base/builder_templates.py +1218 -0
- nexilis-1.0.0/src/nexilis/core/base/config_base.py +922 -0
- nexilis-1.0.0/src/nexilis/core/base/contract_base.py +266 -0
- nexilis-1.0.0/src/nexilis/core/base/enums.py +50 -0
- nexilis-1.0.0/src/nexilis/core/base/hyperparameters_base.py +344 -0
- nexilis-1.0.0/src/nexilis/core/base/step_contract.py +24 -0
- nexilis-1.0.0/src/nexilis/core/base/step_interface.py +1045 -0
- nexilis-1.0.0/src/nexilis/core/compiler/__init__.py +80 -0
- nexilis-1.0.0/src/nexilis/core/compiler/dag_compiler.py +910 -0
- nexilis-1.0.0/src/nexilis/core/compiler/dynamic_template.py +476 -0
- nexilis-1.0.0/src/nexilis/core/compiler/exceptions.py +120 -0
- nexilis-1.0.0/src/nexilis/core/compiler/name_generator.py +124 -0
- nexilis-1.0.0/src/nexilis/core/compiler/single_node_compiler.py +625 -0
- nexilis-1.0.0/src/nexilis/core/compiler/validation.py +460 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/__init__.py +425 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/constants.py +90 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/inheritance_aware_field_generator.py +531 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/step_catalog_aware_categorizer.py +904 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/type_aware_config_serializer.py +462 -0
- nexilis-1.0.0/src/nexilis/core/config_fields/unified_config_manager.py +620 -0
- nexilis-1.0.0/src/nexilis/core/deps/__init__.py +55 -0
- nexilis-1.0.0/src/nexilis/core/deps/dependency_resolver.py +793 -0
- nexilis-1.0.0/src/nexilis/core/deps/factory.py +66 -0
- nexilis-1.0.0/src/nexilis/core/deps/property_reference.py +246 -0
- nexilis-1.0.0/src/nexilis/core/deps/registry_manager.py +325 -0
- nexilis-1.0.0/src/nexilis/core/deps/semantic_matcher.py +305 -0
- nexilis-1.0.0/src/nexilis/core/deps/specification_registry.py +129 -0
- nexilis-1.0.0/src/nexilis/core/utils/__init__.py +45 -0
- nexilis-1.0.0/src/nexilis/core/utils/generic_path_discovery.py +309 -0
- nexilis-1.0.0/src/nexilis/core/utils/hybrid_path_resolution.py +710 -0
- nexilis-1.0.0/src/nexilis/core/utils/project_discovery.py +257 -0
- nexilis-1.0.0/src/nexilis/mcp/__init__.py +62 -0
- nexilis-1.0.0/src/nexilis/mcp/envelope.py +128 -0
- nexilis-1.0.0/src/nexilis/mcp/registry.py +395 -0
- nexilis-1.0.0/src/nexilis/mcp/server.py +226 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/__init__.py +16 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/author.py +973 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/catalog.py +533 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/compile.py +481 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/config.py +429 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/dag.py +489 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/info.py +327 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/pipeline_catalog.py +398 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/project.py +686 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/shared.py +165 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/steps.py +167 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/strategies.py +276 -0
- nexilis-1.0.0/src/nexilis/mcp/tools/validate.py +736 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/README.md +263 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/README.md +300 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/kiro-acp-client.js +368 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/kiro-workflow-runtime.js +905 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/run-toolforce-probe.js +142 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/run-workflow.js +228 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/submit-result-server.js +166 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/test-author-step-e2e.js +267 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/kiro/test-runtime.js +529 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-author-step.js +1145 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-configure-pipeline.js +361 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-init-project.js +207 -0
- nexilis-1.0.0/src/nexilis/mcp/workflows/nexilis-new-project.js +122 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/__init__.py +46 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/core/__init__.py +18 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/core/agent_tool.py +221 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/core/builders.py +155 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/core/pipeline_factory.py +68 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/core/router.py +249 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/__init__.py +120 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/__init__.py +28 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_data_processing.dag.json +97 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_pytorch_e2e.dag.json +179 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_pytorch_with_label_ruleset_e2e.dag.json +202 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_batch_simple_training.dag.json +90 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_data_processing_with_prompt_template.dag.json +111 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_label_ruleset_labeling.dag.json +125 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_e2e.dag.json +170 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_incremental.dag.json +187 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_data_upload.dag.json +136 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_label_ruleset_e2e.dag.json +201 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_pytorch_with_label_ruleset_percentile_e2e.dag.json +188 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_simple_training.dag.json +96 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_batch_pytorch_incremental.dag.json +197 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_pytorch_incremental.dag.json +188 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/bedrock/bedrock_slipbox_routing_pytorch_stratified_incremental.dag.json +178 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/catalog_index.json +5604 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/__init__.py +16 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/e2e_basic.dag.json +93 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/inference_with_wiki.dag.json +119 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/dummy/tabular_lookup_model_e2e.dag.json +107 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/__init__.py +15 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/complete_e2e.dag.json +153 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/lightgbm/complete_e2e_with_percentile_calibration.dag.json +190 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/__init__.py +19 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/complete_e2e.dag.json +142 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/lightgbmmt_complete_e2e_with_percentile_calibration_and_testing.dag.json +161 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/lightgbmmt_with_label_ruleset_e2e.dag.json +179 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/ssl_training.dag.json +206 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/temporal_split_e2e.dag.json +169 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/mtl/xgboost_mt_temporal_split_e2e.dag.json +172 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/__init__.py +26 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/comparison_eval.dag.json +113 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e.dag.json +129 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e_dummy.dag.json +121 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/complete_e2e_with_percentile_calibration.dag.json +143 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/hybrid_xgboost_e2e.dag.json +161 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/inference_percentile_e2e.dag.json +138 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/simple_training.dag.json +90 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/standard_e2e.dag.json +128 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/stratified_percentile_e2e.dag.json +141 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/tokenizer_percentile_e2e.dag.json +146 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/train_package_e2e.dag.json +107 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/train_package_e2e_dummy.dag.json +109 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/pytorch/training.dag.json +113 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/singleton/__init__.py +14 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/singleton/dummy_data_loading.dag.json +86 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/__init__.py +33 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e.dag.json +150 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_dummy.dag.json +138 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_percentile_calibration.dag.json +185 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_testing.dag.json +179 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/complete_e2e_with_wiki.dag.json +166 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/percentile_e2e.dag.json +135 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/simple.dag.json +121 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/ssl_training.dag.json +199 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/train_package_e2e.dag.json +113 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_calibration.dag.json +126 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_calibration_fs.dag.json +141 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_evaluation.dag.json +128 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_evaluation_dummy.dag.json +126 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_feature_selection.dag.json +178 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_preprocessing.dag.json +166 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/training_with_stratified.dag.json +133 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_model_calibration.dag.json +128 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_percentile_and_testing.dag.json +145 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_wiki_and_model_calibration.dag.json +145 -0
- nexilis-1.0.0/src/nexilis/pipeline_catalog/shared_dags/xgboost/xgboost_complete_e2e_with_wiki_and_percentile_calibration.dag.json +145 -0
- nexilis-1.0.0/src/nexilis/processing/__init__.py +25 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/__init__.py +27 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/categorical_imputation_processor.py +244 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/categorical_label_processor.py +56 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/categorical_validation_processor.py +340 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/dictionary_encoding_processor.py +246 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/multiclass_label_processor.py +89 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/numerical_categorical_processor.py +252 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/risk_table_processor.py +282 -0
- nexilis-1.0.0/src/nexilis/processing/categorical/streaming_risk_table_processor.py +337 -0
- nexilis-1.0.0/src/nexilis/processing/custom_tokenizers/__init__.py +12 -0
- nexilis-1.0.0/src/nexilis/processing/custom_tokenizers/bpe_tokenizer.py +385 -0
- nexilis-1.0.0/src/nexilis/processing/dataloaders/__init__.py +0 -0
- nexilis-1.0.0/src/nexilis/processing/dataloaders/pipeline_dataloader.py +91 -0
- nexilis-1.0.0/src/nexilis/processing/datasets/__init__.py +14 -0
- nexilis-1.0.0/src/nexilis/processing/datasets/pipeline_datasets.py +225 -0
- nexilis-1.0.0/src/nexilis/processing/datasets/pipeline_iterable_datasets.py +612 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/__init__.py +22 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/feature_normalization_processor.py +315 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/minmax_scaling_processor.py +273 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/numerical_binning_processor.py +470 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/numerical_imputation_processor.py +485 -0
- nexilis-1.0.0/src/nexilis/processing/numerical/streaming_numerical_imputation_processor.py +345 -0
- nexilis-1.0.0/src/nexilis/processing/processor_registry.py +239 -0
- nexilis-1.0.0/src/nexilis/processing/processors.py +61 -0
- nexilis-1.0.0/src/nexilis/processing/temporal/__init__.py +19 -0
- nexilis-1.0.0/src/nexilis/processing/temporal/sequence_ordering_processor.py +187 -0
- nexilis-1.0.0/src/nexilis/processing/temporal/sequence_padding_processor.py +147 -0
- nexilis-1.0.0/src/nexilis/processing/temporal/temporal_mask_processor.py +197 -0
- nexilis-1.0.0/src/nexilis/processing/temporal/time_delta_processor.py +187 -0
- nexilis-1.0.0/src/nexilis/processing/text/__init__.py +0 -0
- nexilis-1.0.0/src/nexilis/processing/text/bert_tokenize_processor.py +55 -0
- nexilis-1.0.0/src/nexilis/processing/text/cs_format_processor.py +97 -0
- nexilis-1.0.0/src/nexilis/processing/text/custom_bpe_tokenize_processor.py +249 -0
- nexilis-1.0.0/src/nexilis/processing/text/dialogue_processor.py +209 -0
- nexilis-1.0.0/src/nexilis/processing/text/gensim_tokenize_processor.py +72 -0
- nexilis-1.0.0/src/nexilis/processing/validation.py +105 -0
- nexilis-1.0.0/src/nexilis/py.typed +0 -0
- nexilis-1.0.0/src/nexilis/registry/__init__.py +232 -0
- nexilis-1.0.0/src/nexilis/registry/exceptions.py +52 -0
- nexilis-1.0.0/src/nexilis/registry/hybrid/__init__.py +62 -0
- nexilis-1.0.0/src/nexilis/registry/hybrid/manager.py +681 -0
- nexilis-1.0.0/src/nexilis/registry/hybrid/models.py +285 -0
- nexilis-1.0.0/src/nexilis/registry/hybrid/setup.py +394 -0
- nexilis-1.0.0/src/nexilis/registry/hybrid/utils.py +338 -0
- nexilis-1.0.0/src/nexilis/registry/interface_registry_loader.py +132 -0
- nexilis-1.0.0/src/nexilis/registry/step_names.py +934 -0
- nexilis-1.0.0/src/nexilis/registry/step_names_base.py +88 -0
- nexilis-1.0.0/src/nexilis/registry/strategy_registry.py +223 -0
- nexilis-1.0.0/src/nexilis/registry/validation_utils.py +454 -0
- nexilis-1.0.0/src/nexilis/step_catalog/__init__.py +102 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/__init__.py +72 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/config_class_detector.py +241 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/config_resolver.py +824 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/contract_adapter.py +376 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/file_resolver.py +593 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/legacy_wrappers.py +381 -0
- nexilis-1.0.0/src/nexilis/step_catalog/adapters/workspace_discovery.py +586 -0
- nexilis-1.0.0/src/nexilis/step_catalog/builder_discovery.py +383 -0
- nexilis-1.0.0/src/nexilis/step_catalog/config_discovery.py +549 -0
- nexilis-1.0.0/src/nexilis/step_catalog/contract_discovery.py +263 -0
- nexilis-1.0.0/src/nexilis/step_catalog/mapping.py +487 -0
- nexilis-1.0.0/src/nexilis/step_catalog/models.py +94 -0
- nexilis-1.0.0/src/nexilis/step_catalog/naming.py +188 -0
- nexilis-1.0.0/src/nexilis/step_catalog/script_discovery.py +1495 -0
- nexilis-1.0.0/src/nexilis/step_catalog/spec_discovery.py +761 -0
- nexilis-1.0.0/src/nexilis/step_catalog/step_catalog.py +2195 -0
- nexilis-1.0.0/src/nexilis/steps/__init__.py +20 -0
- nexilis-1.0.0/src/nexilis/steps/configs/__init__.py +112 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_active_sample_selection_step.py +374 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_batch_transform_step.py +98 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_batch_processing_step.py +723 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_processing_step.py +666 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_bedrock_prompt_template_generation_step.py +1061 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_currency_conversion_step.py +298 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_dummy_data_loading_step.py +301 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_dummy_training_step.py +237 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_feature_selection_step.py +298 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graph_construction_step.py +83 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graph_feature_processing_step.py +155 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graph_subgraph_extraction_step.py +136 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_inference_eval_step.py +116 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_training_step.py +107 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_graphstorm_gnn_tuning_step.py +31 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_label_ruleset_execution_step.py +317 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_label_ruleset_generation_step.py +930 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_model_eval_step.py +274 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_model_inference_step.py +226 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbm_training_step.py +273 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_model_eval_step.py +319 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_model_inference_step.py +246 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_lightgbmmt_training_step.py +302 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_missing_value_imputation_step.py +487 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_model_calibration_step.py +434 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_model_metrics_computation_step.py +486 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_model_wiki_generator_step.py +340 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_package_step.py +130 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_payload_step.py +233 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_percentile_model_calibration_step.py +230 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_processing_step_base.py +402 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_pseudo_label_merge_step.py +386 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_eval_step.py +354 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_inference_step.py +235 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_model_step.py +149 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_pytorch_training_step.py +333 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_risk_table_mapping_step.py +168 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_slipbox_knowledge_routing_step.py +312 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_stratified_sampling_step.py +277 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_tabular_lookup_model_building_step.py +213 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_tabular_preprocessing_step.py +313 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_feature_engineering_step.py +489 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_sequence_normalization_step.py +382 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_temporal_split_preprocessing_step.py +453 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_tokenizer_training_step.py +158 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_tuning_step_base.py +129 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_eval_step.py +263 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_inference_step.py +215 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_model_step.py +158 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_mt_model_eval_step.py +313 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_mt_training_step.py +298 -0
- nexilis-1.0.0/src/nexilis/steps/configs/config_xgboost_training_step.py +266 -0
- nexilis-1.0.0/src/nexilis/steps/configs/utils.py +674 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/__init__.py +29 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_bimodal.py +281 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lightgbm.py +217 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lightgbmmt.py +450 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_lstm2risk.py +255 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_transformer2risk.py +287 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_trimodal.py +304 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_xgboost.py +214 -0
- nexilis-1.0.0/src/nexilis/steps/hyperparams/hyperparameters_xgboost_mt.py +97 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/__init__.py +214 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/active_sample_selection.step.yaml +105 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/batch_transform.step.yaml +119 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_batch_processing.step.yaml +134 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_processing.step.yaml +134 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/bedrock_prompt_template_generation.step.yaml +94 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/currency_conversion.step.yaml +73 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/dummy_data_loading.step.yaml +114 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/dummy_training.step.yaml +84 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/feature_selection.step.yaml +290 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graph_construction.step.yaml +83 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graph_feature_processing.step.yaml +79 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graph_subgraph_extraction.step.yaml +99 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_inference_eval.step.yaml +80 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_training.step.yaml +78 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/graphstorm_gnn_tuning.step.yaml +73 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/io_view.py +348 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/label_ruleset_execution.step.yaml +97 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/label_ruleset_generation.step.yaml +86 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_model_eval.step.yaml +108 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_model_inference.step.yaml +98 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbm_training.step.yaml +145 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_model_eval.step.yaml +136 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_model_inference.step.yaml +116 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/lightgbmmt_training.step.yaml +151 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/missing_value_imputation.step.yaml +302 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/model_calibration.step.yaml +124 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/model_metrics_computation.step.yaml +113 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/model_wiki_generator.step.yaml +99 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/package.step.yaml +94 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/payload.step.yaml +87 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/percentile_model_calibration.step.yaml +139 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/pseudo_label_merge.step.yaml +117 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model.step.yaml +59 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model_eval.step.yaml +118 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_model_inference.step.yaml +102 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/pytorch_training.step.yaml +144 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/risk_table_mapping.step.yaml +275 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/slipbox_knowledge_routing.step.yaml +155 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/stratified_sampling.step.yaml +84 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/tabular_lookup_model_building.step.yaml +79 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/tabular_preprocessing.step.yaml +121 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_feature_engineering.step.yaml +184 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_sequence_normalization.step.yaml +200 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/temporal_split_preprocessing.step.yaml +115 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/tokenizer_training.step.yaml +76 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model.step.yaml +59 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model_eval.step.yaml +104 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_model_inference.step.yaml +96 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_mt_model_eval.step.yaml +114 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_mt_training.step.yaml +146 -0
- nexilis-1.0.0/src/nexilis/steps/interfaces/xgboost_training.step.yaml +145 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/__init__.py +14 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/active_sample_selection.py +931 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_batch_processing.py +3361 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_processing.py +2800 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/bedrock_prompt_template_generation.py +607 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/bspline_calibration.py +888 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/calibration/standard_calibration_dictionary.json +1 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/currency_conversion.py +540 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/dummy_data_loading.py +1443 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/dummy_training.py +468 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/feature_selection.py +1713 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/graph_feature_processing.py +108 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/graph_subgraph_extraction.py +390 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/graphstorm_gnn_inference_eval.py +43 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/graphstorm_gnn_training.py +42 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/label_ruleset_execution.py +890 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/label_ruleset_generation.py +1052 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_model_eval.py +2040 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_model_inference.py +751 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbm_training.py +1511 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_model_eval.py +1978 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_model_inference.py +898 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/lightgbmmt_training.py +1547 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/missing_value_imputation.py +1982 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/model_calibration.py +2209 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/model_metrics_computation.py +2375 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/model_wiki_generator.py +1447 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/package.py +391 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/payload.py +1498 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/percentile_model_calibration.py +1838 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/pseudo_label_merge.py +1107 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_model_eval.py +1871 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_model_inference.py +1399 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/pytorch_training.py +2418 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/risk_table_mapping.py +1525 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/run_gconstruct.py +114 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/slipbox_knowledge_routing.py +637 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/stratified_sampling.py +1068 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/tabular_lookup_model_building.py +413 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/tabular_preprocessing.py +2265 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/temporal_feature_engineering.py +1440 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/temporal_sequence_normalization.py +1048 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/temporal_split_preprocessing.py +1757 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/tokenizer_training.py +413 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_model_eval.py +1959 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_model_inference.py +717 -0
- nexilis-1.0.0/src/nexilis/steps/scripts/xgboost_training.py +1515 -0
- nexilis-1.0.0/src/nexilis/steps/utils/__init__.py +17 -0
- nexilis-1.0.0/src/nexilis/steps/utils/s3_utils.py +210 -0
- nexilis-1.0.0/src/nexilis/validation/__init__.py +65 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/__init__.py +80 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/analyzer/__init__.py +9 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/analyzer/script_analyzer.py +618 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/config/__init__.py +100 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/config/step_type_specific_rules.py +534 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/config/universal_builder_rules.py +390 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/config/validation_ruleset.py +310 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/core/__init__.py +36 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/core/level3_validation_config.py +165 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/core/level_validators.py +269 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/core/script_contract_alignment.py +629 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/core/spec_dependency_alignment.py +571 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/reporting/__init__.py +17 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/unified_alignment_tester.py +603 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/utils/__init__.py +113 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/utils/utils.py +206 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/utils/validation_models.py +365 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/validators/__init__.py +37 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/validators/dependency_validator.py +539 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/validators/property_path_validator.py +794 -0
- nexilis-1.0.0/src/nexilis/validation/alignment/validators/registry_binding_validator.py +266 -0
- nexilis-1.0.0/src/nexilis/validation/builders/__init__.py +87 -0
- nexilis-1.0.0/src/nexilis/validation/builders/reporting/__init__.py +47 -0
- nexilis-1.0.0/src/nexilis/validation/builders/reporting/builder_reporter.py +454 -0
- nexilis-1.0.0/src/nexilis/validation/builders/reporting/scoring.py +463 -0
- nexilis-1.0.0/src/nexilis/validation/builders/universal_test.py +1612 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/__init__.py +220 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/api.py +762 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/input_collector.py +703 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/result_formatter.py +505 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/script_dependency_matcher.py +766 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/script_execution_registry.py +621 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/script_input_resolver.py +413 -0
- nexilis-1.0.0/src/nexilis/validation/script_testing/utils.py +445 -0
- nexilis-1.0.0/src/nexilis/validation/utils/__init__.py +1 -0
- nexilis-1.0.0/src/nexilis.egg-info/PKG-INFO +348 -0
- nexilis-1.0.0/src/nexilis.egg-info/SOURCES.txt +448 -0
- nexilis-1.0.0/src/nexilis.egg-info/dependency_links.txt +1 -0
- nexilis-1.0.0/src/nexilis.egg-info/entry_points.txt +3 -0
- nexilis-1.0.0/src/nexilis.egg-info/requires.txt +71 -0
- 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
|
+
[](https://www.python.org/downloads/)
|
|
102
|
+
[](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)
|