weightslab 1.3.1__tar.gz → 1.3.2__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.
- weightslab-1.3.2/CHANGELOG.md +1 -0
- {weightslab-1.3.1/weightslab.egg-info → weightslab-1.3.2}/PKG-INFO +1 -1
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/gRPC/test_grpc_histogram_categorical.py +60 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/_version.py +3 -3
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/data_service.py +20 -9
- {weightslab-1.3.1 → weightslab-1.3.2/weightslab.egg-info}/PKG-INFO +1 -1
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/scm_version.json +2 -2
- weightslab-1.3.1/CHANGELOG.md +0 -1
- {weightslab-1.3.1 → weightslab-1.3.2}/.gitattributes +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/.github/workflows/ci.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/.github/workflows/docs-pages.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/.github/workflows/release.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/.gitignore +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/AGENTS.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/LICENSE +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/agent_config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/.gitkeep +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/custom.css +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/examples-gallery.js +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/favicon.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/github-stars.js +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/logo-dark.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/logo-light.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/version-switcher.js +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/weights_studio_architecture.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/wl-ribbon.js +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_static/wl-topnav.js +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_templates/.gitkeep +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/_templates/sidebar/brand.html +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/agent.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/conf.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/configuration.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/data_exploration.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/lightning/classification.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/lightning/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/classification.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/clustering.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/detection.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/generation.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/pytorch/segmentation.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/ultralytics/detection.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/ultralytics/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/usecases/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/usecases/lidar_detection.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/examples/usecases/loss_shape_classification.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/four_way_approach.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/grpc/audit_logger.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/grpc/grpc_functions.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/grpc/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/hyperparameters.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/index.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/logger.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/model_interaction.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/pytorch_lightning.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/quickstart.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/requirements.txt +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/segmentation_usecase.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/ultralytics.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/usage/docker.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/usage/good_practice.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/usage/parameters.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/usage.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/usecases.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/user_commands.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/user_functions.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/docs/weights_studio.rst +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/pyproject.toml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/setup.cfg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_audit_logger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_cli_additional_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_compare_dataloaders.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_data_loader_interface.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_instance_signal_logger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_ledgers.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_logger_core.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_model_interface_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_optimizer_interface.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_optimizer_interface_additional_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_ui_docker_bridge.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_write_dataframe.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_write_history.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/chaos_monkeys_utests/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/chaos_monkeys_utests/test_grpc_chaos_monkey_robustness.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/components/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/components/test_checkpoint_workflow.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/components/test_experiment_hash_and_art.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/components/test_global_monitoring_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/gRPC/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/gRPC/test_get_point_cloud.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/gRPC/test_grpc_tag_operations.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/gRPC/test_grpc_user_actions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_auditor_mode.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_cli.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_hyperparams.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_logger_snapshot_rotation.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_signals.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/general/test_signals_wrapping.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/integrations/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/integrations/test_pytorch_lightning_integration.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/integrations/ultralytics/ddp/ddp_ablation.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/integrations/ultralytics/ddp/ddp_test_suite.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_constraint_generation.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_dependency_patterns.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_logger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_model_with_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_model_with_ops_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/model/test_tracking.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/modules/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/modules/test_modules_with_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/test_secure_docker.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/test_src_functions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_live_prompt_evaluation.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_model_and_safety_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_prompt_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_service_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_trainer_services_server.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_trainer_services_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/test_trainer_tools.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_computational_graph_utils_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_logs_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_modules_dependencies_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_plot_graph_render_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_plot_graph_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_shape_prop_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/utils/test_utils_tools_unit.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/watchdog/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/watchdog/test_lock_monitor.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/tests/watchdog/test_watchdog.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/art.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/audit_logger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/cli.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/dataloader_interface.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/ledgers.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/logger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/model_interface.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/backend/optimizer_interface.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/checkpoint_manager.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/evaluation_controller.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/experiment_hash.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/global_monitoring.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/parallel_primitives.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/components/tracking.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/array_proxy.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/data_samples_with_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/data_utils.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/dataframe_manager.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/h5_array_store.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/h5_dataframe_store.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/point_cloud_utils.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/data/sample_stats.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/Dockerfile +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/.dockerignore +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/.env.example +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/DEPLOYMENT.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/docker-compose.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx-entrypoint.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx.base-path.conf copy.template +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx.base-path.conf.template +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx.conf +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/test-deployment.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/build-and-deploy.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/generate-certs-auth-token.ps1 +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/generate-certs-auth-token.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/test-deployment.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/envoy/envoy.downstream_plaintext.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/envoy/envoy.downstream_upstream_plaintext.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/envoy/envoy.upstream_plaintext.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/envoy/envoy.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/nginx.conf +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/docker_in_docker/Dockerfile +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/docker_in_docker/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/docker_in_docker/docker-compose.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/docker_in_docker/entrypoint.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/siblings_self_contained/Dockerfile +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/siblings_self_contained/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/siblings_self_contained/docker-compose.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/siblings_self_contained/entrypoint.sh +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Docker_training/siblings_self_contained/ui-compose.yml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Lightning/ws-classification/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Lightning/ws-classification/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-classification/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-classification/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/face/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/face/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/face/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/face/signals.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/face/utils.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-clustering/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/utils/criterions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/utils/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-detection/utils/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-generation/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-generation/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0000f77c-6257be58.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/000f8d37-d4c09a0f.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00a0f008-a315437f.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00c12bd0-bb46e479.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00c29c52-f9524f1e.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00ce6f6d-50bbee62.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00d1bafa-1b47b41c.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00d7268f-fd4487be.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/00f0dd0f-5e9c9557.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a0d7f4c-ac5c3c8f.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a1f4fce-f9cac880.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/train/0a3bb2d8-c195d91e.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1cac6a7-04e33135.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1ceb32e-3f481b43.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d10d08-5b108225.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d22449-15fb948f.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1d7b3ac-5af8623b.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1dce572-c6a8cb5e.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1e1a7b8-0aec80e8.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1e8ad72-c3c79240.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1ee702d-0ae1fc10.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b1f0efd9-37a14dda.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b2a0648b-d8e126bc.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/images/val/b2b70230-bad4ff6e.jpg +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0000f77c-6257be58.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/000f8d37-d4c09a0f.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00a0f008-a315437f.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00c12bd0-bb46e479.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00c29c52-f9524f1e.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00ce6f6d-50bbee62.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00d1bafa-1b47b41c.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00d7268f-fd4487be.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/00f0dd0f-5e9c9557.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a0d7f4c-ac5c3c8f.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a1f4fce-f9cac880.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/train/0a3bb2d8-c195d91e.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1cac6a7-04e33135.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1ceb32e-3f481b43.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d10d08-5b108225.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d22449-15fb948f.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1d7b3ac-5af8623b.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1dce572-c6a8cb5e.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1e1a7b8-0aec80e8.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1e8ad72-c3c79240.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1ee702d-0ae1fc10.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b1f0efd9-37a14dda.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b2a0648b-d8e126bc.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/BDD_subset/labels/val/b2b70230-bad4ff6e.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/utils/criterions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/utils/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/PyTorch/ws-segmentation/utils/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Ultralytics/ws-detection/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Ultralytics/ws-detection/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/criterions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-2d-lidar-detection/utils/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/criterions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/kitti_download.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-3d-lidar-detection/utils/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/config.yaml +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/main.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/utils/criterions.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/utils/data.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/Usecases/ws-loss_shapes_classification_per_sample/utils/model.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/utils/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/utils/baseline_models/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/utils/baseline_models/pytorch/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/examples/utils/baseline_models/pytorch/models.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/README.md +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/_utils.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/collate.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/dataset.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/signals.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/integrations/ultralytics/trainer.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/models/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/models/model_with_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/models/monkey_patcher.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/modules/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/modules/modules_with_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/modules/neuron_ops.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/proto/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/proto/experiment_service.proto +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/proto/experiment_service_pb2.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/proto/experiment_service_pb2_grpc.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/security/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/security/cert_auth_manager.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/src.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/experiment_context.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/agent.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/agent_overview/agent.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/agent_overview/query_example.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/agent_overview/schema.png +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent/intent_prompt.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/agent_service.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/data_image_utils.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/experiment_service.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/instance_merger.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/model_service.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/utils/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/services/utils/tools.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/trainer_services.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/trainer/trainer_tools.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/ui_docker_bridge.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/computational_graph.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/logs.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/modules_dependencies.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/plot_graph.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/shape_prop.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/telemetry.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/utils/tools.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/watchdog/__init__.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/watchdog/grpc_watchdog.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/watchdog/lock_monitor.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/watchdog/log_level.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab/watchdog/watchdog.py +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/SOURCES.txt +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/dependency_links.txt +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/entry_points.txt +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/requires.txt +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/scm_file_list.json +0 -0
- {weightslab-1.3.1 → weightslab-1.3.2}/weightslab.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Changelog - 2026-07-07 v1.3.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: weightslab
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: Paving the way between black-box and white-box modeling.
|
|
5
5
|
Author-email: Alexandru-Andrei Rotaru <alexandru@graybx.com>, Guillaue Pelluet <guillaue@graybx.com>
|
|
6
6
|
License: BSD 2-clause
|
|
@@ -172,6 +172,66 @@ class TestGetHistogramMixedNaN(unittest.TestCase):
|
|
|
172
172
|
self.assertGreater(len(resp.bins), 0)
|
|
173
173
|
|
|
174
174
|
|
|
175
|
+
class TestGetHistogramObjectDtypeNumeric(unittest.TestCase):
|
|
176
|
+
"""A numeric column stored as object dtype (floats mixed with None/NaN)
|
|
177
|
+
must stay numeric — None/NaN are missing data, not an 'unset' category."""
|
|
178
|
+
|
|
179
|
+
def test_object_dtype_floats_with_none_stays_numeric(self):
|
|
180
|
+
# Mixing Python floats with None yields an object-dtype column; this is
|
|
181
|
+
# how a per-sample loss column looks before every sample has a value.
|
|
182
|
+
df = pd.DataFrame({
|
|
183
|
+
"loss": pd.Series(
|
|
184
|
+
[0.1, None, 0.3, np.nan, 0.5, None, 0.7, 0.2, None, 0.9],
|
|
185
|
+
dtype=object,
|
|
186
|
+
),
|
|
187
|
+
"origin": ["train"] * 5 + ["eval"] * 5,
|
|
188
|
+
"discarded": [False] * 10,
|
|
189
|
+
})
|
|
190
|
+
self.assertEqual(df["loss"].dtype, object)
|
|
191
|
+
svc = _make_service_with_df(df)
|
|
192
|
+
resp = svc.GetHistogram(_req("loss"), MockContext())
|
|
193
|
+
self.assertTrue(resp.success, resp.message)
|
|
194
|
+
self.assertFalse(resp.is_categorical)
|
|
195
|
+
self.assertGreater(len(resp.bins), 0)
|
|
196
|
+
self.assertEqual(len(resp.categorical_bars), 0)
|
|
197
|
+
|
|
198
|
+
def test_none_nan_excluded_from_numeric_counts(self):
|
|
199
|
+
# Only the 6 finite values should be counted across all bins; the 4
|
|
200
|
+
# None/NaN entries must not appear as an "unset" category or a value.
|
|
201
|
+
df = pd.DataFrame({
|
|
202
|
+
"loss": pd.Series([1.0, None, 2.0, np.nan, 3.0, None, 4.0, 5.0, None, 6.0],
|
|
203
|
+
dtype=object),
|
|
204
|
+
"origin": ["train"] * 10,
|
|
205
|
+
"discarded": [False] * 10,
|
|
206
|
+
})
|
|
207
|
+
svc = _make_service_with_df(df)
|
|
208
|
+
resp = svc.GetHistogram(_req("loss"), MockContext())
|
|
209
|
+
self.assertFalse(resp.is_categorical)
|
|
210
|
+
total_counted = sum(b.count for b in resp.bins)
|
|
211
|
+
self.assertEqual(total_counted, 6)
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class TestGetHistogramAllNaNFloatColumn(unittest.TestCase):
|
|
215
|
+
"""A genuine float dtype column that is entirely NaN (e.g. a loss column
|
|
216
|
+
no sample has filled yet) must render as an empty numeric histogram — not
|
|
217
|
+
a categorical 'unset' bar."""
|
|
218
|
+
|
|
219
|
+
def test_all_nan_float_column_stays_numeric(self):
|
|
220
|
+
df = pd.DataFrame({
|
|
221
|
+
"loss": pd.Series([np.nan] * 8, dtype=float),
|
|
222
|
+
"origin": ["train"] * 8,
|
|
223
|
+
"discarded": [False] * 8,
|
|
224
|
+
})
|
|
225
|
+
self.assertTrue(pd.api.types.is_float_dtype(df["loss"]))
|
|
226
|
+
svc = _make_service_with_df(df)
|
|
227
|
+
resp = svc.GetHistogram(_req("loss"), MockContext())
|
|
228
|
+
self.assertTrue(resp.success, resp.message)
|
|
229
|
+
self.assertFalse(resp.is_categorical)
|
|
230
|
+
self.assertEqual(len(resp.categorical_bars), 0)
|
|
231
|
+
# No finite values → every bin is empty, none surfaced as "unset".
|
|
232
|
+
self.assertEqual(sum(b.count for b in resp.bins), 0)
|
|
233
|
+
|
|
234
|
+
|
|
175
235
|
class TestGetHistogramEdgeCases(unittest.TestCase):
|
|
176
236
|
def test_column_not_in_df(self):
|
|
177
237
|
df = pd.DataFrame({"a": [1, 2, 3], "origin": ["train"] * 3,
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.3.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 3,
|
|
21
|
+
__version__ = version = '1.3.2'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 3, 2)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g8eab0cc6d'
|
|
@@ -4339,18 +4339,29 @@ class DataService:
|
|
|
4339
4339
|
else np.zeros(n, bool))
|
|
4340
4340
|
|
|
4341
4341
|
# Detect whether column is categorical (string/object) or numeric.
|
|
4342
|
+
# A column is numeric if ANY value coerces to a finite number — even
|
|
4343
|
+
# when the pandas dtype is ``object`` (e.g. a loss column holding
|
|
4344
|
+
# floats mixed with None/NaN for samples that have no value yet).
|
|
4345
|
+
# None/NaN are MISSING data, not a category, so they must never turn
|
|
4346
|
+
# a numeric column into a categorical one (which would surface them
|
|
4347
|
+
# as a spurious "unset" bar). We therefore treat as categorical only
|
|
4348
|
+
# a genuine pandas ``category`` dtype, or a column whose values do
|
|
4349
|
+
# not coerce to any numeric value at all (pure strings).
|
|
4342
4350
|
col_series = df[column]
|
|
4343
4351
|
numeric_vals = pd.to_numeric(col_series, errors="coerce")
|
|
4344
|
-
|
|
4345
|
-
col_series.dtype ==
|
|
4346
|
-
|
|
4347
|
-
|
|
4352
|
+
is_category_dtype = (
|
|
4353
|
+
str(col_series.dtype) == "category" or hasattr(col_series, "cat")
|
|
4354
|
+
)
|
|
4355
|
+
# A genuine numeric dtype (float/int/bool) is ALWAYS numeric — even
|
|
4356
|
+
# when every value is NaN (e.g. a loss column no sample has filled
|
|
4357
|
+
# yet). Such a column yields an empty numeric histogram, never a
|
|
4358
|
+
# spurious "unset" categorical bar.
|
|
4359
|
+
is_numeric_dtype = (
|
|
4360
|
+
pd.api.types.is_numeric_dtype(col_series) and not is_category_dtype
|
|
4361
|
+
)
|
|
4362
|
+
is_categorical = (not is_numeric_dtype) and (
|
|
4363
|
+
is_category_dtype or not bool(numeric_vals.notna().any())
|
|
4348
4364
|
)
|
|
4349
|
-
# A column that has a few non-NaN numeric values mixed with mostly
|
|
4350
|
-
# NaN still counts as numeric; only treat as categorical when
|
|
4351
|
-
# pd.to_numeric fails on all values.
|
|
4352
|
-
if not is_categorical and numeric_vals.notna().sum() == 0:
|
|
4353
|
-
is_categorical = True
|
|
4354
4365
|
|
|
4355
4366
|
if is_categorical:
|
|
4356
4367
|
# --- Categorical path ---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: weightslab
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: Paving the way between black-box and white-box modeling.
|
|
5
5
|
Author-email: Alexandru-Andrei Rotaru <alexandru@graybx.com>, Guillaue Pelluet <guillaue@graybx.com>
|
|
6
6
|
License: BSD 2-clause
|
weightslab-1.3.1/CHANGELOG.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Changelog - 2026-07-07 v1.3.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/tests/backend/test_optimizer_interface_additional_unit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/tests/integrations/test_pytorch_lightning_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_live_prompt_evaluation.py
RENAMED
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_agent_model_and_safety_unit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/tests/trainer/services/test_trainer_services_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx.base-path.conf copy.template
RENAMED
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/nginx.base-path.conf.template
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/generate-certs-auth-token.ps1
RENAMED
|
File without changes
|
{weightslab-1.3.1 → weightslab-1.3.2}/weightslab/docker/docker/utils/generate-certs-auth-token.sh
RENAMED
|
File without changes
|
|
File without changes
|