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.
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/PKG-INFO +1 -1
- featrixsphere-0.2.3611/VERSION +1 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrix-update.py +35 -6
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/__init__.py +1 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/client.py +36 -18
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/PKG-INFO +1 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/SOURCES.txt +15 -3
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/api.py +620 -101
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/celery_app.py +278 -52
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_prediction_feedback.py +10 -50
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/featrix_watchdog.py +689 -17
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/celery_job_recovery.py +525 -60
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_projections.py +12 -4
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_training.py +58 -21
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/es_training_wrapper.py +3 -8
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/data_frame_data_set.py +1 -22
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/dataloader_utils.py +2 -2
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/domain_codec.py +1 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedded_space.py +1918 -391
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/encoders.py +529 -48
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_json.py +4 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_token.py +2 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/feature_engineer.py +2 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/gpu_utils.py +1 -11
- featrixsphere-0.2.3611/src/lib/featrix/neural/graph_encoder.py +717 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/graph_encoder_training.py +292 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/guardrails.py +4 -2
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hybrid_column_detector.py +68 -36
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hybrid_encoders.py +1 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/input_data_set.py +445 -300
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/io_utils.py +6 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/logging_config.py +261 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/mask_tracker.py +38 -3
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/model_config.py +86 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/movie_frame_task.py +62 -5
- featrixsphere-0.2.3611/src/lib/featrix/neural/multi_table_dataset.py +222 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/multi_table_embedding_space.py +220 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_checkpoint_dict_reconstruction.py +12 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_embedding_quality.py +5 -5
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_hybrid_columns.py +2 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_predict_during_training.py +2 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_complexity.py +271 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_estimator.py +231 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_extractor.py +527 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_performance.py +281 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_preanalysis.py +227 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/relationship_search.py +285 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/scalar_codec.py +37 -14
- featrixsphere-0.2.3611/src/lib/featrix/neural/schema_history.py +205 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/set_codec.py +61 -39
- featrixsphere-0.2.3611/src/lib/featrix/neural/simple_string_cache.py +456 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/single_predictor.py +551 -295
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/single_predictor_mlp.py +3 -3
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/sphere_config.py +23 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_cache.py +93 -22
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_codec.py +300 -449
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_list_codec.py +4 -4
- featrixsphere-0.2.3611/src/lib/featrix/neural/test_graph_encoder.py +170 -0
- featrixsphere-0.2.3611/src/lib/featrix/neural/training_banner.py +360 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_logger.py +105 -47
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/transformer_encoder.py +135 -6
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/url_codec.py +48 -20
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/job_manager.py +11 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/json_encoder_cache.py +1 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/knn_training.py +6 -5
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/queue_manager.py +33 -15
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/quick_architecture_search.py +42 -16
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/session_chains.py +49 -35
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/session_manager.py +249 -12
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/single_predictor_training.py +52 -3
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/sp_training_wrapper.py +6 -8
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/structureddata.py +19 -42
- featrixsphere-0.2.3611/src/lib/system_health_monitor.py +891 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/node-install.sh +614 -119
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_job_progress.py +105 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/run_api_server.sh +8 -1
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/start_celery_cpu_worker.sh +1 -1
- featrixsphere-0.2.3611/src/start_celery_movie_worker.sh +20 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_api_client.py +4 -4
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/version.py +15 -4
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/system_monitor.py +11 -1
- featrixsphere-0.2.2280/VERSION +0 -1
- featrixsphere-0.2.2280/src/lib/featrix/neural/logging_config.py +0 -135
- featrixsphere-0.2.2280/src/lib/system_health_monitor.py +0 -465
- featrixsphere-0.2.2280/src/restart_celery_worker.sh +0 -52
- featrixsphere-0.2.2280/src/start_celery_worker.sh +0 -64
- featrixsphere-0.2.2280/src/start_churro_server.sh +0 -252
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/MANIFEST.in +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/README.md +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere/test_client.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/dependency_links.txt +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/entry_points.txt +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/not-zip-safe +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/requires.txt +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/featrixsphere.egg-info/top_level.txt +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/nv-install.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/requirements.txt +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/setup.cfg +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/setup.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/auto_upgrade_monitor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/build_version.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/config.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/demo_existing_model.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/demo_label_updates.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/deploy.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/deploy_cache_debug.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/ensure_watchdog_running.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/error_tracker.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/event_log.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_api_usage.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/example_train_predictor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/gc_cleanup.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/api_event_retry.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/convergence_monitor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/crash_tracker.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/distribution_shift_detector.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/epoch_projections.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/__init__.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/__init__.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/calibration_utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/classification_metrics.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/config.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/detect.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/dropout_scheduler.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_lr_scheduler.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_space_utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/embedding_utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/enrich.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/es_projection.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/exceptions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_csv.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/featrix_module_dict.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/feature_suggestion_tracker.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/hubspot_free_domains_list_may_2025.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/input_data_file.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/integrity.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/json_cache.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/json_codec.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/llm/__init__.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/llm/schema_analyzer.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/model_hash.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/network_viz.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/platform_utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/prng_control.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/demo_advisor_decisions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/example_complete_workflow.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/generate_focal_report.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/model_advisor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/show_results.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_adaptive_training.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_confusion_matrix_metadata.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_embedding_space.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_extend_embedding_space.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_comparison.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_comparison_enhanced.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_focal_loss_single_predictor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_label_smoothing.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_monitor_integration.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_piecewise_epochs.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_timeline_quick.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_training_monitor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/test_warning_tracking.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/qa/visualize_training_timeline.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/setlist_codec.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/simple_mlp.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/sqlite_utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/stopwatch.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/string_analysis.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/timestamp_codec.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_context_manager.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_event.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_exceptions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/training_history_db.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/url_parser.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/vector_codec.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix/neural/world_data.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/featrix_debug.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/meta_learning_client.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/single_predictor_cv.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/sphere_config.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/training_monitor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/vector_db.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/webhook_helpers.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/lib/weightwatcher_tracking.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/llm_client.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/manage_churro.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/migrate_string_cache_naming.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/neural.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/prediction_drift_monitor.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/prediction_persistence_worker.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/query_schema_worker.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/quick_test_deployment.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/recreate_session.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_prediction_cli.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/redis_prediction_store.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/regenerate_training_movie.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/render_sphere.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/repair_checkpoint.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/send_email.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/slack.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/standalone_prediction.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/start_celery_gpu_worker.sh +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/tail-watch.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_complete_workflow.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_json_tables_prediction.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_redis_predictions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_server_connection.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_session_models.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_single_predictor_api.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/test_upload_endpoint.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/tree.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/src/utils.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_data.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_predictions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_sessions.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_client_training.py +0 -0
- {featrixsphere-0.2.2280 → featrixsphere-0.2.3611}/tests/test_local_integration.py +0 -0
|
@@ -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
|
-
#
|
|
361
|
-
#
|
|
362
|
-
#
|
|
363
|
-
|
|
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)")
|
|
@@ -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
|
|
4551
|
-
temp_file = tempfile.NamedTemporaryFile(mode='
|
|
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.
|
|
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'), '
|
|
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'),
|
|
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
|
|
5169
|
-
temp_file = tempfile.NamedTemporaryFile(mode='
|
|
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.
|
|
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
|
|
5410
|
-
temp_file = tempfile.NamedTemporaryFile(mode='
|
|
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.
|
|
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'),
|
|
6033
|
+
'file': (file_path.name, open(file_path, 'rb'), mime_type)
|
|
6016
6034
|
}
|
|
6017
6035
|
|
|
6018
6036
|
data = {
|
|
@@ -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/
|
|
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
|