featrixsphere 0.2.1462__tar.gz → 0.2.1637__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 (188) hide show
  1. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/PKG-INFO +1 -1
  2. featrixsphere-0.2.1637/VERSION +1 -0
  3. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere/__init__.py +1 -1
  4. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere/client.py +87 -11
  5. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/PKG-INFO +1 -1
  6. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/SOURCES.txt +13 -3
  7. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/api.py +3304 -3953
  8. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/auto_upgrade_monitor.py +95 -25
  9. featrixsphere-0.2.1637/src/celery_app.py +2496 -0
  10. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/example_train_predictor.py +7 -6
  11. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/featrix_watchdog.py +29 -1
  12. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/gc_cleanup.py +208 -12
  13. featrixsphere-0.2.1637/src/lib/api_event_retry.py +442 -0
  14. featrixsphere-0.2.1637/src/lib/celery_job_recovery.py +560 -0
  15. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/es_projections.py +1 -1
  16. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/es_training.py +233 -110
  17. featrixsphere-0.2.1637/src/lib/es_training_wrapper.py +51 -0
  18. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/dataloader_utils.py +73 -10
  19. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/embedded_space.py +680 -261
  20. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/encoders.py +21 -7
  21. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/es_projection.py +6 -4
  22. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/input_data_file.py +24 -4
  23. featrixsphere-0.2.1637/src/lib/featrix/neural/io_utils.py +822 -0
  24. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/logging_config.py +17 -2
  25. featrixsphere-0.2.1637/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +212 -0
  26. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +1 -1
  27. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/single_predictor.py +239 -124
  28. featrixsphere-0.2.1637/src/lib/featrix/neural/stopwatch.py +80 -0
  29. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/string_cache.py +7 -3
  30. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/string_codec.py +55 -69
  31. featrixsphere-0.2.1637/src/lib/job_manager.py +602 -0
  32. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/knn_training.py +1 -1
  33. featrixsphere-0.2.1637/src/lib/queue_manager.py +114 -0
  34. featrixsphere-0.2.1637/src/lib/session_chains.py +621 -0
  35. featrixsphere-0.2.1637/src/lib/session_manager.py +1384 -0
  36. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/single_predictor_cv.py +1 -0
  37. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/single_predictor_training.py +164 -375
  38. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/structureddata.py +162 -29
  39. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/training_monitor.py +101 -11
  40. featrixsphere-0.2.1637/src/lib/utils.py +125 -0
  41. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/vector_db.py +26 -6
  42. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/webhook_helpers.py +21 -0
  43. featrixsphere-0.2.1637/src/migrate_string_cache_naming.py +197 -0
  44. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/node-install.sh +694 -294
  45. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/prediction_drift_monitor.py +5 -5
  46. featrixsphere-0.2.1637/src/redis_job_progress.py +391 -0
  47. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/run_api_server.sh +6 -1
  48. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/send_email.py +1 -1
  49. featrixsphere-0.2.1637/src/start_celery_cpu_worker.sh +21 -0
  50. featrixsphere-0.2.1637/src/start_celery_gpu_worker.sh +39 -0
  51. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/start_celery_worker.sh +1 -1
  52. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/start_churro_server.sh +12 -18
  53. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_api_client.py +81 -0
  54. featrixsphere-0.2.1637/src/utils.py +65 -0
  55. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/system_monitor.py +472 -84
  56. featrixsphere-0.2.1462/VERSION +0 -1
  57. featrixsphere-0.2.1462/featrixsphere/cli.py +0 -338
  58. featrixsphere-0.2.1462/src/celery_app.py +0 -987
  59. featrixsphere-0.2.1462/src/cli.py +0 -5853
  60. featrixsphere-0.2.1462/src/featrix_queue.py +0 -7206
  61. featrixsphere-0.2.1462/src/lib/featrix/neural/stopwatch.py +0 -202
  62. featrixsphere-0.2.1462/src/lib/utils.py +0 -157
  63. featrixsphere-0.2.1462/src/utils.py +0 -14
  64. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/MANIFEST.in +0 -0
  65. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/README.md +0 -0
  66. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrix-update.py +0 -0
  67. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere/test_client.py +0 -0
  68. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/dependency_links.txt +0 -0
  69. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/entry_points.txt +0 -0
  70. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/not-zip-safe +0 -0
  71. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/requires.txt +0 -0
  72. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/featrixsphere.egg-info/top_level.txt +0 -0
  73. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/nv-install.sh +0 -0
  74. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/requirements.txt +0 -0
  75. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/setup.cfg +0 -0
  76. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/setup.py +0 -0
  77. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/build_version.py +0 -0
  78. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/config.py +0 -0
  79. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/demo_existing_model.py +0 -0
  80. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/demo_label_updates.py +0 -0
  81. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/deploy.py +0 -0
  82. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/deploy_cache_debug.sh +0 -0
  83. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/ensure_watchdog_running.sh +0 -0
  84. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/error_tracker.py +0 -0
  85. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/event_log.py +0 -0
  86. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/example_api_usage.py +0 -0
  87. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/example_prediction_feedback.py +0 -0
  88. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/convergence_monitor.py +0 -0
  89. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/epoch_projections.py +0 -0
  90. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/__init__.py +0 -0
  91. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/MetaDataCache.py +0 -0
  92. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/__init__.py +0 -0
  93. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/calibration_utils.py +0 -0
  94. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/classification_metrics.py +0 -0
  95. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/config.py +0 -0
  96. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/data_frame_data_set.py +0 -0
  97. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/detect.py +0 -0
  98. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/device.py +0 -0
  99. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/domain_codec.py +0 -0
  100. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/dropout_scheduler.py +0 -0
  101. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
  102. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
  103. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/embedding_utils.py +0 -0
  104. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/enrich.py +0 -0
  105. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/exceptions.py +0 -0
  106. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/featrix_csv.py +0 -0
  107. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/featrix_json.py +0 -0
  108. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
  109. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/featrix_token.py +0 -0
  110. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/guardrails.py +0 -0
  111. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
  112. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/input_data_set.py +0 -0
  113. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/integrity.py +0 -0
  114. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/json_cache.py +0 -0
  115. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/json_codec.py +0 -0
  116. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/mask_tracker.py +0 -0
  117. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/model_config.py +0 -0
  118. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/model_hash.py +0 -0
  119. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/movie_frame_task.py +0 -0
  120. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/network_viz.py +0 -0
  121. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/prng_control.py +0 -0
  122. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
  123. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
  124. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
  125. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
  126. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/show_results.py +0 -0
  127. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
  128. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
  129. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_embedding_quality.py +0 -0
  130. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
  131. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
  132. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
  133. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
  134. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
  135. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
  136. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
  137. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_predict_during_training.py +0 -0
  138. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
  139. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
  140. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
  141. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
  142. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/scalar_codec.py +0 -0
  143. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/set_codec.py +0 -0
  144. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/setlist_codec.py +0 -0
  145. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/simple_mlp.py +0 -0
  146. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/single_predictor_mlp.py +0 -0
  147. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/sphere_config.py +0 -0
  148. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/sqlite_utils.py +0 -0
  149. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/string_analysis.py +0 -0
  150. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/string_list_codec.py +0 -0
  151. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/timestamp_codec.py +0 -0
  152. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/training_context_manager.py +0 -0
  153. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/training_event.py +0 -0
  154. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/training_exceptions.py +0 -0
  155. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/training_history_db.py +0 -0
  156. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/transformer_encoder.py +0 -0
  157. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/url_codec.py +0 -0
  158. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/url_parser.py +0 -0
  159. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/utils.py +0 -0
  160. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/vector_codec.py +0 -0
  161. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix/neural/world_data.py +0 -0
  162. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/featrix_debug.py +0 -0
  163. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/json_encoder_cache.py +0 -0
  164. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/sphere_config.py +0 -0
  165. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/lib/weightwatcher_tracking.py +0 -0
  166. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/llm_client.py +0 -0
  167. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/manage_churro.sh +0 -0
  168. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/neural.py +0 -0
  169. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/prediction_persistence_worker.py +0 -0
  170. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/quick_test_deployment.sh +0 -0
  171. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/recreate_session.py +0 -0
  172. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/redis_prediction_cli.py +0 -0
  173. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/redis_prediction_store.py +0 -0
  174. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/regenerate_training_movie.py +0 -0
  175. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/render_sphere.py +0 -0
  176. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/restart_celery_worker.sh +0 -0
  177. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/slack.py +0 -0
  178. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/standalone_prediction.py +0 -0
  179. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/tail-watch.py +0 -0
  180. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_complete_workflow.py +0 -0
  181. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_json_tables_prediction.py +0 -0
  182. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_redis_predictions.py +0 -0
  183. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_server_connection.py +0 -0
  184. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_session_models.py +0 -0
  185. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_single_predictor_api.py +0 -0
  186. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/test_upload_endpoint.py +0 -0
  187. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/tree.py +0 -0
  188. {featrixsphere-0.2.1462 → featrixsphere-0.2.1637}/src/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.1462
3
+ Version: 0.2.1637
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.1637
@@ -38,7 +38,7 @@ Example:
38
38
  ... labels=['Experiment A', 'Experiment B'])
39
39
  """
40
40
 
41
- __version__ = "0.2.1462"
41
+ __version__ = "0.2.1637"
42
42
  __author__ = "Featrix"
43
43
  __email__ = "support@featrix.com"
44
44
  __license__ = "MIT"
@@ -281,9 +281,20 @@ class FeatrixSphereClient:
281
281
  max_retries = self.default_max_retries
282
282
 
283
283
  # Special handling for session endpoints - longer retry window for 504 errors
284
- is_session_endpoint = '/session/' in endpoint
285
- if max_retry_time is None and is_session_endpoint:
286
- max_retry_time = 120.0 # 120 seconds for session endpoints
284
+ # Session endpoints include /session/ and /upload_with_new_session/ (creates session)
285
+ is_session_endpoint = '/session/' in endpoint or '/upload_with_new_session' in endpoint
286
+
287
+ # For upload endpoints, use a much longer timeout (10 minutes for large files)
288
+ # This MUST happen before setting max_retry_time to ensure uploads get proper timeout
289
+ if '/upload_with_new_session' in endpoint:
290
+ # Override timeout if not explicitly set in kwargs
291
+ if 'timeout' not in kwargs:
292
+ kwargs['timeout'] = 600 # 10 minutes for file uploads
293
+ # Also set a longer max_retry_time for upload endpoints (10 minutes)
294
+ if max_retry_time is None:
295
+ max_retry_time = 600.0 # 10 minutes for upload endpoints
296
+ elif max_retry_time is None and is_session_endpoint:
297
+ max_retry_time = 120.0 # 120 seconds for other session endpoints
287
298
 
288
299
  # Auto-add /compute prefix for session endpoints
289
300
  if endpoint.startswith('/session/') and not endpoint.startswith('/compute/session/'):
@@ -323,7 +334,8 @@ class FeatrixSphereClient:
323
334
  else:
324
335
  # Out of retry time
325
336
  print(f"API request failed: {method} {url}")
326
- print(f"504 Gateway Timeout - exceeded max retry time ({max_retry_time}s)")
337
+ max_retry_time_str = f"{max_retry_time}s" if max_retry_time else "None"
338
+ print(f"504 Gateway Timeout - exceeded max retry time ({max_retry_time_str})")
327
339
  raise
328
340
 
329
341
  # Check for server restart patterns in 500 errors
@@ -1082,19 +1094,29 @@ class FeatrixSphereClient:
1082
1094
  """
1083
1095
 
1084
1096
  if session_info.jobs:
1097
+ # Human-readable job type descriptions
1098
+ JOB_TYPE_NAMES = {
1099
+ 'create_structured_data': 'Creating Structured Data',
1100
+ 'train_es': 'Training Embedding Space',
1101
+ 'train_knn': 'Training KNN Index',
1102
+ 'run_clustering': 'Running Clustering',
1103
+ 'train_single_predictor': 'Training Predictor',
1104
+ }
1105
+
1085
1106
  html_content += "<h4>Jobs:</h4><ul>"
1086
1107
  for job_id, job in session_info.jobs.items():
1087
1108
  job_status = job.get('status', 'unknown')
1088
1109
  progress = job.get('progress')
1089
1110
  job_type = job.get('type', job_id.split('_')[0])
1111
+ job_display_name = JOB_TYPE_NAMES.get(job_type, job_type)
1090
1112
 
1091
1113
  if progress is not None:
1092
1114
  progress_pct = progress * 100
1093
1115
  progress_bar = "▓" * int(progress_pct / 5) + "░" * (20 - int(progress_pct / 5))
1094
- html_content += f"<li><strong>{job_type}:</strong> {job_status} [{progress_bar}] {progress_pct:.1f}%</li>"
1116
+ html_content += f"<li><strong>{job_display_name}:</strong> {job_status} [{progress_bar}] {progress_pct:.1f}%</li>"
1095
1117
  else:
1096
1118
  status_emoji = "✅" if job_status == "done" else "🔄" if job_status == "running" else "❌"
1097
- html_content += f"<li>{status_emoji} <strong>{job_type}:</strong> {job_status}</li>"
1119
+ html_content += f"<li>{status_emoji} <strong>{job_display_name}:</strong> {job_status}</li>"
1098
1120
  html_content += "</ul>"
1099
1121
 
1100
1122
  display(HTML(html_content))
@@ -1149,6 +1171,15 @@ class FeatrixSphereClient:
1149
1171
  from rich.text import Text
1150
1172
  import time
1151
1173
 
1174
+ # Human-readable job type descriptions
1175
+ JOB_TYPE_NAMES = {
1176
+ 'create_structured_data': 'Creating Structured Data',
1177
+ 'train_es': 'Training Embedding Space',
1178
+ 'train_knn': 'Training KNN Index',
1179
+ 'run_clustering': 'Running Clustering',
1180
+ 'train_single_predictor': 'Training Predictor',
1181
+ }
1182
+
1152
1183
  start_time = time.time()
1153
1184
  job_tasks = {} # Track progress tasks for each job
1154
1185
 
@@ -1180,15 +1211,18 @@ class FeatrixSphereClient:
1180
1211
  for job_id, job in session_info.jobs.items():
1181
1212
  if job_id not in job_tasks:
1182
1213
  job_type = job.get('type', job_id.split('_')[0])
1183
- job_tasks[job_id] = progress.add_task(f"[cyan]{job_type}", total=100)
1214
+ job_display_name = JOB_TYPE_NAMES.get(job_type, job_type)
1215
+ job_tasks[job_id] = progress.add_task(f"[cyan]{job_display_name}", total=100)
1184
1216
 
1185
1217
  # Update job progress
1186
1218
  job_status = job.get('status', 'unknown')
1187
1219
  raw_progress = job.get('progress', 0)
1188
1220
  job_progress = 100 if job_status == 'done' else (raw_progress * 100 if raw_progress else 0)
1189
1221
 
1222
+ job_type = job.get('type', job_id.split('_')[0])
1223
+ job_display_name = JOB_TYPE_NAMES.get(job_type, job_type)
1190
1224
  progress.update(job_tasks[job_id], completed=job_progress,
1191
- description=f"[cyan]{job.get('type', job_id.split('_')[0])} ({job_status})")
1225
+ description=f"[cyan]{job_display_name} ({job_status})")
1192
1226
 
1193
1227
  # Check completion
1194
1228
  if session_info.status in ['done', 'failed', 'cancelled']:
@@ -1232,8 +1266,20 @@ class FeatrixSphereClient:
1232
1266
  status_callback(session_info, elapsed)
1233
1267
 
1234
1268
  # Check if completed
1269
+ # CRITICAL: Only return done if we actually have jobs that completed
1270
+ # If no jobs exist, session shouldn't be marked as done
1235
1271
  if session_info.status in ['completed', 'done', 'DONE']:
1236
- return session_info
1272
+ # Verify that jobs actually exist and completed
1273
+ if session_info.jobs:
1274
+ # Check if all jobs are in terminal states
1275
+ terminal_states = {'done', 'failed', 'cancelled'}
1276
+ all_terminal = all(job.get('status') in terminal_states for job in session_info.jobs.values())
1277
+ if all_terminal:
1278
+ return session_info
1279
+ else:
1280
+ # No jobs but status is "done" - this is a bug, keep waiting
1281
+ logger.warning(f"⚠️ Session {session_id} status is 'done' but no jobs exist - this shouldn't happen, continuing to wait...")
1282
+ # Don't return - keep waiting for jobs to appear
1237
1283
 
1238
1284
  time.sleep(check_interval)
1239
1285
 
@@ -2145,8 +2191,38 @@ class FeatrixSphereClient:
2145
2191
  data['quick_run'] = 'true'
2146
2192
  data['epochs'] = str(epochs)
2147
2193
  print(f"Training epochs: {epochs} (quick_run mode enabled)")
2148
-
2149
- response = self._make_request("POST", "/compute/upload_with_new_session/", files=files, data=data)
2194
+
2195
+ # Check file size - warn if very large
2196
+ file_size_mb = len(file_content) / (1024 * 1024)
2197
+ CHUNK_SIZE_MB = 512 # 512 MB chunk size
2198
+ CHUNK_SIZE_BYTES = CHUNK_SIZE_MB * 1024 * 1024
2199
+
2200
+ if file_size_mb > CHUNK_SIZE_MB:
2201
+ print(f"⚠️ Warning: File size ({file_size_mb:.1f} MB) exceeds {CHUNK_SIZE_MB} MB threshold")
2202
+ print(f" Large uploads may timeout. Consider splitting the data or using smaller batches.")
2203
+
2204
+ # Try upload with retry on 504
2205
+ import time
2206
+ upload_trace_id = f"UPLOAD-{int(time.time()*1000)}"
2207
+ print(f"🔵 [CLIENT] {upload_trace_id} Starting upload request")
2208
+ print(f" Endpoint: /compute/upload_with_new_session/")
2209
+ print(f" File: {filename}, Size: {file_size_mb:.2f} MB")
2210
+ print(f" Form data keys: {list(data.keys())}")
2211
+ try:
2212
+ response = self._make_request("POST", "/compute/upload_with_new_session/", files=files, data=data)
2213
+ print(f"🔵 [CLIENT] {upload_trace_id} Received response: HTTP {response.status_code}")
2214
+ except requests.exceptions.HTTPError as e:
2215
+ # If we get a 504 and file is large, suggest chunking
2216
+ if e.response and e.response.status_code == 504 and file_size_mb > CHUNK_SIZE_MB:
2217
+ print(f"\n❌ 504 Gateway Timeout on large file upload ({file_size_mb:.1f} MB)")
2218
+ print(f" File exceeds {CHUNK_SIZE_MB} MB - chunking not yet implemented for regular uploads")
2219
+ print(f" Consider:")
2220
+ print(f" 1. Splitting your data into smaller files (< {CHUNK_SIZE_MB} MB each)")
2221
+ print(f" 2. Using the chunked upload endpoint (if available)")
2222
+ print(f" 3. Retrying the upload (server may have been temporarily busy)")
2223
+ raise
2224
+ else:
2225
+ raise
2150
2226
 
2151
2227
  response_data = response.json()
2152
2228
  session_id = response_data.get('session_id')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.1462
3
+ Version: 0.2.1637
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
@@ -7,7 +7,6 @@ requirements.txt
7
7
  setup.py
8
8
  system_monitor.py
9
9
  featrixsphere/__init__.py
10
- featrixsphere/cli.py
11
10
  featrixsphere/client.py
12
11
  featrixsphere/test_client.py
13
12
  featrixsphere.egg-info/PKG-INFO
@@ -21,7 +20,6 @@ src/api.py
21
20
  src/auto_upgrade_monitor.py
22
21
  src/build_version.py
23
22
  src/celery_app.py
24
- src/cli.py
25
23
  src/config.py
26
24
  src/demo_existing_model.py
27
25
  src/demo_label_updates.py
@@ -33,17 +31,18 @@ src/event_log.py
33
31
  src/example_api_usage.py
34
32
  src/example_prediction_feedback.py
35
33
  src/example_train_predictor.py
36
- src/featrix_queue.py
37
34
  src/featrix_watchdog.py
38
35
  src/gc_cleanup.py
39
36
  src/llm_client.py
40
37
  src/manage_churro.sh
38
+ src/migrate_string_cache_naming.py
41
39
  src/neural.py
42
40
  src/node-install.sh
43
41
  src/prediction_drift_monitor.py
44
42
  src/prediction_persistence_worker.py
45
43
  src/quick_test_deployment.sh
46
44
  src/recreate_session.py
45
+ src/redis_job_progress.py
47
46
  src/redis_prediction_cli.py
48
47
  src/redis_prediction_store.py
49
48
  src/regenerate_training_movie.py
@@ -53,6 +52,8 @@ src/run_api_server.sh
53
52
  src/send_email.py
54
53
  src/slack.py
55
54
  src/standalone_prediction.py
55
+ src/start_celery_cpu_worker.sh
56
+ src/start_celery_gpu_worker.sh
56
57
  src/start_celery_worker.sh
57
58
  src/start_churro_server.sh
58
59
  src/tail-watch.py
@@ -67,13 +68,20 @@ src/test_upload_endpoint.py
67
68
  src/tree.py
68
69
  src/utils.py
69
70
  src/version.py
71
+ src/lib/api_event_retry.py
72
+ src/lib/celery_job_recovery.py
70
73
  src/lib/convergence_monitor.py
71
74
  src/lib/epoch_projections.py
72
75
  src/lib/es_projections.py
73
76
  src/lib/es_training.py
77
+ src/lib/es_training_wrapper.py
74
78
  src/lib/featrix_debug.py
79
+ src/lib/job_manager.py
75
80
  src/lib/json_encoder_cache.py
76
81
  src/lib/knn_training.py
82
+ src/lib/queue_manager.py
83
+ src/lib/session_chains.py
84
+ src/lib/session_manager.py
77
85
  src/lib/single_predictor_cv.py
78
86
  src/lib/single_predictor_training.py
79
87
  src/lib/sphere_config.py
@@ -112,6 +120,7 @@ src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py
112
120
  src/lib/featrix/neural/input_data_file.py
113
121
  src/lib/featrix/neural/input_data_set.py
114
122
  src/lib/featrix/neural/integrity.py
123
+ src/lib/featrix/neural/io_utils.py
115
124
  src/lib/featrix/neural/json_cache.py
116
125
  src/lib/featrix/neural/json_codec.py
117
126
  src/lib/featrix/neural/logging_config.py
@@ -151,6 +160,7 @@ src/lib/featrix/neural/qa/generate_focal_report.py
151
160
  src/lib/featrix/neural/qa/model_advisor.py
152
161
  src/lib/featrix/neural/qa/show_results.py
153
162
  src/lib/featrix/neural/qa/test_adaptive_training.py
163
+ src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py
154
164
  src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py
155
165
  src/lib/featrix/neural/qa/test_embedding_quality.py
156
166
  src/lib/featrix/neural/qa/test_embedding_space.py