featrixsphere 0.2.4984__tar.gz → 0.2.5182__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 (243) hide show
  1. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/PKG-INFO +1 -1
  2. featrixsphere-0.2.5182/VERSION +1 -0
  3. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere/__init__.py +1 -1
  4. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere/client.py +179 -111
  5. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/PKG-INFO +1 -1
  6. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/SOURCES.txt +10 -15
  7. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/api.py +271 -726
  8. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/celery_app.py +233 -7
  9. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/featrix_watchdog.py +30 -4
  10. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/celery_job_recovery.py +7 -5
  11. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/embedding_space_io.py +5 -0
  12. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/es_training.py +1213 -996
  13. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/es_training_wrapper.py +4 -0
  14. featrixsphere-0.2.5182/src/lib/featrix/neural/causal_relationship_scorer.py +416 -0
  15. featrixsphere-0.2.5182/src/lib/featrix/neural/charting.py +868 -0
  16. featrixsphere-0.2.5182/src/lib/featrix/neural/customer_quality_tracker.py +277 -0
  17. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/dataloader_utils.py +45 -8
  18. featrixsphere-0.2.5182/src/lib/featrix/neural/dynamic_relationship_extractor.py +4608 -0
  19. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/embedded_space.py +2273 -426
  20. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/encoders.py +337 -28
  21. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/feature_effectiveness_tracker.py +5 -0
  22. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/io_utils.py +92 -10
  23. featrixsphere-0.2.5182/src/lib/featrix/neural/lr_timeline.py +1198 -0
  24. featrixsphere-0.2.5182/src/lib/featrix/neural/mask_bias_tracker.py +344 -0
  25. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_adaptive_loss_benchmark.py +3 -1
  26. featrixsphere-0.2.5182/src/lib/featrix/neural/qa/test_lift_measurement_validation.py +465 -0
  27. featrixsphere-0.2.5182/src/lib/featrix/neural/qa/test_lr_timeline_smoothness.py +248 -0
  28. featrixsphere-0.2.5182/src/lib/featrix/neural/qa/test_min_support_rank_scaling.py +311 -0
  29. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_relationship_extractor_integration.py +6 -2
  30. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_relationship_extractor_mixed_types.py +1 -1
  31. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_set_encoder_strategies.py +3 -2
  32. featrixsphere-0.2.5182/src/lib/featrix/neural/relationship_importance_validator.py +427 -0
  33. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/single_predictor.py +2622 -540
  34. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/sphere_config.py +1 -0
  35. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/string_cache.py +23 -17
  36. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/string_codec.py +6 -4
  37. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_logger.py +61 -1
  38. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_timeline.py +24 -33
  39. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/transformer_encoder.py +246 -50
  40. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/utils.py +1 -4
  41. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/meta_learning_client.py +2 -2
  42. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/session_manager.py +282 -26
  43. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/single_predictor_training.py +13 -7
  44. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/weightwatcher_tracking.py +93 -2
  45. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/prediction_client.py +20 -0
  46. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/test_api_client.py +32 -3
  47. featrixsphere-0.2.4984/VERSION +0 -1
  48. featrixsphere-0.2.4984/featrixsphere/test_client.py +0 -311
  49. featrixsphere-0.2.4984/src/lib/featrix/neural/dynamic_relationship_extractor.py +0 -1984
  50. featrixsphere-0.2.4984/src/lib/featrix/neural/test_graph_encoder.py +0 -170
  51. featrixsphere-0.2.4984/src/test_complete_workflow.py +0 -386
  52. featrixsphere-0.2.4984/src/test_json_tables_prediction.py +0 -314
  53. featrixsphere-0.2.4984/src/test_redis_predictions.py +0 -92
  54. featrixsphere-0.2.4984/src/test_server_connection.py +0 -132
  55. featrixsphere-0.2.4984/src/test_session_models.py +0 -170
  56. featrixsphere-0.2.4984/src/test_single_predictor_api.py +0 -267
  57. featrixsphere-0.2.4984/src/test_upload_endpoint.py +0 -131
  58. featrixsphere-0.2.4984/tests/test_client_data.py +0 -145
  59. featrixsphere-0.2.4984/tests/test_client_predictions.py +0 -266
  60. featrixsphere-0.2.4984/tests/test_client_sessions.py +0 -665
  61. featrixsphere-0.2.4984/tests/test_client_training.py +0 -149
  62. featrixsphere-0.2.4984/tests/test_local_integration.py +0 -270
  63. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/MANIFEST.in +0 -0
  64. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/README.md +0 -0
  65. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrix-update.py +0 -0
  66. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/dependency_links.txt +0 -0
  67. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/entry_points.txt +0 -0
  68. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/not-zip-safe +0 -0
  69. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/requires.txt +0 -0
  70. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/featrixsphere.egg-info/top_level.txt +0 -0
  71. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/nv-install.sh +0 -0
  72. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/requirements.txt +0 -0
  73. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/setup.cfg +0 -0
  74. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/setup.py +0 -0
  75. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/auto_upgrade_monitor.py +0 -0
  76. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/build_version.py +0 -0
  77. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/config.py +0 -0
  78. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/demo_existing_model.py +0 -0
  79. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/demo_label_updates.py +0 -0
  80. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/deploy.py +0 -0
  81. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/deploy_cache_debug.sh +0 -0
  82. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/ensure_watchdog_running.sh +0 -0
  83. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/error_tracker.py +0 -0
  84. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/event_log.py +0 -0
  85. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/example_api_usage.py +0 -0
  86. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/example_prediction_feedback.py +0 -0
  87. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/example_train_predictor.py +0 -0
  88. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/gc_cleanup.py +0 -0
  89. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/api_event_retry.py +0 -0
  90. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/convergence_monitor.py +0 -0
  91. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/crash_tracker.py +0 -0
  92. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/distribution_shift_detector.py +0 -0
  93. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/epoch_projections.py +0 -0
  94. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/es_projections.py +0 -0
  95. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/__init__.py +0 -0
  96. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/__init__.py +0 -0
  97. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/calibration_utils.py +0 -0
  98. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/classification_metrics.py +0 -0
  99. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/config.py +0 -0
  100. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/data_frame_data_set.py +0 -0
  101. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/detect.py +0 -0
  102. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/domain_codec.py +0 -0
  103. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/dropout_scheduler.py +0 -0
  104. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
  105. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/embedding_quality.py +0 -0
  106. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
  107. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/embedding_utils.py +0 -0
  108. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/enrich.py +0 -0
  109. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/es_projection.py +0 -0
  110. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/exceptions.py +0 -0
  111. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/featrix_csv.py +0 -0
  112. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/featrix_json.py +0 -0
  113. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
  114. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/featrix_token.py +0 -0
  115. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/feature_engineer.py +0 -0
  116. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/feature_suggestion_tracker.py +0 -0
  117. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/gpu_utils.py +0 -0
  118. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/graph_encoder.py +0 -0
  119. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/graph_encoder_training.py +0 -0
  120. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/guardrails.py +0 -0
  121. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
  122. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/hybrid_column_detector.py +0 -0
  123. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/hybrid_encoders.py +0 -0
  124. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/input_data_file.py +0 -0
  125. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/input_data_set.py +0 -0
  126. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/integrity.py +0 -0
  127. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/json_cache.py +0 -0
  128. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/json_codec.py +0 -0
  129. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/llm/__init__.py +0 -0
  130. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/llm/schema_analyzer.py +0 -0
  131. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/local_string_cache.py +0 -0
  132. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/logging_config.py +0 -0
  133. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/mask_tracker.py +0 -0
  134. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/model_config.py +0 -0
  135. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/model_hash.py +0 -0
  136. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/movie_frame_task.py +0 -0
  137. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/multi_table_dataset.py +0 -0
  138. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/multi_table_embedding_space.py +0 -0
  139. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/network_viz.py +0 -0
  140. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/platform_utils.py +0 -0
  141. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/prng_control.py +0 -0
  142. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
  143. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
  144. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
  145. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
  146. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/show_results.py +0 -0
  147. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
  148. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +0 -0
  149. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
  150. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_embedding_quality.py +0 -0
  151. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
  152. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
  153. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_feature_engineering_prediction.py +0 -0
  154. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
  155. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
  156. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
  157. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_hybrid_columns.py +0 -0
  158. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
  159. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
  160. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
  161. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_predict_during_training.py +0 -0
  162. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
  163. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
  164. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
  165. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
  166. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_complexity.py +0 -0
  167. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_estimator.py +0 -0
  168. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_extractor.py +0 -0
  169. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_performance.py +0 -0
  170. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_preanalysis.py +0 -0
  171. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/relationship_search.py +0 -0
  172. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/scalar_codec.py +0 -0
  173. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/schema_history.py +0 -0
  174. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/set_codec.py +0 -0
  175. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/setlist_codec.py +0 -0
  176. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/simple_mlp.py +0 -0
  177. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/simple_string_cache.py +0 -0
  178. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/single_predictor_mlp.py +0 -0
  179. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/sqlite_utils.py +0 -0
  180. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/stopwatch.py +0 -0
  181. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/string_analysis.py +0 -0
  182. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/string_list_codec.py +0 -0
  183. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/timestamp_codec.py +0 -0
  184. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_banner.py +0 -0
  185. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_context_manager.py +0 -0
  186. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_event.py +0 -0
  187. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_exceptions.py +0 -0
  188. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/training_history_db.py +0 -0
  189. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/url_codec.py +0 -0
  190. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/url_parser.py +0 -0
  191. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/vector_codec.py +0 -0
  192. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix/neural/world_data.py +0 -0
  193. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/featrix_debug.py +0 -0
  194. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/job_manager.py +0 -0
  195. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/json_encoder_cache.py +0 -0
  196. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/knn_training.py +0 -0
  197. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/model_card_repair.py +0 -0
  198. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/model_repair.py +0 -0
  199. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/pre_analysis_wrapper.py +0 -0
  200. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/queue_manager.py +0 -0
  201. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/quick_architecture_search.py +0 -0
  202. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/session_chains.py +0 -0
  203. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/single_predictor_cv.py +0 -0
  204. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/sp_training_wrapper.py +0 -0
  205. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/sphere_config.py +0 -0
  206. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/structureddata.py +0 -0
  207. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/system_health_monitor.py +0 -0
  208. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/training_monitor.py +0 -0
  209. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/utils.py +0 -0
  210. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/vector_db.py +0 -0
  211. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/lib/webhook_helpers.py +0 -0
  212. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/llm_client.py +0 -0
  213. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/load_and_test_model.py +0 -0
  214. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/manage_churro.sh +0 -0
  215. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/migrate_string_cache_naming.py +0 -0
  216. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/neural.py +0 -0
  217. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/node-install.sh +0 -0
  218. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/prediction_drift_monitor.py +0 -0
  219. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/prediction_persistence_worker.py +0 -0
  220. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/prediction_server.py +0 -0
  221. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/query_schema_worker.py +0 -0
  222. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/quick_test_deployment.sh +0 -0
  223. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/recreate_session.py +0 -0
  224. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/redis_job_progress.py +0 -0
  225. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/redis_prediction_cli.py +0 -0
  226. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/redis_prediction_store.py +0 -0
  227. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/regenerate_training_movie.py +0 -0
  228. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/render_sphere.py +0 -0
  229. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/repair_checkpoint.py +0 -0
  230. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/repair_model.py +0 -0
  231. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/resubmit_es_completion.py +0 -0
  232. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/run_api_server.sh +0 -0
  233. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/send_email.py +0 -0
  234. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/slack.py +0 -0
  235. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/standalone_prediction.py +0 -0
  236. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/start_celery_cpu_worker.sh +0 -0
  237. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/start_celery_gpu_worker.sh +0 -0
  238. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/start_celery_movie_worker.sh +0 -0
  239. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/tail-watch.py +0 -0
  240. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/tree.py +0 -0
  241. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/utils.py +0 -0
  242. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/src/version.py +0 -0
  243. {featrixsphere-0.2.4984 → featrixsphere-0.2.5182}/system_monitor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.4984
3
+ Version: 0.2.5182
4
4
  Summary: Transform any CSV into a production-ready ML model in minutes, not months.
5
5
  Home-page: https://github.com/Featrix/sphere
6
6
  Author: Featrix
@@ -0,0 +1 @@
1
+ 0.2.5182
@@ -38,7 +38,7 @@ Example:
38
38
  ... labels=['Experiment A', 'Experiment B'])
39
39
  """
40
40
 
41
- __version__ = "0.2.4984"
41
+ __version__ = "0.2.5182"
42
42
  __author__ = "Featrix"
43
43
  __email__ = "support@featrix.com"
44
44
  __license__ = "MIT"
@@ -877,24 +877,30 @@ class FeatrixSphereClient:
877
877
  # Other HTTP errors - re-raise
878
878
  raise
879
879
 
880
- def publish_session(self, session_id: str) -> Dict[str, Any]:
880
+ def publish_session(self, session_id: str, org_id: str, name: str) -> Dict[str, Any]:
881
881
  """
882
- Publish a session by moving it to /sphere/published/<sessionId>.
882
+ Publish a session by moving it to /backplane/backplane1/sphere/PUBLISHED/<org_id>/<name>/<sessionId>.
883
883
  Moves both the session file and output directory.
884
884
 
885
885
  Args:
886
886
  session_id: Session ID to publish
887
+ org_id: Organization ID for subdirectory organization
888
+ name: Name for the published session (creates subdirectory under org_id)
887
889
 
888
890
  Returns:
889
891
  Response with published_path, output_path, and status
890
892
 
891
893
  Example:
892
894
  ```python
893
- result = client.publish_session("abc123")
895
+ result = client.publish_session("abc123", org_id="org_123", name="production_model")
894
896
  print(f"Published to: {result['published_path']}")
895
897
  ```
896
898
  """
897
- response_data = self._post_json(f"/compute/session/{session_id}/publish", {})
899
+ data = {
900
+ "org_id": org_id,
901
+ "name": name
902
+ }
903
+ response_data = self._post_json(f"/compute/session/{session_id}/publish", data)
898
904
  return response_data
899
905
 
900
906
  def deprecate_session(self, session_id: str, warning_message: str, expiration_date: str) -> Dict[str, Any]:
@@ -1241,7 +1247,18 @@ class FeatrixSphereClient:
1241
1247
  } if show_live_training_movie else None
1242
1248
 
1243
1249
  while time.time() - start_time < max_wait_time:
1244
- session_info = self.get_session_status(session_id)
1250
+ try:
1251
+ session_info = self.get_session_status(session_id)
1252
+ except KeyboardInterrupt:
1253
+ print("\n\n⚠️ Interrupted by user (Ctrl+C)")
1254
+ print(f" Session {session_id} status check interrupted")
1255
+ print(" Returning current session status...")
1256
+ # Return last known status or get it one more time if possible
1257
+ try:
1258
+ return self.get_session_status(session_id)
1259
+ except:
1260
+ # If we can't get status, return a basic SessionInfo
1261
+ return SessionInfo(session_id=session_id, status="unknown", jobs={})
1245
1262
 
1246
1263
  # Clear previous output and show updated status
1247
1264
  clear_output(wait=True)
@@ -1357,7 +1374,19 @@ class FeatrixSphereClient:
1357
1374
  session_task = progress.add_task(f"[bold green]Session {session_id}", total=100)
1358
1375
 
1359
1376
  while time.time() - start_time < max_wait_time:
1360
- session_info = self.get_session_status(session_id)
1377
+ try:
1378
+ session_info = self.get_session_status(session_id)
1379
+ except KeyboardInterrupt:
1380
+ progress.console.print("\n\n[bold yellow]⚠️ Interrupted by user (Ctrl+C)[/bold yellow]")
1381
+ progress.console.print(f" Session {session_id} status check interrupted")
1382
+ progress.console.print(" Returning current session status...")
1383
+ # Return last known status or get it one more time if possible
1384
+ try:
1385
+ return self.get_session_status(session_id)
1386
+ except:
1387
+ # If we can't get status, return a basic SessionInfo
1388
+ from featrixsphere.client import SessionInfo
1389
+ return SessionInfo(session_id=session_id, status="unknown", jobs={})
1361
1390
 
1362
1391
  # Update session progress
1363
1392
  elapsed = time.time() - start_time
@@ -1426,7 +1455,19 @@ class FeatrixSphereClient:
1426
1455
  jobs_appeared = False
1427
1456
 
1428
1457
  while time.time() - initial_wait_start < initial_wait_timeout:
1429
- session_info = self.get_session_status(session_id)
1458
+ try:
1459
+ session_info = self.get_session_status(session_id)
1460
+ except KeyboardInterrupt:
1461
+ logger.info("\n⚠️ Interrupted by user (Ctrl+C)")
1462
+ logger.info(f" Session {session_id} status check interrupted")
1463
+ logger.info(" Returning current session status...")
1464
+ # Return last known status or get it one more time if possible
1465
+ try:
1466
+ return self.get_session_status(session_id)
1467
+ except:
1468
+ # If we can't get status, return a basic SessionInfo
1469
+ return SessionInfo(session_id=session_id, status="unknown", jobs={})
1470
+
1430
1471
  if session_info.jobs:
1431
1472
  jobs_appeared = True
1432
1473
  break
@@ -1434,7 +1475,20 @@ class FeatrixSphereClient:
1434
1475
 
1435
1476
  # Main monitoring loop
1436
1477
  while time.time() - start_time < max_wait_time:
1437
- session_info = self.get_session_status(session_id)
1478
+ try:
1479
+ session_info = self.get_session_status(session_id)
1480
+ except KeyboardInterrupt:
1481
+ logger.info("\n⚠️ Interrupted by user (Ctrl+C)")
1482
+ logger.info(f" Session {session_id} status check interrupted")
1483
+ logger.info(" Returning current session status...")
1484
+ # Return last known status or get it one more time if possible
1485
+ try:
1486
+ return self.get_session_status(session_id)
1487
+ except:
1488
+ # If we can't get status, return a basic SessionInfo
1489
+ from featrixsphere.client import SessionInfo
1490
+ return SessionInfo(session_id=session_id, status="unknown", jobs={})
1491
+
1438
1492
  elapsed = time.time() - start_time
1439
1493
 
1440
1494
  # Call the callback with current status
@@ -1471,7 +1525,19 @@ class FeatrixSphereClient:
1471
1525
  last_num_lines = 0
1472
1526
 
1473
1527
  while time.time() - start_time < max_wait_time:
1474
- session_info = self.get_session_status(session_id)
1528
+ try:
1529
+ session_info = self.get_session_status(session_id)
1530
+ except KeyboardInterrupt:
1531
+ print("\n\n⚠️ Interrupted by user (Ctrl+C)")
1532
+ print(f" Session {session_id} status check interrupted")
1533
+ print(" Returning current session status...")
1534
+ # Return last known status or get it one more time if possible
1535
+ try:
1536
+ return self.get_session_status(session_id)
1537
+ except:
1538
+ # If we can't get status, return a basic SessionInfo
1539
+ from featrixsphere.client import SessionInfo
1540
+ return SessionInfo(session_id=session_id, status="unknown", jobs={})
1475
1541
 
1476
1542
  # Clear previous lines if terminal supports it
1477
1543
  if sys.stdout.isatty() and last_num_lines > 0:
@@ -2866,6 +2932,110 @@ class FeatrixSphereClient:
2866
2932
  response_data = self._post_json(f"/session/{session_id}/predict", request_payload, max_retries=max_retries)
2867
2933
  return response_data
2868
2934
 
2935
+ def explain(self, session_id: str, record, class_idx: int = None,
2936
+ target_column: str = None, predictor_id: str = None,
2937
+ record_b: Dict[str, Any] = None,
2938
+ max_retries: int = None) -> Dict[str, Any]:
2939
+ """
2940
+ Explain a prediction using gradient attribution.
2941
+
2942
+ Supports multiple modes:
2943
+ - explain(record): Explain a single row
2944
+ - explain(record, record_b=other_record): Compare two rows
2945
+ - explain([record1, record2, ...]): Explain multiple rows
2946
+
2947
+ Returns what matters to Featrix in the given row(s):
2948
+ - Which features mattered for this prediction
2949
+ - Which relationships mattered for this prediction
2950
+
2951
+ Args:
2952
+ session_id: ID of session with trained predictor
2953
+ record: Record dictionary (without target column), or list of records
2954
+ class_idx: Target class index for attribution (default: predicted class)
2955
+ target_column: Specific target column predictor to use (optional)
2956
+ predictor_id: Specific predictor ID to use (optional)
2957
+ record_b: Optional second record for comparison
2958
+ max_retries: Number of retries for errors (default: uses client default)
2959
+
2960
+ Returns:
2961
+ For single record:
2962
+ Dictionary with:
2963
+ - feature_scores: {col_name: score} - gradient norm per feature
2964
+ - pair_scores: {(i, j): score} - gradient norm per relationship pair
2965
+ - target_class_idx: The class index used for attribution
2966
+ - logit: The prediction logit
2967
+
2968
+ For two records (record_b provided):
2969
+ Dictionary with:
2970
+ - record_a: Explanation for first record
2971
+ - record_b: Explanation for second record
2972
+ - difference: Difference in feature_scores and pair_scores
2973
+
2974
+ For list of records:
2975
+ Dictionary with:
2976
+ - explanations: List of explanation dictionaries, one per record
2977
+ """
2978
+ # Clean NaN/Inf values
2979
+ if isinstance(record, list):
2980
+ cleaned_record = [self.replace_nans_with_nulls(self._clean_numpy_values(r)) for r in record]
2981
+ else:
2982
+ cleaned_record = self.replace_nans_with_nulls(self._clean_numpy_values(record))
2983
+
2984
+ cleaned_record_b = None
2985
+ if record_b is not None:
2986
+ cleaned_record_b = self.replace_nans_with_nulls(self._clean_numpy_values(record_b))
2987
+
2988
+ # Build request payload
2989
+ request_payload = {
2990
+ "query_record": cleaned_record,
2991
+ }
2992
+
2993
+ if class_idx is not None:
2994
+ request_payload["class_idx"] = class_idx
2995
+ if target_column:
2996
+ request_payload["target_column"] = target_column
2997
+ if predictor_id:
2998
+ request_payload["predictor_id"] = predictor_id
2999
+ if cleaned_record_b is not None:
3000
+ request_payload["query_record_b"] = cleaned_record_b
3001
+
3002
+ response_data = self._post_json(f"/session/{session_id}/explain", request_payload, max_retries=max_retries)
3003
+
3004
+ # Helper to convert pair_scores keys back to tuples
3005
+ def convert_pair_scores(ps_dict):
3006
+ if not isinstance(ps_dict, dict):
3007
+ return ps_dict
3008
+ result = {}
3009
+ for key, score in ps_dict.items():
3010
+ # Key format is "i_j"
3011
+ parts = key.split("_")
3012
+ if len(parts) == 2:
3013
+ try:
3014
+ i, j = int(parts[0]), int(parts[1])
3015
+ result[(i, j)] = score
3016
+ except ValueError:
3017
+ result[key] = score
3018
+ else:
3019
+ result[key] = score
3020
+ return result
3021
+
3022
+ # Convert pair_scores keys back to tuples for easier use
3023
+ if "pair_scores" in response_data:
3024
+ response_data["pair_scores"] = convert_pair_scores(response_data["pair_scores"])
3025
+ elif "explanations" in response_data:
3026
+ for expl in response_data["explanations"]:
3027
+ if "pair_scores" in expl:
3028
+ expl["pair_scores"] = convert_pair_scores(expl["pair_scores"])
3029
+ elif "record_a" in response_data:
3030
+ if "pair_scores" in response_data["record_a"]:
3031
+ response_data["record_a"]["pair_scores"] = convert_pair_scores(response_data["record_a"]["pair_scores"])
3032
+ if "pair_scores" in response_data["record_b"]:
3033
+ response_data["record_b"]["pair_scores"] = convert_pair_scores(response_data["record_b"]["pair_scores"])
3034
+ if "difference" in response_data and "pair_scores" in response_data["difference"]:
3035
+ response_data["difference"]["pair_scores"] = convert_pair_scores(response_data["difference"]["pair_scores"])
3036
+
3037
+ return response_data
3038
+
2869
3039
  def get_training_metrics(self, session_id: str, max_retries: int = None) -> Dict[str, Any]:
2870
3040
  """
2871
3041
  Get training metrics for a session's single predictor.
@@ -3985,108 +4155,6 @@ class FeatrixSphereClient:
3985
4155
 
3986
4156
  return predictor_id
3987
4157
 
3988
- def _resolve_predictor_id(self, session_id: str, predictor_id: str = None, target_column: str = None, debug: bool = False) -> Dict[str, Any]:
3989
- """
3990
- Resolve predictor_id or target_column to predictor information.
3991
-
3992
- Args:
3993
- session_id: Session ID to check
3994
- predictor_id: Specific predictor ID to resolve
3995
- target_column: Target column name (fallback if predictor_id not provided)
3996
- debug: Whether to print debug information
3997
-
3998
- Returns:
3999
- Dictionary with predictor info including target_column, path, predictor_id
4000
-
4001
- Raises:
4002
- ValueError: If predictor not found or ambiguous
4003
- """
4004
- available_predictors = self._get_available_predictors(session_id, debug=debug)
4005
-
4006
- if not available_predictors:
4007
- # Don't fail here - let the server try to find/auto-discover the predictor
4008
- # The server's /predict endpoint has smart fallback logic to find checkpoint files
4009
- # even if the session file wasn't properly updated (e.g., training crashed)
4010
- if debug:
4011
- print(f"⚠️ No predictors found via models endpoint, letting server handle discovery")
4012
- return {
4013
- 'target_column': target_column,
4014
- 'predictor_id': predictor_id,
4015
- 'path': None,
4016
- 'type': None,
4017
- 'server_discovery': True # Flag that server should auto-discover
4018
- }
4019
-
4020
- # If predictor_id is provided, find it directly (since it's now the key)
4021
- if predictor_id:
4022
- if predictor_id in available_predictors:
4023
- predictor_info = available_predictors[predictor_id]
4024
- return {
4025
- 'target_column': predictor_info.get('target_column'),
4026
- 'predictor_id': predictor_id,
4027
- 'path': predictor_info.get('path'),
4028
- 'type': predictor_info.get('type')
4029
- }
4030
-
4031
- # Predictor ID not found
4032
- all_predictor_ids = list(available_predictors.keys())
4033
-
4034
- raise ValueError(
4035
- f"Predictor ID '{predictor_id}' not found for session {session_id}. "
4036
- f"Available predictor IDs: {all_predictor_ids}"
4037
- )
4038
-
4039
- # Fallback to target_column validation (search through values)
4040
- if target_column is None:
4041
- # Auto-detect: only valid if there's exactly one predictor
4042
- if len(available_predictors) == 1:
4043
- predictor_id = list(available_predictors.keys())[0]
4044
- predictor_info = available_predictors[predictor_id]
4045
- return {
4046
- 'target_column': predictor_info.get('target_column'),
4047
- 'predictor_id': predictor_id,
4048
- 'path': predictor_info.get('path'),
4049
- 'type': predictor_info.get('type')
4050
- }
4051
- else:
4052
- # Show unique target columns for clarity
4053
- target_columns = list(set(pred.get('target_column') for pred in available_predictors.values()))
4054
- raise ValueError(
4055
- f"Multiple predictors found for session {session_id} with target columns: {target_columns}. "
4056
- f"Please specify predictor_id parameter for precise selection."
4057
- )
4058
- else:
4059
- # Find predictors by target column (there might be multiple)
4060
- matching_predictors = {
4061
- pred_id: pred_info for pred_id, pred_info in available_predictors.items()
4062
- if pred_info.get('target_column') == target_column
4063
- }
4064
-
4065
- if not matching_predictors:
4066
- target_columns = list(set(pred.get('target_column') for pred in available_predictors.values()))
4067
- raise ValueError(
4068
- f"No trained predictor found for target column '{target_column}' in session {session_id}. "
4069
- f"Available target columns: {target_columns}"
4070
- )
4071
-
4072
- if len(matching_predictors) == 1:
4073
- # Only one predictor for this target column
4074
- predictor_id = list(matching_predictors.keys())[0]
4075
- predictor_info = matching_predictors[predictor_id]
4076
- return {
4077
- 'target_column': target_column,
4078
- 'predictor_id': predictor_id,
4079
- 'path': predictor_info.get('path'),
4080
- 'type': predictor_info.get('type')
4081
- }
4082
- else:
4083
- # Multiple predictors for the same target column
4084
- predictor_ids = list(matching_predictors.keys())
4085
- raise ValueError(
4086
- f"Multiple predictors found for target column '{target_column}' in session {session_id}: {predictor_ids}. "
4087
- f"Please specify predictor_id parameter for precise selection."
4088
- )
4089
-
4090
4158
  def list_predictors(self, session_id: str, verbose: bool = True, debug: bool = False) -> Dict[str, Dict[str, Any]]:
4091
4159
  """
4092
4160
  List all available predictors in a session and their target columns.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.4984
3
+ Version: 0.2.5182
4
4
  Summary: Transform any CSV into a production-ready ML model in minutes, not months.
5
5
  Home-page: https://github.com/Featrix/sphere
6
6
  Author: Featrix
@@ -8,7 +8,6 @@ setup.py
8
8
  system_monitor.py
9
9
  featrixsphere/__init__.py
10
10
  featrixsphere/client.py
11
- featrixsphere/test_client.py
12
11
  featrixsphere.egg-info/PKG-INFO
13
12
  featrixsphere.egg-info/SOURCES.txt
14
13
  featrixsphere.egg-info/dependency_links.txt
@@ -63,13 +62,6 @@ src/start_celery_gpu_worker.sh
63
62
  src/start_celery_movie_worker.sh
64
63
  src/tail-watch.py
65
64
  src/test_api_client.py
66
- src/test_complete_workflow.py
67
- src/test_json_tables_prediction.py
68
- src/test_redis_predictions.py
69
- src/test_server_connection.py
70
- src/test_session_models.py
71
- src/test_single_predictor_api.py
72
- src/test_upload_endpoint.py
73
65
  src/tree.py
74
66
  src/utils.py
75
67
  src/version.py
@@ -109,8 +101,11 @@ src/lib/weightwatcher_tracking.py
109
101
  src/lib/featrix/__init__.py
110
102
  src/lib/featrix/neural/__init__.py
111
103
  src/lib/featrix/neural/calibration_utils.py
104
+ src/lib/featrix/neural/causal_relationship_scorer.py
105
+ src/lib/featrix/neural/charting.py
112
106
  src/lib/featrix/neural/classification_metrics.py
113
107
  src/lib/featrix/neural/config.py
108
+ src/lib/featrix/neural/customer_quality_tracker.py
114
109
  src/lib/featrix/neural/data_frame_data_set.py
115
110
  src/lib/featrix/neural/dataloader_utils.py
116
111
  src/lib/featrix/neural/detect.py
@@ -148,6 +143,8 @@ src/lib/featrix/neural/json_cache.py
148
143
  src/lib/featrix/neural/json_codec.py
149
144
  src/lib/featrix/neural/local_string_cache.py
150
145
  src/lib/featrix/neural/logging_config.py
146
+ src/lib/featrix/neural/lr_timeline.py
147
+ src/lib/featrix/neural/mask_bias_tracker.py
151
148
  src/lib/featrix/neural/mask_tracker.py
152
149
  src/lib/featrix/neural/model_config.py
153
150
  src/lib/featrix/neural/model_hash.py
@@ -160,6 +157,7 @@ src/lib/featrix/neural/prng_control.py
160
157
  src/lib/featrix/neural/relationship_complexity.py
161
158
  src/lib/featrix/neural/relationship_estimator.py
162
159
  src/lib/featrix/neural/relationship_extractor.py
160
+ src/lib/featrix/neural/relationship_importance_validator.py
163
161
  src/lib/featrix/neural/relationship_performance.py
164
162
  src/lib/featrix/neural/relationship_preanalysis.py
165
163
  src/lib/featrix/neural/relationship_search.py
@@ -178,7 +176,6 @@ src/lib/featrix/neural/string_analysis.py
178
176
  src/lib/featrix/neural/string_cache.py
179
177
  src/lib/featrix/neural/string_codec.py
180
178
  src/lib/featrix/neural/string_list_codec.py
181
- src/lib/featrix/neural/test_graph_encoder.py
182
179
  src/lib/featrix/neural/timestamp_codec.py
183
180
  src/lib/featrix/neural/training_banner.py
184
181
  src/lib/featrix/neural/training_context_manager.py
@@ -213,6 +210,9 @@ src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py
213
210
  src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py
214
211
  src/lib/featrix/neural/qa/test_hybrid_columns.py
215
212
  src/lib/featrix/neural/qa/test_label_smoothing.py
213
+ src/lib/featrix/neural/qa/test_lift_measurement_validation.py
214
+ src/lib/featrix/neural/qa/test_lr_timeline_smoothness.py
215
+ src/lib/featrix/neural/qa/test_min_support_rank_scaling.py
216
216
  src/lib/featrix/neural/qa/test_monitor_integration.py
217
217
  src/lib/featrix/neural/qa/test_piecewise_epochs.py
218
218
  src/lib/featrix/neural/qa/test_predict_during_training.py
@@ -222,9 +222,4 @@ src/lib/featrix/neural/qa/test_set_encoder_strategies.py
222
222
  src/lib/featrix/neural/qa/test_timeline_quick.py
223
223
  src/lib/featrix/neural/qa/test_training_monitor.py
224
224
  src/lib/featrix/neural/qa/test_warning_tracking.py
225
- src/lib/featrix/neural/qa/visualize_training_timeline.py
226
- tests/test_client_data.py
227
- tests/test_client_predictions.py
228
- tests/test_client_sessions.py
229
- tests/test_client_training.py
230
- tests/test_local_integration.py
225
+ src/lib/featrix/neural/qa/visualize_training_timeline.py