featrixsphere 0.2.2280__tar.gz → 0.2.3611__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 (219) hide show
  1. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/PKG-INFO +1 -1
  2. featrixsphere-0.2.3611/VERSION +1 -0
  3. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrix-update.py +35 -6
  4. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/__init__.py +1 -1
  5. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/client.py +36 -18
  6. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/PKG-INFO +1 -1
  7. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/SOURCES.txt +15 -3
  8. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/api.py +620 -101
  9. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/celery_app.py +278 -52
  10. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_prediction_feedback.py +10 -50
  11. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/featrix_watchdog.py +689 -17
  12. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/celery_job_recovery.py +525 -60
  13. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_projections.py +12 -4
  14. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_training.py +58 -21
  15. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_training_wrapper.py +3 -8
  16. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/data_frame_data_set.py +1 -22
  17. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/dataloader_utils.py +2 -2
  18. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/domain_codec.py +1 -1
  19. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedded_space.py +1918 -391
  20. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/encoders.py +529 -48
  21. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_json.py +4 -1
  22. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_token.py +2 -1
  23. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/feature_engineer.py +2 -1
  24. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/gpu_utils.py +1 -11
  25. featrixsphere-0.2.3611/src/lib/featrix/neural/graph_encoder.py +717 -0
  26. featrixsphere-0.2.3611/src/lib/featrix/neural/graph_encoder_training.py +292 -0
  27. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/guardrails.py +4 -2
  28. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hybrid_column_detector.py +68 -36
  29. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hybrid_encoders.py +1 -1
  30. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/input_data_set.py +445 -300
  31. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/io_utils.py +6 -0
  32. featrixsphere-0.2.3611/src/lib/featrix/neural/logging_config.py +261 -0
  33. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/mask_tracker.py +38 -3
  34. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/model_config.py +86 -0
  35. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/movie_frame_task.py +62 -5
  36. featrixsphere-0.2.3611/src/lib/featrix/neural/multi_table_dataset.py +222 -0
  37. featrixsphere-0.2.3611/src/lib/featrix/neural/multi_table_embedding_space.py +220 -0
  38. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +12 -1
  39. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_embedding_quality.py +5 -5
  40. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_hybrid_columns.py +2 -0
  41. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_predict_during_training.py +2 -0
  42. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_complexity.py +271 -0
  43. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_estimator.py +231 -0
  44. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_extractor.py +527 -0
  45. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_performance.py +281 -0
  46. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_preanalysis.py +227 -0
  47. featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_search.py +285 -0
  48. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/scalar_codec.py +37 -14
  49. featrixsphere-0.2.3611/src/lib/featrix/neural/schema_history.py +205 -0
  50. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/set_codec.py +61 -39
  51. featrixsphere-0.2.3611/src/lib/featrix/neural/simple_string_cache.py +456 -0
  52. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/single_predictor.py +551 -295
  53. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/single_predictor_mlp.py +3 -3
  54. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/sphere_config.py +23 -0
  55. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_cache.py +93 -22
  56. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_codec.py +300 -449
  57. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_list_codec.py +4 -4
  58. featrixsphere-0.2.3611/src/lib/featrix/neural/test_graph_encoder.py +170 -0
  59. featrixsphere-0.2.3611/src/lib/featrix/neural/training_banner.py +360 -0
  60. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_logger.py +105 -47
  61. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/transformer_encoder.py +135 -6
  62. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/url_codec.py +48 -20
  63. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/job_manager.py +11 -0
  64. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/json_encoder_cache.py +1 -1
  65. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/knn_training.py +6 -5
  66. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/queue_manager.py +33 -15
  67. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/quick_architecture_search.py +42 -16
  68. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/session_chains.py +49 -35
  69. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/session_manager.py +249 -12
  70. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/single_predictor_training.py +52 -3
  71. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/sp_training_wrapper.py +6 -8
  72. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/structureddata.py +19 -42
  73. featrixsphere-0.2.3611/src/lib/system_health_monitor.py +891 -0
  74. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/node-install.sh +614 -119
  75. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_job_progress.py +105 -1
  76. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/run_api_server.sh +8 -1
  77. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/start_celery_cpu_worker.sh +1 -1
  78. featrixsphere-0.2.3611/src/start_celery_movie_worker.sh +20 -0
  79. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_api_client.py +4 -4
  80. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/version.py +15 -4
  81. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/system_monitor.py +11 -1
  82. featrixsphere-0.2.2280/VERSION +0 -1
  83. featrixsphere-0.2.2280/src/lib/featrix/neural/logging_config.py +0 -135
  84. featrixsphere-0.2.2280/src/lib/system_health_monitor.py +0 -465
  85. featrixsphere-0.2.2280/src/restart_celery_worker.sh +0 -52
  86. featrixsphere-0.2.2280/src/start_celery_worker.sh +0 -64
  87. featrixsphere-0.2.2280/src/start_churro_server.sh +0 -252
  88. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/MANIFEST.in +0 -0
  89. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/README.md +0 -0
  90. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/test_client.py +0 -0
  91. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/dependency_links.txt +0 -0
  92. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/entry_points.txt +0 -0
  93. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/not-zip-safe +0 -0
  94. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/requires.txt +0 -0
  95. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/top_level.txt +0 -0
  96. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/nv-install.sh +0 -0
  97. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/requirements.txt +0 -0
  98. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/setup.cfg +0 -0
  99. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/setup.py +0 -0
  100. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/auto_upgrade_monitor.py +0 -0
  101. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/build_version.py +0 -0
  102. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/config.py +0 -0
  103. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/demo_existing_model.py +0 -0
  104. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/demo_label_updates.py +0 -0
  105. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/deploy.py +0 -0
  106. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/deploy_cache_debug.sh +0 -0
  107. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/ensure_watchdog_running.sh +0 -0
  108. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/error_tracker.py +0 -0
  109. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/event_log.py +0 -0
  110. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_api_usage.py +0 -0
  111. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_train_predictor.py +0 -0
  112. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/gc_cleanup.py +0 -0
  113. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/api_event_retry.py +0 -0
  114. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/convergence_monitor.py +0 -0
  115. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/crash_tracker.py +0 -0
  116. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/distribution_shift_detector.py +0 -0
  117. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/epoch_projections.py +0 -0
  118. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/__init__.py +0 -0
  119. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/__init__.py +0 -0
  120. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/calibration_utils.py +0 -0
  121. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/classification_metrics.py +0 -0
  122. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/config.py +0 -0
  123. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/detect.py +0 -0
  124. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/dropout_scheduler.py +0 -0
  125. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
  126. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
  127. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_utils.py +0 -0
  128. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/enrich.py +0 -0
  129. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/es_projection.py +0 -0
  130. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/exceptions.py +0 -0
  131. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_csv.py +0 -0
  132. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
  133. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/feature_suggestion_tracker.py +0 -0
  134. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
  135. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/input_data_file.py +0 -0
  136. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/integrity.py +0 -0
  137. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/json_cache.py +0 -0
  138. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/json_codec.py +0 -0
  139. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/llm/__init__.py +0 -0
  140. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/llm/schema_analyzer.py +0 -0
  141. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/model_hash.py +0 -0
  142. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/network_viz.py +0 -0
  143. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/platform_utils.py +0 -0
  144. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/prng_control.py +0 -0
  145. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
  146. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
  147. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
  148. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
  149. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/show_results.py +0 -0
  150. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
  151. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
  152. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
  153. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
  154. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
  155. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
  156. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
  157. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
  158. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
  159. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
  160. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
  161. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
  162. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
  163. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
  164. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/setlist_codec.py +0 -0
  165. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/simple_mlp.py +0 -0
  166. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/sqlite_utils.py +0 -0
  167. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/stopwatch.py +0 -0
  168. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_analysis.py +0 -0
  169. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/timestamp_codec.py +0 -0
  170. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_context_manager.py +0 -0
  171. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_event.py +0 -0
  172. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_exceptions.py +0 -0
  173. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_history_db.py +0 -0
  174. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/url_parser.py +0 -0
  175. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/utils.py +0 -0
  176. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/vector_codec.py +0 -0
  177. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/world_data.py +0 -0
  178. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix_debug.py +0 -0
  179. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/meta_learning_client.py +0 -0
  180. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/single_predictor_cv.py +0 -0
  181. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/sphere_config.py +0 -0
  182. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/training_monitor.py +0 -0
  183. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/utils.py +0 -0
  184. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/vector_db.py +0 -0
  185. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/webhook_helpers.py +0 -0
  186. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/weightwatcher_tracking.py +0 -0
  187. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/llm_client.py +0 -0
  188. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/manage_churro.sh +0 -0
  189. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/migrate_string_cache_naming.py +0 -0
  190. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/neural.py +0 -0
  191. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/prediction_drift_monitor.py +0 -0
  192. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/prediction_persistence_worker.py +0 -0
  193. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/query_schema_worker.py +0 -0
  194. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/quick_test_deployment.sh +0 -0
  195. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/recreate_session.py +0 -0
  196. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_prediction_cli.py +0 -0
  197. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_prediction_store.py +0 -0
  198. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/regenerate_training_movie.py +0 -0
  199. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/render_sphere.py +0 -0
  200. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/repair_checkpoint.py +0 -0
  201. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/send_email.py +0 -0
  202. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/slack.py +0 -0
  203. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/standalone_prediction.py +0 -0
  204. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/start_celery_gpu_worker.sh +0 -0
  205. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/tail-watch.py +0 -0
  206. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_complete_workflow.py +0 -0
  207. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_json_tables_prediction.py +0 -0
  208. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_redis_predictions.py +0 -0
  209. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_server_connection.py +0 -0
  210. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_session_models.py +0 -0
  211. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_single_predictor_api.py +0 -0
  212. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_upload_endpoint.py +0 -0
  213. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/tree.py +0 -0
  214. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/utils.py +0 -0
  215. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_data.py +0 -0
  216. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_predictions.py +0 -0
  217. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_sessions.py +0 -0
  218. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_training.py +0 -0
  219. {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_local_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.2280
3
+ Version: 0.2.3611
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.3611
@@ -357,17 +357,45 @@ def install_package(package_file: Path, force: bool = False) -> bool:
357
357
  # 2. The package is a specific version we want to install
358
358
  # 3. node-install.sh checks git state from /home/mitch/sphere which may not match the package
359
359
 
360
- # node-install.sh REQUIRES root (checked at line 326)
361
- # It calls 'sbit fix-permissions' which needs sbit to have setuid bit
362
- # The install script itself must run as root
363
- cmd = ["sudo", str(install_script), "--force"]
360
+ # Extract version and hash from package filename
361
+ # Format: sphere-app-0.2.2422-taco-fixes-0fe65caa.tar.gz
362
+ # This lets the install script show correct version/hash from the start
363
+ import re
364
+ version_match = re.search(r'sphere-app-([0-9.]+)', package_file.name)
365
+ hash_match = re.search(r'-([0-9a-f]{8})\.tar\.gz$', package_file.name)
366
+
367
+ package_version = version_match.group(1) if version_match else None
368
+ package_hash = hash_match.group(1) if hash_match else None
369
+
370
+ # node-install.sh REQUIRES root
371
+ # Run directly with sudo bash to avoid version compatibility issues
372
+ # Old versions of ffsh/sbit might not support the newer arguments
373
+ cmd = ["sudo", "bash", str(install_script), "--force"]
374
+
375
+ # Pass package version and hash to install script for accurate logging
376
+ if package_version:
377
+ cmd.extend(["--package-version", package_version])
378
+ if package_hash:
379
+ cmd.extend(["--package-hash", package_hash])
380
+
381
+ # Make script executable
382
+ install_script.chmod(0o755)
383
+
364
384
  print(f" Using --force flag (installing from package)")
385
+ if package_version:
386
+ print(f" Package version: {package_version}")
387
+ if package_hash:
388
+ print(f" Package hash: {package_hash}")
365
389
 
366
390
  # Run the install script
391
+ # CRITICAL: stdin=subprocess.DEVNULL prevents sudo from prompting for password
392
+ # If sbit doesn't have setuid bit, deployment should fail fast instead of hanging
393
+ # Don't capture output - let it stream to console in real-time
367
394
  result = subprocess.run(
368
395
  cmd,
369
396
  check=True,
370
- timeout=600 # 10 minute timeout
397
+ timeout=600, # 10 minute timeout
398
+ stdin=subprocess.DEVNULL, # Prevent interactive password prompts
371
399
  )
372
400
 
373
401
  print("✅ Installation completed successfully")
@@ -378,6 +406,7 @@ def install_package(package_file: Path, force: bool = False) -> bool:
378
406
 
379
407
  except subprocess.CalledProcessError as e:
380
408
  print(f"❌ Installation failed with exit code {e.returncode}")
409
+ print(" (See output above for details)")
381
410
  return False
382
411
  except subprocess.TimeoutExpired:
383
412
  print("❌ Installation timed out after 10 minutes")
@@ -495,7 +524,7 @@ def main():
495
524
  should_update = True
496
525
  elif comparison == 0:
497
526
  # Same version - check if hash is different (newer build of same version)
498
- current_hash = get_current_version_hash()
527
+ current_hash = get_current_version_hash() # pylint: disable=assignment-from-none
499
528
  if current_hash and newest_hash and current_hash != newest_hash:
500
529
  print(f"\n✅ Newer build available: {current_version} ({current_hash} → {newest_hash[:8]})")
501
530
  print(f" Same version number but different hash (newer build)")
@@ -38,7 +38,7 @@ Example:
38
38
  ... labels=['Experiment A', 'Experiment B'])
39
39
  """
40
40
 
41
- __version__ = "0.2.2280"
41
+ __version__ = "0.2.3611"
42
42
  __author__ = "Featrix"
43
43
  __email__ = "support@featrix.com"
44
44
  __license__ = "MIT"
@@ -4547,20 +4547,20 @@ class FeatrixSphereClient:
4547
4547
  if verbose:
4548
4548
  print(f"📊 Using provided DataFrame ({len(df)} rows, {len(df.columns)} columns)")
4549
4549
 
4550
- # Create temporary CSV file
4551
- temp_file = tempfile.NamedTemporaryFile(mode='w', suffix='.csv', delete=False)
4550
+ # Create temporary parquet file (faster and more efficient than CSV)
4551
+ temp_file = tempfile.NamedTemporaryFile(mode='wb', suffix='.parquet', delete=False)
4552
4552
  temp_file_path = temp_file.name
4553
4553
  temp_file.close()
4554
4554
 
4555
- # Save DataFrame to temp file
4556
- df.to_csv(temp_file_path, index=False)
4555
+ # Save DataFrame to temp parquet file
4556
+ df.to_parquet(temp_file_path, index=False, engine='pyarrow')
4557
4557
 
4558
4558
  if verbose:
4559
- print(f"📁 Saved to temporary file: {os.path.basename(temp_file_path)}")
4559
+ print(f"📁 Saved to temporary parquet file: {os.path.basename(temp_file_path)}")
4560
4560
  print(f"📤 Uploading file directly with training request...")
4561
4561
 
4562
4562
  # Send file in multipart form
4563
- files = {'file': (os.path.basename(temp_file_path), open(temp_file_path, 'rb'), 'text/csv')}
4563
+ files = {'file': (os.path.basename(temp_file_path), open(temp_file_path, 'rb'), 'application/octet-stream')}
4564
4564
 
4565
4565
  elif input_filename:
4566
4566
  # If absolute path provided, send file directly
@@ -4573,8 +4573,17 @@ class FeatrixSphereClient:
4573
4573
  if verbose:
4574
4574
  print(f"📤 Sending file directly from absolute path: {input_filename}")
4575
4575
 
4576
+ # Determine MIME type based on file extension
4577
+ mime_type = 'application/octet-stream' # Default fallback
4578
+ if input_path.suffix == '.csv':
4579
+ mime_type = 'text/csv'
4580
+ elif input_path.suffix == '.parquet':
4581
+ mime_type = 'application/octet-stream'
4582
+ elif input_path.suffix == '.gz':
4583
+ mime_type = 'application/gzip'
4584
+
4576
4585
  # Send file in multipart form
4577
- files = {'file': (input_path.name, open(input_path, 'rb'), 'text/csv' if input_path.suffix == '.csv' else 'application/gzip')}
4586
+ files = {'file': (input_path.name, open(input_path, 'rb'), mime_type)}
4578
4587
  else:
4579
4588
  # Relative filename - assume it's already on the server
4580
4589
  data["input_filename"] = input_filename
@@ -5165,17 +5174,17 @@ class FeatrixSphereClient:
5165
5174
  if verbose:
5166
5175
  print(f"📊 Using provided DataFrame ({len(df)} rows, {len(df.columns)} columns)")
5167
5176
 
5168
- # Create temporary CSV file
5169
- temp_file = tempfile.NamedTemporaryFile(mode='w', suffix='.csv', delete=False)
5177
+ # Create temporary parquet file (faster and more efficient than CSV)
5178
+ temp_file = tempfile.NamedTemporaryFile(mode='wb', suffix='.parquet', delete=False)
5170
5179
  temp_file_path = temp_file.name
5171
5180
  temp_file.close()
5172
5181
 
5173
- # Save DataFrame to temp file
5174
- df.to_csv(temp_file_path, index=False)
5182
+ # Save DataFrame to temp parquet file
5183
+ df.to_parquet(temp_file_path, index=False, engine='pyarrow')
5175
5184
  file_path = temp_file_path
5176
5185
 
5177
5186
  if verbose:
5178
- print(f"📁 Saved to temporary file: {os.path.basename(temp_file_path)}")
5187
+ print(f"📁 Saved to temporary parquet file: {os.path.basename(temp_file_path)}")
5179
5188
 
5180
5189
  try:
5181
5190
  # If a custom training file is provided (or we created one from df), use the file upload endpoint
@@ -5406,17 +5415,17 @@ class FeatrixSphereClient:
5406
5415
  if verbose:
5407
5416
  print(f"📊 Using provided DataFrame ({len(new_data_df)} rows, {len(new_data_df.columns)} columns)")
5408
5417
 
5409
- # Create temporary CSV file
5410
- temp_file = tempfile.NamedTemporaryFile(mode='w', suffix='.csv', delete=False)
5418
+ # Create temporary parquet file (faster and more efficient than CSV)
5419
+ temp_file = tempfile.NamedTemporaryFile(mode='wb', suffix='.parquet', delete=False)
5411
5420
  temp_file_path = temp_file.name
5412
5421
  temp_file.close()
5413
5422
 
5414
- # Save DataFrame to temp file
5415
- new_data_df.to_csv(temp_file_path, index=False)
5423
+ # Save DataFrame to temp parquet file
5424
+ new_data_df.to_parquet(temp_file_path, index=False, engine='pyarrow')
5416
5425
  file_to_upload = temp_file_path
5417
5426
 
5418
5427
  if verbose:
5419
- print(f"📁 Saved to temporary file: {os.path.basename(temp_file_path)}")
5428
+ print(f"📁 Saved to temporary parquet file: {os.path.basename(temp_file_path)}")
5420
5429
 
5421
5430
  try:
5422
5431
  # Prepare file upload
@@ -6011,8 +6020,17 @@ class FeatrixSphereClient:
6011
6020
  print(f"📤 Uploading custom training file: {file_path.name}")
6012
6021
 
6013
6022
  # Prepare the multipart form data
6023
+ # Determine MIME type based on file extension
6024
+ mime_type = 'application/octet-stream' # Default fallback
6025
+ if file_path.suffix == '.csv':
6026
+ mime_type = 'text/csv'
6027
+ elif file_path.suffix == '.parquet':
6028
+ mime_type = 'application/octet-stream' # Parquet MIME type
6029
+ elif file_path.suffix == '.gz':
6030
+ mime_type = 'application/gzip'
6031
+
6014
6032
  files = {
6015
- 'file': (file_path.name, open(file_path, 'rb'), 'text/csv' if file_path.suffix == '.csv' else 'application/gzip')
6033
+ 'file': (file_path.name, open(file_path, 'rb'), mime_type)
6016
6034
  }
6017
6035
 
6018
6036
  data = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: featrixsphere
3
- Version: 0.2.2280
3
+ Version: 0.2.3611
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
@@ -49,15 +49,13 @@ src/redis_prediction_store.py
49
49
  src/regenerate_training_movie.py
50
50
  src/render_sphere.py
51
51
  src/repair_checkpoint.py
52
- src/restart_celery_worker.sh
53
52
  src/run_api_server.sh
54
53
  src/send_email.py
55
54
  src/slack.py
56
55
  src/standalone_prediction.py
57
56
  src/start_celery_cpu_worker.sh
58
57
  src/start_celery_gpu_worker.sh
59
- src/start_celery_worker.sh
60
- src/start_churro_server.sh
58
+ src/start_celery_movie_worker.sh
61
59
  src/tail-watch.py
62
60
  src/test_api_client.py
63
61
  src/test_complete_workflow.py
@@ -124,6 +122,8 @@ src/lib/featrix/neural/featrix_token.py
124
122
  src/lib/featrix/neural/feature_engineer.py
125
123
  src/lib/featrix/neural/feature_suggestion_tracker.py
126
124
  src/lib/featrix/neural/gpu_utils.py
125
+ src/lib/featrix/neural/graph_encoder.py
126
+ src/lib/featrix/neural/graph_encoder_training.py
127
127
  src/lib/featrix/neural/guardrails.py
128
128
  src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py
129
129
  src/lib/featrix/neural/hybrid_column_detector.py
@@ -139,13 +139,23 @@ src/lib/featrix/neural/mask_tracker.py
139
139
  src/lib/featrix/neural/model_config.py
140
140
  src/lib/featrix/neural/model_hash.py
141
141
  src/lib/featrix/neural/movie_frame_task.py
142
+ src/lib/featrix/neural/multi_table_dataset.py
143
+ src/lib/featrix/neural/multi_table_embedding_space.py
142
144
  src/lib/featrix/neural/network_viz.py
143
145
  src/lib/featrix/neural/platform_utils.py
144
146
  src/lib/featrix/neural/prng_control.py
147
+ src/lib/featrix/neural/relationship_complexity.py
148
+ src/lib/featrix/neural/relationship_estimator.py
149
+ src/lib/featrix/neural/relationship_extractor.py
150
+ src/lib/featrix/neural/relationship_performance.py
151
+ src/lib/featrix/neural/relationship_preanalysis.py
152
+ src/lib/featrix/neural/relationship_search.py
145
153
  src/lib/featrix/neural/scalar_codec.py
154
+ src/lib/featrix/neural/schema_history.py
146
155
  src/lib/featrix/neural/set_codec.py
147
156
  src/lib/featrix/neural/setlist_codec.py
148
157
  src/lib/featrix/neural/simple_mlp.py
158
+ src/lib/featrix/neural/simple_string_cache.py
149
159
  src/lib/featrix/neural/single_predictor.py
150
160
  src/lib/featrix/neural/single_predictor_mlp.py
151
161
  src/lib/featrix/neural/sphere_config.py
@@ -155,7 +165,9 @@ src/lib/featrix/neural/string_analysis.py
155
165
  src/lib/featrix/neural/string_cache.py
156
166
  src/lib/featrix/neural/string_codec.py
157
167
  src/lib/featrix/neural/string_list_codec.py
168
+ src/lib/featrix/neural/test_graph_encoder.py
158
169
  src/lib/featrix/neural/timestamp_codec.py
170
+ src/lib/featrix/neural/training_banner.py
159
171
  src/lib/featrix/neural/training_context_manager.py
160
172
  src/lib/featrix/neural/training_event.py
161
173
  src/lib/featrix/neural/training_exceptions.py