featrixsphere 0.2.1637__tar.gz → 0.2.1830__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 (185) hide show
  1. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/PKG-INFO +1 -1
  2. featrixsphere-0.2.1830/VERSION +1 -0
  3. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrix-update.py +14 -0
  4. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere/__init__.py +1 -1
  5. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere/client.py +213 -0
  6. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/PKG-INFO +1 -1
  7. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/SOURCES.txt +3 -0
  8. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/api.py +552 -4
  9. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/celery_app.py +197 -7
  10. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/featrix_watchdog.py +89 -2
  11. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/gc_cleanup.py +39 -1
  12. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/convergence_monitor.py +43 -0
  13. featrixsphere-0.2.1830/src/lib/crash_tracker.py +283 -0
  14. featrixsphere-0.2.1830/src/lib/distribution_shift_detector.py +481 -0
  15. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/es_training.py +1 -2
  16. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/es_training_wrapper.py +13 -4
  17. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/dataloader_utils.py +52 -13
  18. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/embedded_space.py +1097 -356
  19. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/embedding_space_utils.py +5 -0
  20. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/encoders.py +79 -24
  21. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/io_utils.py +249 -61
  22. featrixsphere-0.2.1830/src/lib/featrix/neural/logging_config.py +118 -0
  23. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/mask_tracker.py +23 -6
  24. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/model_config.py +1 -0
  25. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/set_codec.py +1 -1
  26. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/single_predictor.py +637 -178
  27. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/sphere_config.py +37 -5
  28. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/string_cache.py +238 -186
  29. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/string_codec.py +323 -275
  30. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/utils.py +29 -8
  31. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/job_manager.py +41 -11
  32. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/session_chains.py +15 -23
  33. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/session_manager.py +70 -2
  34. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/single_predictor_cv.py +4 -3
  35. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/single_predictor_training.py +122 -47
  36. featrixsphere-0.2.1830/src/lib/system_health_monitor.py +465 -0
  37. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/weightwatcher_tracking.py +70 -10
  38. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/node-install.sh +327 -16
  39. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/start_celery_cpu_worker.sh +0 -1
  40. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/start_celery_gpu_worker.sh +0 -1
  41. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/start_celery_worker.sh +0 -1
  42. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/system_monitor.py +498 -86
  43. featrixsphere-0.2.1637/VERSION +0 -1
  44. featrixsphere-0.2.1637/src/lib/featrix/neural/logging_config.py +0 -67
  45. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/MANIFEST.in +0 -0
  46. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/README.md +0 -0
  47. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere/test_client.py +0 -0
  48. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/dependency_links.txt +0 -0
  49. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/entry_points.txt +0 -0
  50. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/not-zip-safe +0 -0
  51. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/requires.txt +0 -0
  52. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/featrixsphere.egg-info/top_level.txt +0 -0
  53. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/nv-install.sh +0 -0
  54. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/requirements.txt +0 -0
  55. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/setup.cfg +0 -0
  56. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/setup.py +0 -0
  57. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/auto_upgrade_monitor.py +0 -0
  58. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/build_version.py +0 -0
  59. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/config.py +0 -0
  60. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/demo_existing_model.py +0 -0
  61. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/demo_label_updates.py +0 -0
  62. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/deploy.py +0 -0
  63. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/deploy_cache_debug.sh +0 -0
  64. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/ensure_watchdog_running.sh +0 -0
  65. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/error_tracker.py +0 -0
  66. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/event_log.py +0 -0
  67. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/example_api_usage.py +0 -0
  68. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/example_prediction_feedback.py +0 -0
  69. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/example_train_predictor.py +0 -0
  70. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/api_event_retry.py +0 -0
  71. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/celery_job_recovery.py +0 -0
  72. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/epoch_projections.py +0 -0
  73. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/es_projections.py +0 -0
  74. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/__init__.py +0 -0
  75. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/MetaDataCache.py +0 -0
  76. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/__init__.py +0 -0
  77. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/calibration_utils.py +0 -0
  78. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/classification_metrics.py +0 -0
  79. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/config.py +0 -0
  80. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/data_frame_data_set.py +0 -0
  81. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/detect.py +0 -0
  82. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/device.py +0 -0
  83. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/domain_codec.py +0 -0
  84. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/dropout_scheduler.py +0 -0
  85. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
  86. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/embedding_utils.py +0 -0
  87. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/enrich.py +0 -0
  88. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/es_projection.py +0 -0
  89. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/exceptions.py +0 -0
  90. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/featrix_csv.py +0 -0
  91. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/featrix_json.py +0 -0
  92. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
  93. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/featrix_token.py +0 -0
  94. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/guardrails.py +0 -0
  95. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
  96. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/input_data_file.py +0 -0
  97. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/input_data_set.py +0 -0
  98. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/integrity.py +0 -0
  99. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/json_cache.py +0 -0
  100. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/json_codec.py +0 -0
  101. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/model_hash.py +0 -0
  102. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/movie_frame_task.py +0 -0
  103. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/network_viz.py +0 -0
  104. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/prng_control.py +0 -0
  105. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
  106. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
  107. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
  108. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
  109. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/show_results.py +0 -0
  110. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
  111. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +0 -0
  112. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
  113. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_embedding_quality.py +0 -0
  114. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
  115. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
  116. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
  117. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
  118. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
  119. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
  120. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
  121. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
  122. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_predict_during_training.py +0 -0
  123. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
  124. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
  125. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
  126. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
  127. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/scalar_codec.py +0 -0
  128. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/setlist_codec.py +0 -0
  129. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/simple_mlp.py +0 -0
  130. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/single_predictor_mlp.py +0 -0
  131. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/sqlite_utils.py +0 -0
  132. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/stopwatch.py +0 -0
  133. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/string_analysis.py +0 -0
  134. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/string_list_codec.py +0 -0
  135. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/timestamp_codec.py +0 -0
  136. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/training_context_manager.py +0 -0
  137. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/training_event.py +0 -0
  138. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/training_exceptions.py +0 -0
  139. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/training_history_db.py +0 -0
  140. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/transformer_encoder.py +0 -0
  141. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/url_codec.py +0 -0
  142. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/url_parser.py +0 -0
  143. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/vector_codec.py +0 -0
  144. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix/neural/world_data.py +0 -0
  145. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/featrix_debug.py +0 -0
  146. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/json_encoder_cache.py +0 -0
  147. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/knn_training.py +0 -0
  148. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/queue_manager.py +0 -0
  149. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/sphere_config.py +0 -0
  150. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/structureddata.py +0 -0
  151. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/training_monitor.py +0 -0
  152. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/utils.py +0 -0
  153. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/vector_db.py +0 -0
  154. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/lib/webhook_helpers.py +0 -0
  155. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/llm_client.py +0 -0
  156. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/manage_churro.sh +0 -0
  157. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/migrate_string_cache_naming.py +0 -0
  158. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/neural.py +0 -0
  159. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/prediction_drift_monitor.py +0 -0
  160. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/prediction_persistence_worker.py +0 -0
  161. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/quick_test_deployment.sh +0 -0
  162. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/recreate_session.py +0 -0
  163. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/redis_job_progress.py +0 -0
  164. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/redis_prediction_cli.py +0 -0
  165. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/redis_prediction_store.py +0 -0
  166. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/regenerate_training_movie.py +0 -0
  167. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/render_sphere.py +0 -0
  168. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/restart_celery_worker.sh +0 -0
  169. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/run_api_server.sh +0 -0
  170. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/send_email.py +0 -0
  171. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/slack.py +0 -0
  172. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/standalone_prediction.py +0 -0
  173. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/start_churro_server.sh +0 -0
  174. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/tail-watch.py +0 -0
  175. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_api_client.py +0 -0
  176. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_complete_workflow.py +0 -0
  177. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_json_tables_prediction.py +0 -0
  178. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_redis_predictions.py +0 -0
  179. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_server_connection.py +0 -0
  180. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_session_models.py +0 -0
  181. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_single_predictor_api.py +0 -0
  182. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/test_upload_endpoint.py +0 -0
  183. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/tree.py +0 -0
  184. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/utils.py +0 -0
  185. {featrixsphere-0.2.1637 → featrixsphere-0.2.1830}/src/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.1637
3
+ Version: 0.2.1830
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.1830
@@ -409,10 +409,24 @@ def main():
409
409
  newest_version = newest['version']
410
410
  newest_filename = newest['filename']
411
411
  newest_hash = newest.get('hash')
412
+ newest_date = newest.get('date_modified')
412
413
  newest_url = f"{FIRMWARE_SERVER}/{newest_filename}"
413
414
 
415
+ # Format date if available
416
+ date_str = ""
417
+ if newest_date:
418
+ try:
419
+ # Parse ISO format date and format nicely
420
+ date_obj = datetime.fromisoformat(newest_date.replace('Z', '+00:00'))
421
+ date_str = date_obj.strftime("%Y-%m-%d %H:%M:%S")
422
+ except Exception:
423
+ # Fallback to raw date if parsing fails
424
+ date_str = newest_date
425
+
414
426
  print(f"\n📊 Available versions:")
415
427
  print(f" Newest: {newest_version} ({newest_filename})")
428
+ if date_str:
429
+ print(f" Date: {date_str}")
416
430
  if newest_hash:
417
431
  print(f" Hash: {newest_hash[:16]}...")
418
432
 
@@ -38,7 +38,7 @@ Example:
38
38
  ... labels=['Experiment A', 'Experiment B'])
39
39
  """
40
40
 
41
- __version__ = "0.2.1637"
41
+ __version__ = "0.2.1830"
42
42
  __author__ = "Featrix"
43
43
  __email__ = "support@featrix.com"
44
44
  __license__ = "MIT"
@@ -5372,6 +5372,219 @@ class FeatrixSphereClient:
5372
5372
  if verbose:
5373
5373
  print(f"❌ Error starting predictor continuation: {e}")
5374
5374
  raise
5375
+
5376
+ def train_on_partial_foundation(
5377
+ self,
5378
+ foundation_session_id: str,
5379
+ local_data_file: str,
5380
+ target_column: str,
5381
+ target_column_type: str,
5382
+ checkpoint_epoch: int = None,
5383
+ epochs: int = 0,
5384
+ rare_label_value: str = None,
5385
+ use_class_weights: bool = True,
5386
+ class_imbalance: dict = None,
5387
+ cost_false_positive: float = None,
5388
+ cost_false_negative: float = None,
5389
+ name: str = None,
5390
+ session_name_prefix: str = None,
5391
+ webhooks: Dict[str, str] = None,
5392
+ poll_interval: int = 30,
5393
+ max_poll_time: int = 3600,
5394
+ verbose: bool = True
5395
+ ) -> Dict[str, Any]:
5396
+ """
5397
+ Train a predictor on a partial/in-progress foundation model.
5398
+
5399
+ Designed for use while the foundation model is STILL TRAINING. Test predictor
5400
+ performance on intermediate checkpoints without waiting for full ES training
5401
+ to complete. Also works with completed foundation training.
5402
+
5403
+ Creates a NEW session using:
5404
+ - Checkpoint from foundation's ES training (specific epoch or best/latest)
5405
+ - Your uploaded data file for predictor training
5406
+ - Metadata about foundation training progress at checkpoint time
5407
+
5408
+ Perfect for:
5409
+ - Testing predictor performance while ES is still training
5410
+ - Training on partially-trained foundation models
5411
+ - Running parallel experiments on different checkpoint epochs
5412
+
5413
+ Args:
5414
+ foundation_session_id: Session ID with ES training (in-progress or completed)
5415
+ local_data_file: Path to CSV file on YOUR MACHINE (will be uploaded)
5416
+ target_column: Column to predict
5417
+ target_column_type: "set" for classification, "scalar" for regression
5418
+ checkpoint_epoch: Which epoch checkpoint to use (None = best/latest available)
5419
+ epochs: Predictor training epochs (0 = auto-calculate based on data size)
5420
+ rare_label_value: Minority class label for binary classification
5421
+ use_class_weights: Enable class weighting for imbalanced data
5422
+ class_imbalance: Expected class distribution from real world
5423
+ cost_false_positive: Cost of false positive (classification only)
5424
+ cost_false_negative: Cost of false negative (classification only)
5425
+ name: Optional name for the new session
5426
+ session_name_prefix: Optional prefix for session ID
5427
+ webhooks: Webhook configuration dict
5428
+ poll_interval: Seconds between status checks (default: 30)
5429
+ max_poll_time: Maximum polling time in seconds (default: 3600 = 1 hour)
5430
+ verbose: Print status updates
5431
+
5432
+ Returns:
5433
+ dict with:
5434
+ - new_session_id: Created session ID
5435
+ - foundation_session_id: Original foundation session
5436
+ - checkpoint_epoch: Epoch used for checkpoint
5437
+ - foundation_training_metadata: Progress info when checkpoint was created
5438
+ - target_column: Column being predicted
5439
+ - predictor_epochs: Training epochs
5440
+
5441
+ Example:
5442
+ ```python
5443
+ # Train on epoch 50 checkpoint while ES is still training
5444
+ result = client.train_on_partial_foundation(
5445
+ foundation_session_id="abc-def-ghi",
5446
+ local_data_file="my_data.csv",
5447
+ target_column="price",
5448
+ target_column_type="scalar",
5449
+ checkpoint_epoch=50,
5450
+ epochs=100
5451
+ )
5452
+
5453
+ print(f"New session: {result['new_session_id']}")
5454
+ print(f"Foundation was {result['foundation_training_metadata']['training_progress_percent']}% trained")
5455
+ ```
5456
+ """
5457
+ import os
5458
+ from pathlib import Path
5459
+
5460
+ # Validate inputs
5461
+ if not os.path.exists(local_data_file):
5462
+ raise FileNotFoundError(f"Local data file not found: {local_data_file}")
5463
+
5464
+ if target_column_type not in ["set", "scalar"]:
5465
+ raise ValueError("target_column_type must be 'set' or 'scalar'")
5466
+
5467
+ # Prepare form data
5468
+ form_data = {
5469
+ 'target_column': target_column,
5470
+ 'target_column_type': target_column_type,
5471
+ 'epochs': str(epochs),
5472
+ 'use_class_weights': str(use_class_weights).lower(),
5473
+ }
5474
+
5475
+ if checkpoint_epoch is not None:
5476
+ form_data['checkpoint_epoch'] = str(checkpoint_epoch)
5477
+ if rare_label_value:
5478
+ form_data['rare_label_value'] = rare_label_value
5479
+ if class_imbalance:
5480
+ import json
5481
+ form_data['class_imbalance'] = json.dumps(class_imbalance)
5482
+ if cost_false_positive is not None:
5483
+ form_data['cost_false_positive'] = str(cost_false_positive)
5484
+ if cost_false_negative is not None:
5485
+ form_data['cost_false_negative'] = str(cost_false_negative)
5486
+ if name:
5487
+ form_data['name'] = name
5488
+ if session_name_prefix:
5489
+ form_data['session_name_prefix'] = session_name_prefix
5490
+ if webhooks:
5491
+ import json
5492
+ form_data['webhooks'] = json.dumps(webhooks)
5493
+
5494
+ # Upload file
5495
+ try:
5496
+ with open(local_data_file, 'rb') as f:
5497
+ files = {'file': (Path(local_data_file).name, f, 'text/csv')}
5498
+ response_data = self._post_multipart(
5499
+ f"/compute/session/{foundation_session_id}/train_on_partial_foundation",
5500
+ data=form_data,
5501
+ files=files
5502
+ )
5503
+
5504
+ new_session_id = response_data.get('new_session_id')
5505
+ checkpoint_epoch_used = response_data.get('checkpoint_epoch')
5506
+ training_metadata = response_data.get('foundation_training_metadata', {})
5507
+
5508
+ if verbose:
5509
+ print(f"✅ {response_data.get('message')}")
5510
+ print(f" New session ID: {new_session_id}")
5511
+ print(f" Checkpoint epoch: {checkpoint_epoch_used}")
5512
+ if training_metadata.get('training_progress_percent'):
5513
+ print(f" Foundation training progress: {training_metadata['training_progress_percent']}%")
5514
+ if training_metadata.get('validation_loss_at_checkpoint'):
5515
+ print(f" Val loss at checkpoint: {training_metadata['validation_loss_at_checkpoint']:.4f}")
5516
+
5517
+ # Poll for completion if requested
5518
+ if poll_interval > 0 and max_poll_time > 0 and new_session_id:
5519
+ import time
5520
+ start_time = time.time()
5521
+ last_message = ""
5522
+
5523
+ while time.time() - start_time < max_poll_time:
5524
+ try:
5525
+ session_info = self.get_session_status(new_session_id)
5526
+ jobs = session_info.jobs if hasattr(session_info, 'jobs') else {}
5527
+
5528
+ # Find predictor training jobs
5529
+ sp_jobs = {j_id: j for j_id, j in jobs.items()
5530
+ if 'train_single_predictor' in j.get('type', '')}
5531
+
5532
+ if not sp_jobs:
5533
+ if verbose:
5534
+ print("⏳ Waiting for predictor job to start...")
5535
+ time.sleep(poll_interval)
5536
+ continue
5537
+
5538
+ # Check statuses
5539
+ running = [j_id for j_id, j in sp_jobs.items() if j.get('status') == 'running']
5540
+ done = [j_id for j_id, j in sp_jobs.items() if j.get('status') == 'done']
5541
+ failed = [j_id for j_id, j in sp_jobs.items() if j.get('status') == 'failed']
5542
+
5543
+ status_msg = f"Running: {len(running)}, Done: {len(done)}, Failed: {len(failed)}"
5544
+ if status_msg != last_message and verbose:
5545
+ print(f"📊 {status_msg}")
5546
+ last_message = status_msg
5547
+
5548
+ if not running and (done or failed):
5549
+ if done:
5550
+ if verbose:
5551
+ print(f"✅ Predictor training completed!")
5552
+ return {
5553
+ **response_data,
5554
+ "status": "completed",
5555
+ "poll_time": int(time.time() - start_time)
5556
+ }
5557
+ elif failed:
5558
+ if verbose:
5559
+ print(f"❌ Predictor training failed")
5560
+ return {
5561
+ **response_data,
5562
+ "status": "failed",
5563
+ "failed_jobs": failed,
5564
+ "poll_time": int(time.time() - start_time)
5565
+ }
5566
+
5567
+ time.sleep(poll_interval)
5568
+ except Exception as poll_error:
5569
+ if verbose:
5570
+ print(f"⚠️ Polling error: {poll_error}")
5571
+ time.sleep(poll_interval)
5572
+
5573
+ if verbose:
5574
+ print(f"⏰ Polling timeout ({max_poll_time}s). Training may still be in progress.")
5575
+
5576
+ return {
5577
+ **response_data,
5578
+ "status": "timeout",
5579
+ "poll_time": max_poll_time
5580
+ }
5581
+
5582
+ return response_data
5583
+
5584
+ except Exception as e:
5585
+ if verbose:
5586
+ print(f"❌ Error training on partial foundation: {e}")
5587
+ raise
5375
5588
 
5376
5589
  def foundation_model_train_more(self, session_id: str, es_id: str = None, data_passes: int = None,
5377
5590
  epochs: int = None, poll_interval: int = 30, max_poll_time: int = 3600,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.1637
3
+ Version: 0.2.1830
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
@@ -71,6 +71,8 @@ src/version.py
71
71
  src/lib/api_event_retry.py
72
72
  src/lib/celery_job_recovery.py
73
73
  src/lib/convergence_monitor.py
74
+ src/lib/crash_tracker.py
75
+ src/lib/distribution_shift_detector.py
74
76
  src/lib/epoch_projections.py
75
77
  src/lib/es_projections.py
76
78
  src/lib/es_training.py
@@ -86,6 +88,7 @@ src/lib/single_predictor_cv.py
86
88
  src/lib/single_predictor_training.py
87
89
  src/lib/sphere_config.py
88
90
  src/lib/structureddata.py
91
+ src/lib/system_health_monitor.py
89
92
  src/lib/training_monitor.py
90
93
  src/lib/utils.py
91
94
  src/lib/vector_db.py