wandb 0.22.1__py3-none-win_arm64.whl
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.
- package_readme.md +97 -0
- wandb/__init__.py +248 -0
- wandb/__init__.pyi +1230 -0
- wandb/__main__.py +3 -0
- wandb/_analytics.py +65 -0
- wandb/_iterutils.py +73 -0
- wandb/_pydantic/__init__.py +30 -0
- wandb/_pydantic/base.py +108 -0
- wandb/_pydantic/field_types.py +29 -0
- wandb/_pydantic/utils.py +80 -0
- wandb/_pydantic/v1_compat.py +301 -0
- wandb/_strutils.py +40 -0
- wandb/agents/__init__.py +0 -0
- wandb/agents/pyagent.py +386 -0
- wandb/analytics/__init__.py +3 -0
- wandb/analytics/sentry.py +267 -0
- wandb/apis/__init__.py +50 -0
- wandb/apis/attrs.py +52 -0
- wandb/apis/importers/__init__.py +1 -0
- wandb/apis/importers/internals/internal.py +375 -0
- wandb/apis/importers/internals/protocols.py +103 -0
- wandb/apis/importers/internals/util.py +78 -0
- wandb/apis/importers/mlflow.py +254 -0
- wandb/apis/importers/validation.py +108 -0
- wandb/apis/importers/wandb.py +1608 -0
- wandb/apis/internal.py +241 -0
- wandb/apis/normalize.py +83 -0
- wandb/apis/paginator.py +138 -0
- wandb/apis/public/__init__.py +78 -0
- wandb/apis/public/api.py +2513 -0
- wandb/apis/public/artifacts.py +1050 -0
- wandb/apis/public/automations.py +86 -0
- wandb/apis/public/const.py +6 -0
- wandb/apis/public/files.py +411 -0
- wandb/apis/public/history.py +203 -0
- wandb/apis/public/integrations.py +203 -0
- wandb/apis/public/jobs.py +744 -0
- wandb/apis/public/projects.py +278 -0
- wandb/apis/public/query_generator.py +179 -0
- wandb/apis/public/registries/__init__.py +7 -0
- wandb/apis/public/registries/_freezable_list.py +176 -0
- wandb/apis/public/registries/_utils.py +139 -0
- wandb/apis/public/registries/registries_search.py +353 -0
- wandb/apis/public/registries/registry.py +370 -0
- wandb/apis/public/reports.py +597 -0
- wandb/apis/public/runs.py +1438 -0
- wandb/apis/public/sweeps.py +441 -0
- wandb/apis/public/teams.py +237 -0
- wandb/apis/public/users.py +179 -0
- wandb/apis/public/utils.py +211 -0
- wandb/apis/reports/__init__.py +1 -0
- wandb/apis/reports/v1/__init__.py +8 -0
- wandb/apis/reports/v2/__init__.py +8 -0
- wandb/apis/workspaces/__init__.py +8 -0
- wandb/automations/__init__.py +73 -0
- wandb/automations/_filters/__init__.py +40 -0
- wandb/automations/_filters/expressions.py +182 -0
- wandb/automations/_filters/operators.py +259 -0
- wandb/automations/_filters/run_metrics.py +330 -0
- wandb/automations/_generated/__init__.py +104 -0
- wandb/automations/_generated/create_automation.py +17 -0
- wandb/automations/_generated/create_generic_webhook_integration.py +37 -0
- wandb/automations/_generated/delete_automation.py +15 -0
- wandb/automations/_generated/enums.py +35 -0
- wandb/automations/_generated/fragments.py +293 -0
- wandb/automations/_generated/generic_webhook_integrations_by_entity.py +22 -0
- wandb/automations/_generated/get_automations.py +24 -0
- wandb/automations/_generated/get_automations_by_entity.py +26 -0
- wandb/automations/_generated/input_types.py +104 -0
- wandb/automations/_generated/integrations_by_entity.py +22 -0
- wandb/automations/_generated/operations.py +647 -0
- wandb/automations/_generated/slack_integrations_by_entity.py +22 -0
- wandb/automations/_generated/update_automation.py +17 -0
- wandb/automations/_utils.py +235 -0
- wandb/automations/_validators.py +185 -0
- wandb/automations/actions.py +220 -0
- wandb/automations/automations.py +85 -0
- wandb/automations/events.py +284 -0
- wandb/automations/integrations.py +45 -0
- wandb/automations/scopes.py +78 -0
- wandb/beta/workflows.py +324 -0
- wandb/bin/gpu_stats.exe +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/__init__.py +0 -0
- wandb/cli/beta.py +93 -0
- wandb/cli/beta_sync.py +224 -0
- wandb/cli/cli.py +2883 -0
- wandb/data_types.py +66 -0
- wandb/docker/__init__.py +290 -0
- wandb/docker/names.py +40 -0
- wandb/docker/wandb-entrypoint.sh +33 -0
- wandb/env.py +535 -0
- wandb/errors/__init__.py +17 -0
- wandb/errors/errors.py +40 -0
- wandb/errors/links.py +73 -0
- wandb/errors/term.py +415 -0
- wandb/errors/util.py +57 -0
- wandb/errors/warnings.py +2 -0
- wandb/filesync/__init__.py +0 -0
- wandb/filesync/dir_watcher.py +404 -0
- wandb/filesync/stats.py +100 -0
- wandb/filesync/step_checksum.py +142 -0
- wandb/filesync/step_prepare.py +179 -0
- wandb/filesync/step_upload.py +287 -0
- wandb/filesync/upload_job.py +142 -0
- wandb/integration/__init__.py +0 -0
- wandb/integration/catboost/__init__.py +5 -0
- wandb/integration/catboost/catboost.py +182 -0
- wandb/integration/cohere/__init__.py +3 -0
- wandb/integration/cohere/cohere.py +21 -0
- wandb/integration/cohere/resolver.py +347 -0
- wandb/integration/diffusers/__init__.py +3 -0
- wandb/integration/diffusers/autologger.py +76 -0
- wandb/integration/diffusers/pipeline_resolver.py +50 -0
- wandb/integration/diffusers/resolvers/__init__.py +9 -0
- wandb/integration/diffusers/resolvers/multimodal.py +881 -0
- wandb/integration/diffusers/resolvers/utils.py +102 -0
- wandb/integration/dspy/__init__.py +5 -0
- wandb/integration/dspy/dspy.py +422 -0
- wandb/integration/fastai/__init__.py +243 -0
- wandb/integration/gym/__init__.py +98 -0
- wandb/integration/huggingface/__init__.py +3 -0
- wandb/integration/huggingface/huggingface.py +18 -0
- wandb/integration/huggingface/resolver.py +213 -0
- wandb/integration/keras/__init__.py +11 -0
- wandb/integration/keras/callbacks/__init__.py +5 -0
- wandb/integration/keras/callbacks/metrics_logger.py +129 -0
- wandb/integration/keras/callbacks/model_checkpoint.py +188 -0
- wandb/integration/keras/callbacks/tables_builder.py +228 -0
- wandb/integration/keras/keras.py +1086 -0
- wandb/integration/kfp/__init__.py +6 -0
- wandb/integration/kfp/helpers.py +28 -0
- wandb/integration/kfp/kfp_patch.py +335 -0
- wandb/integration/kfp/wandb_logging.py +182 -0
- wandb/integration/langchain/__init__.py +3 -0
- wandb/integration/langchain/wandb_tracer.py +49 -0
- wandb/integration/lightgbm/__init__.py +239 -0
- wandb/integration/lightning/__init__.py +0 -0
- wandb/integration/lightning/fabric/__init__.py +3 -0
- wandb/integration/lightning/fabric/logger.py +763 -0
- wandb/integration/metaflow/__init__.py +9 -0
- wandb/integration/metaflow/data_pandas.py +74 -0
- wandb/integration/metaflow/data_pytorch.py +75 -0
- wandb/integration/metaflow/data_sklearn.py +76 -0
- wandb/integration/metaflow/errors.py +13 -0
- wandb/integration/metaflow/metaflow.py +327 -0
- wandb/integration/openai/__init__.py +3 -0
- wandb/integration/openai/fine_tuning.py +480 -0
- wandb/integration/openai/openai.py +22 -0
- wandb/integration/openai/resolver.py +240 -0
- wandb/integration/prodigy/__init__.py +3 -0
- wandb/integration/prodigy/prodigy.py +291 -0
- wandb/integration/sacred/__init__.py +117 -0
- wandb/integration/sagemaker/__init__.py +14 -0
- wandb/integration/sagemaker/auth.py +29 -0
- wandb/integration/sagemaker/config.py +58 -0
- wandb/integration/sagemaker/files.py +2 -0
- wandb/integration/sagemaker/resources.py +63 -0
- wandb/integration/sb3/__init__.py +3 -0
- wandb/integration/sb3/sb3.py +147 -0
- wandb/integration/sklearn/__init__.py +37 -0
- wandb/integration/sklearn/calculate/__init__.py +32 -0
- wandb/integration/sklearn/calculate/calibration_curves.py +125 -0
- wandb/integration/sklearn/calculate/class_proportions.py +68 -0
- wandb/integration/sklearn/calculate/confusion_matrix.py +93 -0
- wandb/integration/sklearn/calculate/decision_boundaries.py +40 -0
- wandb/integration/sklearn/calculate/elbow_curve.py +55 -0
- wandb/integration/sklearn/calculate/feature_importances.py +67 -0
- wandb/integration/sklearn/calculate/learning_curve.py +64 -0
- wandb/integration/sklearn/calculate/outlier_candidates.py +69 -0
- wandb/integration/sklearn/calculate/residuals.py +86 -0
- wandb/integration/sklearn/calculate/silhouette.py +118 -0
- wandb/integration/sklearn/calculate/summary_metrics.py +62 -0
- wandb/integration/sklearn/plot/__init__.py +35 -0
- wandb/integration/sklearn/plot/classifier.py +329 -0
- wandb/integration/sklearn/plot/clusterer.py +146 -0
- wandb/integration/sklearn/plot/regressor.py +121 -0
- wandb/integration/sklearn/plot/shared.py +91 -0
- wandb/integration/sklearn/utils.py +184 -0
- wandb/integration/tensorboard/__init__.py +10 -0
- wandb/integration/tensorboard/log.py +351 -0
- wandb/integration/tensorboard/monkeypatch.py +186 -0
- wandb/integration/tensorflow/__init__.py +5 -0
- wandb/integration/tensorflow/estimator_hook.py +54 -0
- wandb/integration/torch/__init__.py +0 -0
- wandb/integration/torch/wandb_torch.py +554 -0
- wandb/integration/ultralytics/__init__.py +11 -0
- wandb/integration/ultralytics/bbox_utils.py +215 -0
- wandb/integration/ultralytics/callback.py +528 -0
- wandb/integration/ultralytics/classification_utils.py +83 -0
- wandb/integration/ultralytics/mask_utils.py +202 -0
- wandb/integration/ultralytics/pose_utils.py +103 -0
- wandb/integration/weave/__init__.py +6 -0
- wandb/integration/weave/interface.py +49 -0
- wandb/integration/weave/weave.py +118 -0
- wandb/integration/xgboost/__init__.py +11 -0
- wandb/integration/xgboost/xgboost.py +189 -0
- wandb/integration/yolov8/__init__.py +0 -0
- wandb/integration/yolov8/yolov8.py +284 -0
- wandb/jupyter.py +538 -0
- wandb/mpmain/__init__.py +0 -0
- wandb/mpmain/__main__.py +1 -0
- wandb/old/__init__.py +0 -0
- wandb/old/core.py +53 -0
- wandb/old/settings.py +176 -0
- wandb/old/summary.py +438 -0
- wandb/plot/__init__.py +30 -0
- wandb/plot/bar.py +71 -0
- wandb/plot/confusion_matrix.py +185 -0
- wandb/plot/custom_chart.py +147 -0
- wandb/plot/histogram.py +66 -0
- wandb/plot/line.py +75 -0
- wandb/plot/line_series.py +173 -0
- wandb/plot/pr_curve.py +186 -0
- wandb/plot/roc_curve.py +163 -0
- wandb/plot/scatter.py +66 -0
- wandb/plot/utils.py +184 -0
- wandb/plot/viz.py +41 -0
- wandb/proto/__init__.py +0 -0
- wandb/proto/v3/__init__.py +0 -0
- wandb/proto/v3/wandb_base_pb2.py +55 -0
- wandb/proto/v3/wandb_internal_pb2.py +1738 -0
- wandb/proto/v3/wandb_server_pb2.py +209 -0
- wandb/proto/v3/wandb_settings_pb2.py +122 -0
- wandb/proto/v3/wandb_sync_pb2.py +100 -0
- wandb/proto/v3/wandb_telemetry_pb2.py +106 -0
- wandb/proto/v4/__init__.py +0 -0
- wandb/proto/v4/wandb_base_pb2.py +30 -0
- wandb/proto/v4/wandb_internal_pb2.py +384 -0
- wandb/proto/v4/wandb_server_pb2.py +64 -0
- wandb/proto/v4/wandb_settings_pb2.py +47 -0
- wandb/proto/v4/wandb_sync_pb2.py +42 -0
- wandb/proto/v4/wandb_telemetry_pb2.py +41 -0
- wandb/proto/v5/wandb_base_pb2.py +31 -0
- wandb/proto/v5/wandb_internal_pb2.py +385 -0
- wandb/proto/v5/wandb_server_pb2.py +65 -0
- wandb/proto/v5/wandb_settings_pb2.py +48 -0
- wandb/proto/v5/wandb_sync_pb2.py +43 -0
- wandb/proto/v5/wandb_telemetry_pb2.py +42 -0
- wandb/proto/v6/wandb_base_pb2.py +41 -0
- wandb/proto/v6/wandb_internal_pb2.py +395 -0
- wandb/proto/v6/wandb_server_pb2.py +75 -0
- wandb/proto/v6/wandb_settings_pb2.py +58 -0
- wandb/proto/v6/wandb_sync_pb2.py +53 -0
- wandb/proto/v6/wandb_telemetry_pb2.py +52 -0
- wandb/proto/wandb_base_pb2.py +12 -0
- wandb/proto/wandb_deprecated.py +59 -0
- wandb/proto/wandb_generate_deprecated.py +30 -0
- wandb/proto/wandb_generate_proto.py +50 -0
- wandb/proto/wandb_internal_pb2.py +18 -0
- wandb/proto/wandb_server_pb2.py +12 -0
- wandb/proto/wandb_settings_pb2.py +12 -0
- wandb/proto/wandb_sync_pb2.py +12 -0
- wandb/proto/wandb_telemetry_pb2.py +12 -0
- wandb/py.typed +0 -0
- wandb/sdk/__init__.py +37 -0
- wandb/sdk/artifacts/__init__.py +0 -0
- wandb/sdk/artifacts/_factories.py +22 -0
- wandb/sdk/artifacts/_generated/__init__.py +208 -0
- wandb/sdk/artifacts/_generated/add_aliases.py +21 -0
- wandb/sdk/artifacts/_generated/artifact_by_id.py +17 -0
- wandb/sdk/artifacts/_generated/artifact_by_name.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_collection_membership_file_urls.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_collection_membership_files.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_created_by.py +47 -0
- wandb/sdk/artifacts/_generated/artifact_file_urls.py +22 -0
- wandb/sdk/artifacts/_generated/artifact_type.py +31 -0
- wandb/sdk/artifacts/_generated/artifact_used_by.py +43 -0
- wandb/sdk/artifacts/_generated/artifact_version_files.py +36 -0
- wandb/sdk/artifacts/_generated/artifact_via_membership_by_name.py +26 -0
- wandb/sdk/artifacts/_generated/create_artifact_collection_tag_assignments.py +36 -0
- wandb/sdk/artifacts/_generated/delete_aliases.py +21 -0
- wandb/sdk/artifacts/_generated/delete_artifact.py +28 -0
- wandb/sdk/artifacts/_generated/delete_artifact_collection_tag_assignments.py +25 -0
- wandb/sdk/artifacts/_generated/delete_artifact_portfolio.py +35 -0
- wandb/sdk/artifacts/_generated/delete_artifact_sequence.py +35 -0
- wandb/sdk/artifacts/_generated/enums.py +22 -0
- wandb/sdk/artifacts/_generated/fetch_artifact_manifest.py +38 -0
- wandb/sdk/artifacts/_generated/fetch_linked_artifacts.py +67 -0
- wandb/sdk/artifacts/_generated/fetch_registries.py +32 -0
- wandb/sdk/artifacts/_generated/fragments.py +524 -0
- wandb/sdk/artifacts/_generated/input_types.py +46 -0
- wandb/sdk/artifacts/_generated/link_artifact.py +27 -0
- wandb/sdk/artifacts/_generated/move_artifact_collection.py +35 -0
- wandb/sdk/artifacts/_generated/operations.py +1253 -0
- wandb/sdk/artifacts/_generated/project_artifact_collection.py +101 -0
- wandb/sdk/artifacts/_generated/project_artifact_collections.py +33 -0
- wandb/sdk/artifacts/_generated/project_artifact_type.py +24 -0
- wandb/sdk/artifacts/_generated/project_artifact_types.py +24 -0
- wandb/sdk/artifacts/_generated/project_artifacts.py +42 -0
- wandb/sdk/artifacts/_generated/registry_collections.py +34 -0
- wandb/sdk/artifacts/_generated/registry_versions.py +34 -0
- wandb/sdk/artifacts/_generated/run_input_artifacts.py +31 -0
- wandb/sdk/artifacts/_generated/run_output_artifacts.py +31 -0
- wandb/sdk/artifacts/_generated/type_info.py +19 -0
- wandb/sdk/artifacts/_generated/unlink_artifact.py +25 -0
- wandb/sdk/artifacts/_generated/update_artifact.py +26 -0
- wandb/sdk/artifacts/_generated/update_artifact_portfolio.py +35 -0
- wandb/sdk/artifacts/_generated/update_artifact_sequence.py +35 -0
- wandb/sdk/artifacts/_gqlutils.py +47 -0
- wandb/sdk/artifacts/_internal_artifact.py +54 -0
- wandb/sdk/artifacts/_models/__init__.py +4 -0
- wandb/sdk/artifacts/_models/base_model.py +20 -0
- wandb/sdk/artifacts/_validators.py +338 -0
- wandb/sdk/artifacts/artifact.py +2683 -0
- wandb/sdk/artifacts/artifact_download_logger.py +45 -0
- wandb/sdk/artifacts/artifact_file_cache.py +256 -0
- wandb/sdk/artifacts/artifact_instance_cache.py +17 -0
- wandb/sdk/artifacts/artifact_manifest.py +76 -0
- wandb/sdk/artifacts/artifact_manifest_entry.py +315 -0
- wandb/sdk/artifacts/artifact_manifests/__init__.py +0 -0
- wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +94 -0
- wandb/sdk/artifacts/artifact_saver.py +277 -0
- wandb/sdk/artifacts/artifact_state.py +13 -0
- wandb/sdk/artifacts/artifact_ttl.py +9 -0
- wandb/sdk/artifacts/exceptions.py +72 -0
- wandb/sdk/artifacts/staging.py +27 -0
- wandb/sdk/artifacts/storage_handler.py +62 -0
- wandb/sdk/artifacts/storage_handlers/__init__.py +0 -0
- wandb/sdk/artifacts/storage_handlers/azure_handler.py +214 -0
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py +224 -0
- wandb/sdk/artifacts/storage_handlers/http_handler.py +112 -0
- wandb/sdk/artifacts/storage_handlers/local_file_handler.py +142 -0
- wandb/sdk/artifacts/storage_handlers/multi_handler.py +56 -0
- wandb/sdk/artifacts/storage_handlers/s3_handler.py +340 -0
- wandb/sdk/artifacts/storage_handlers/tracking_handler.py +68 -0
- wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +131 -0
- wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +74 -0
- wandb/sdk/artifacts/storage_layout.py +8 -0
- wandb/sdk/artifacts/storage_policies/__init__.py +4 -0
- wandb/sdk/artifacts/storage_policies/_factories.py +63 -0
- wandb/sdk/artifacts/storage_policies/register.py +1 -0
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +525 -0
- wandb/sdk/artifacts/storage_policy.py +75 -0
- wandb/sdk/backend/__init__.py +0 -0
- wandb/sdk/backend/backend.py +57 -0
- wandb/sdk/data_types/__init__.py +0 -0
- wandb/sdk/data_types/_dtypes.py +914 -0
- wandb/sdk/data_types/_private.py +10 -0
- wandb/sdk/data_types/audio.py +208 -0
- wandb/sdk/data_types/base_types/__init__.py +0 -0
- wandb/sdk/data_types/base_types/json_metadata.py +55 -0
- wandb/sdk/data_types/base_types/media.py +339 -0
- wandb/sdk/data_types/base_types/wb_value.py +295 -0
- wandb/sdk/data_types/bokeh.py +91 -0
- wandb/sdk/data_types/graph.py +439 -0
- wandb/sdk/data_types/helper_types/__init__.py +0 -0
- wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +327 -0
- wandb/sdk/data_types/helper_types/classes.py +159 -0
- wandb/sdk/data_types/helper_types/image_mask.py +251 -0
- wandb/sdk/data_types/histogram.py +107 -0
- wandb/sdk/data_types/html.py +165 -0
- wandb/sdk/data_types/image.py +985 -0
- wandb/sdk/data_types/molecule.py +250 -0
- wandb/sdk/data_types/object_3d.py +495 -0
- wandb/sdk/data_types/plotly.py +95 -0
- wandb/sdk/data_types/saved_model.py +435 -0
- wandb/sdk/data_types/table.py +1468 -0
- wandb/sdk/data_types/table_decorators.py +108 -0
- wandb/sdk/data_types/trace_tree.py +440 -0
- wandb/sdk/data_types/utils.py +260 -0
- wandb/sdk/data_types/video.py +303 -0
- wandb/sdk/integration_utils/__init__.py +0 -0
- wandb/sdk/integration_utils/auto_logging.py +232 -0
- wandb/sdk/integration_utils/data_logging.py +475 -0
- wandb/sdk/interface/__init__.py +0 -0
- wandb/sdk/interface/constants.py +4 -0
- wandb/sdk/interface/interface.py +1093 -0
- wandb/sdk/interface/interface_queue.py +50 -0
- wandb/sdk/interface/interface_shared.py +473 -0
- wandb/sdk/interface/interface_sock.py +55 -0
- wandb/sdk/interface/summary_record.py +67 -0
- wandb/sdk/internal/__init__.py +0 -0
- wandb/sdk/internal/_generated/__init__.py +5 -0
- wandb/sdk/internal/_generated/enums.py +4 -0
- wandb/sdk/internal/_generated/input_types.py +4 -0
- wandb/sdk/internal/_generated/operations.py +15 -0
- wandb/sdk/internal/_generated/server_features_query.py +27 -0
- wandb/sdk/internal/context.py +89 -0
- wandb/sdk/internal/datastore.py +293 -0
- wandb/sdk/internal/file_pusher.py +177 -0
- wandb/sdk/internal/file_stream.py +686 -0
- wandb/sdk/internal/handler.py +854 -0
- wandb/sdk/internal/incremental_table_util.py +53 -0
- wandb/sdk/internal/internal_api.py +4723 -0
- wandb/sdk/internal/job_builder.py +639 -0
- wandb/sdk/internal/profiler.py +79 -0
- wandb/sdk/internal/progress.py +77 -0
- wandb/sdk/internal/run.py +27 -0
- wandb/sdk/internal/sample.py +70 -0
- wandb/sdk/internal/sender.py +1692 -0
- wandb/sdk/internal/sender_config.py +203 -0
- wandb/sdk/internal/settings_static.py +40 -0
- wandb/sdk/internal/tb_watcher.py +519 -0
- wandb/sdk/internal/thread_local_settings.py +18 -0
- wandb/sdk/launch/__init__.py +15 -0
- wandb/sdk/launch/_launch.py +331 -0
- wandb/sdk/launch/_launch_add.py +255 -0
- wandb/sdk/launch/_project_spec.py +565 -0
- wandb/sdk/launch/agent/__init__.py +5 -0
- wandb/sdk/launch/agent/agent.py +931 -0
- wandb/sdk/launch/agent/config.py +296 -0
- wandb/sdk/launch/agent/job_status_tracker.py +55 -0
- wandb/sdk/launch/agent/run_queue_item_file_saver.py +39 -0
- wandb/sdk/launch/builder/__init__.py +0 -0
- wandb/sdk/launch/builder/abstract.py +156 -0
- wandb/sdk/launch/builder/build.py +296 -0
- wandb/sdk/launch/builder/context_manager.py +235 -0
- wandb/sdk/launch/builder/docker_builder.py +177 -0
- wandb/sdk/launch/builder/kaniko_builder.py +595 -0
- wandb/sdk/launch/builder/noop.py +58 -0
- wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +188 -0
- wandb/sdk/launch/builder/templates/dockerfile.py +92 -0
- wandb/sdk/launch/create_job.py +541 -0
- wandb/sdk/launch/environment/abstract.py +29 -0
- wandb/sdk/launch/environment/aws_environment.py +322 -0
- wandb/sdk/launch/environment/azure_environment.py +105 -0
- wandb/sdk/launch/environment/gcp_environment.py +334 -0
- wandb/sdk/launch/environment/local_environment.py +65 -0
- wandb/sdk/launch/errors.py +13 -0
- wandb/sdk/launch/git_reference.py +109 -0
- wandb/sdk/launch/inputs/files.py +148 -0
- wandb/sdk/launch/inputs/internal.py +315 -0
- wandb/sdk/launch/inputs/manage.py +113 -0
- wandb/sdk/launch/inputs/schema.py +70 -0
- wandb/sdk/launch/loader.py +249 -0
- wandb/sdk/launch/registry/abstract.py +48 -0
- wandb/sdk/launch/registry/anon.py +29 -0
- wandb/sdk/launch/registry/azure_container_registry.py +124 -0
- wandb/sdk/launch/registry/elastic_container_registry.py +192 -0
- wandb/sdk/launch/registry/google_artifact_registry.py +219 -0
- wandb/sdk/launch/registry/local_registry.py +65 -0
- wandb/sdk/launch/runner/__init__.py +0 -0
- wandb/sdk/launch/runner/abstract.py +185 -0
- wandb/sdk/launch/runner/kubernetes_monitor.py +473 -0
- wandb/sdk/launch/runner/kubernetes_runner.py +1290 -0
- wandb/sdk/launch/runner/local_container.py +301 -0
- wandb/sdk/launch/runner/local_process.py +78 -0
- wandb/sdk/launch/runner/sagemaker_runner.py +424 -0
- wandb/sdk/launch/runner/vertex_runner.py +225 -0
- wandb/sdk/launch/sweeps/__init__.py +37 -0
- wandb/sdk/launch/sweeps/scheduler.py +739 -0
- wandb/sdk/launch/sweeps/scheduler_sweep.py +90 -0
- wandb/sdk/launch/sweeps/utils.py +324 -0
- wandb/sdk/launch/utils.py +827 -0
- wandb/sdk/launch/wandb_reference.py +138 -0
- wandb/sdk/lib/__init__.py +5 -0
- wandb/sdk/lib/apikey.py +334 -0
- wandb/sdk/lib/asyncio_compat.py +278 -0
- wandb/sdk/lib/asyncio_manager.py +252 -0
- wandb/sdk/lib/capped_dict.py +26 -0
- wandb/sdk/lib/config_util.py +101 -0
- wandb/sdk/lib/console_capture.py +219 -0
- wandb/sdk/lib/credentials.py +141 -0
- wandb/sdk/lib/deprecate.py +27 -0
- wandb/sdk/lib/disabled.py +30 -0
- wandb/sdk/lib/exit_hooks.py +54 -0
- wandb/sdk/lib/file_stream_utils.py +118 -0
- wandb/sdk/lib/filenames.py +64 -0
- wandb/sdk/lib/filesystem.py +372 -0
- wandb/sdk/lib/fsm.py +165 -0
- wandb/sdk/lib/gitlib.py +240 -0
- wandb/sdk/lib/gql_request.py +76 -0
- wandb/sdk/lib/handler_util.py +21 -0
- wandb/sdk/lib/hashutil.py +106 -0
- wandb/sdk/lib/import_hooks.py +275 -0
- wandb/sdk/lib/interrupt.py +37 -0
- wandb/sdk/lib/ipython.py +126 -0
- wandb/sdk/lib/json_util.py +75 -0
- wandb/sdk/lib/lazyloader.py +63 -0
- wandb/sdk/lib/module.py +72 -0
- wandb/sdk/lib/paths.py +108 -0
- wandb/sdk/lib/preinit.py +42 -0
- wandb/sdk/lib/printer.py +567 -0
- wandb/sdk/lib/printer_asyncio.py +48 -0
- wandb/sdk/lib/progress.py +325 -0
- wandb/sdk/lib/proto_util.py +90 -0
- wandb/sdk/lib/redirect.py +876 -0
- wandb/sdk/lib/retry.py +395 -0
- wandb/sdk/lib/run_moment.py +82 -0
- wandb/sdk/lib/runid.py +12 -0
- wandb/sdk/lib/server.py +58 -0
- wandb/sdk/lib/service/ipc_support.py +13 -0
- wandb/sdk/lib/service/service_client.py +102 -0
- wandb/sdk/lib/service/service_connection.py +238 -0
- wandb/sdk/lib/service/service_port_file.py +105 -0
- wandb/sdk/lib/service/service_process.py +111 -0
- wandb/sdk/lib/service/service_token.py +181 -0
- wandb/sdk/lib/sparkline.py +44 -0
- wandb/sdk/lib/telemetry.py +100 -0
- wandb/sdk/lib/timed_input.py +133 -0
- wandb/sdk/lib/timer.py +19 -0
- wandb/sdk/lib/wb_logging.py +161 -0
- wandb/sdk/mailbox/__init__.py +23 -0
- wandb/sdk/mailbox/mailbox.py +143 -0
- wandb/sdk/mailbox/mailbox_handle.py +134 -0
- wandb/sdk/mailbox/response_handle.py +99 -0
- wandb/sdk/mailbox/wait_with_progress.py +100 -0
- wandb/sdk/projects/_generated/__init__.py +26 -0
- wandb/sdk/projects/_generated/delete_project.py +22 -0
- wandb/sdk/projects/_generated/enums.py +4 -0
- wandb/sdk/projects/_generated/fetch_registry.py +22 -0
- wandb/sdk/projects/_generated/fragments.py +41 -0
- wandb/sdk/projects/_generated/input_types.py +13 -0
- wandb/sdk/projects/_generated/operations.py +88 -0
- wandb/sdk/projects/_generated/rename_project.py +27 -0
- wandb/sdk/projects/_generated/upsert_registry_project.py +27 -0
- wandb/sdk/verify/__init__.py +0 -0
- wandb/sdk/verify/verify.py +555 -0
- wandb/sdk/wandb_alerts.py +12 -0
- wandb/sdk/wandb_config.py +323 -0
- wandb/sdk/wandb_helper.py +54 -0
- wandb/sdk/wandb_init.py +1601 -0
- wandb/sdk/wandb_login.py +358 -0
- wandb/sdk/wandb_metric.py +112 -0
- wandb/sdk/wandb_require.py +88 -0
- wandb/sdk/wandb_require_helpers.py +44 -0
- wandb/sdk/wandb_run.py +4102 -0
- wandb/sdk/wandb_settings.py +2197 -0
- wandb/sdk/wandb_setup.py +560 -0
- wandb/sdk/wandb_summary.py +150 -0
- wandb/sdk/wandb_sweep.py +120 -0
- wandb/sdk/wandb_sync.py +71 -0
- wandb/sdk/wandb_watch.py +146 -0
- wandb/sklearn.py +35 -0
- wandb/sync/__init__.py +3 -0
- wandb/sync/sync.py +457 -0
- wandb/trigger.py +29 -0
- wandb/util.py +2040 -0
- wandb/vendor/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/setup.py +40 -0
- wandb/vendor/gql-0.2.0/tests/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/tests/starwars/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/tests/starwars/fixtures.py +96 -0
- wandb/vendor/gql-0.2.0/tests/starwars/schema.py +146 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_dsl.py +293 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_query.py +355 -0
- wandb/vendor/gql-0.2.0/tests/starwars/test_validation.py +171 -0
- wandb/vendor/gql-0.2.0/tests/test_client.py +31 -0
- wandb/vendor/gql-0.2.0/tests/test_transport.py +89 -0
- wandb/vendor/gql-0.2.0/wandb_gql/__init__.py +4 -0
- wandb/vendor/gql-0.2.0/wandb_gql/client.py +75 -0
- wandb/vendor/gql-0.2.0/wandb_gql/dsl.py +152 -0
- wandb/vendor/gql-0.2.0/wandb_gql/gql.py +10 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/__init__.py +0 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/http.py +6 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/local_schema.py +15 -0
- wandb/vendor/gql-0.2.0/wandb_gql/transport/requests.py +46 -0
- wandb/vendor/gql-0.2.0/wandb_gql/utils.py +21 -0
- wandb/vendor/graphql-core-1.1/setup.py +86 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/__init__.py +287 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/__init__.py +6 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/base.py +42 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/format_error.py +11 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/located_error.py +29 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/error/syntax_error.py +36 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/__init__.py +26 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/base.py +311 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executor.py +398 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/asyncio.py +53 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/gevent.py +22 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/process.py +32 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/sync.py +7 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/thread.py +35 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/utils.py +6 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/executor.py +66 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/fragment.py +252 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/resolver.py +151 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/utils.py +7 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/middleware.py +57 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/execution/values.py +145 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/graphql.py +60 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/ast.py +1349 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/base.py +19 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/lexer.py +435 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/location.py +30 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/parser.py +779 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/printer.py +193 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/source.py +18 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor.py +222 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor_meta.py +82 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/cached_property.py +17 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/contain_subset.py +28 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/default_ordered_dict.py +40 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/ordereddict.py +8 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/pair_set.py +43 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py +78 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/__init__.py +67 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/definition.py +619 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/directives.py +132 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/introspection.py +440 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/scalars.py +131 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/schema.py +100 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/type/typemap.py +145 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/__init__.py +0 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/assert_valid_name.py +9 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_from_value.py +65 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_code.py +49 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_dict.py +24 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/base.py +75 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_ast_schema.py +291 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_client_schema.py +250 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/concat_ast.py +9 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/extend_schema.py +357 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_field_def.py +27 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_operation_ast.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/introspection_query.py +90 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_literal_value.py +67 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_value.py +66 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/quoted_or_list.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/schema_printer.py +168 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/suggestion_list.py +56 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_comparators.py +69 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_from_ast.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_info.py +149 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/utils/value_from_ast.py +69 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/__init__.py +4 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/__init__.py +79 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/arguments_of_correct_type.py +24 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/base.py +8 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/default_values_of_correct_type.py +44 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fields_on_correct_type.py +113 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fragments_on_composite_types.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_argument_names.py +70 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_directives.py +97 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_fragment_names.py +19 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_type_names.py +43 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/lone_anonymous_operation.py +23 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_fragment_cycles.py +59 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_undefined_variables.py +36 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_fragments.py +38 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_variables.py +37 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/overlapping_fields_can_be_merged.py +529 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/possible_fragment_spreads.py +44 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/provided_non_null_arguments.py +46 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/scalar_leafs.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_argument_names.py +32 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_fragment_names.py +28 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_input_field_names.py +33 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_operation_names.py +31 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_variable_names.py +27 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_are_input_types.py +21 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_in_allowed_position.py +53 -0
- wandb/vendor/graphql-core-1.1/wandb_graphql/validation/validation.py +158 -0
- wandb/vendor/promise-2.3.0/conftest.py +30 -0
- wandb/vendor/promise-2.3.0/setup.py +64 -0
- wandb/vendor/promise-2.3.0/tests/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/tests/conftest.py +8 -0
- wandb/vendor/promise-2.3.0/tests/test_awaitable.py +32 -0
- wandb/vendor/promise-2.3.0/tests/test_awaitable_35.py +47 -0
- wandb/vendor/promise-2.3.0/tests/test_benchmark.py +116 -0
- wandb/vendor/promise-2.3.0/tests/test_complex_threads.py +23 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader.py +452 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader_awaitable_35.py +99 -0
- wandb/vendor/promise-2.3.0/tests/test_dataloader_extra.py +65 -0
- wandb/vendor/promise-2.3.0/tests/test_extra.py +670 -0
- wandb/vendor/promise-2.3.0/tests/test_issues.py +132 -0
- wandb/vendor/promise-2.3.0/tests/test_promise_list.py +70 -0
- wandb/vendor/promise-2.3.0/tests/test_spec.py +584 -0
- wandb/vendor/promise-2.3.0/tests/test_thread_safety.py +115 -0
- wandb/vendor/promise-2.3.0/tests/utils.py +3 -0
- wandb/vendor/promise-2.3.0/wandb_promise/__init__.py +38 -0
- wandb/vendor/promise-2.3.0/wandb_promise/async_.py +135 -0
- wandb/vendor/promise-2.3.0/wandb_promise/compat.py +32 -0
- wandb/vendor/promise-2.3.0/wandb_promise/dataloader.py +326 -0
- wandb/vendor/promise-2.3.0/wandb_promise/iterate_promise.py +12 -0
- wandb/vendor/promise-2.3.0/wandb_promise/promise.py +848 -0
- wandb/vendor/promise-2.3.0/wandb_promise/promise_list.py +151 -0
- wandb/vendor/promise-2.3.0/wandb_promise/pyutils/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/wandb_promise/pyutils/version.py +83 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/__init__.py +0 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/asyncio.py +22 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/gevent.py +21 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/immediate.py +27 -0
- wandb/vendor/promise-2.3.0/wandb_promise/schedulers/thread.py +18 -0
- wandb/vendor/promise-2.3.0/wandb_promise/utils.py +56 -0
- wandb/vendor/pygments/__init__.py +90 -0
- wandb/vendor/pygments/cmdline.py +568 -0
- wandb/vendor/pygments/console.py +74 -0
- wandb/vendor/pygments/filter.py +74 -0
- wandb/vendor/pygments/filters/__init__.py +350 -0
- wandb/vendor/pygments/formatter.py +95 -0
- wandb/vendor/pygments/formatters/__init__.py +153 -0
- wandb/vendor/pygments/formatters/_mapping.py +85 -0
- wandb/vendor/pygments/formatters/bbcode.py +109 -0
- wandb/vendor/pygments/formatters/html.py +851 -0
- wandb/vendor/pygments/formatters/img.py +600 -0
- wandb/vendor/pygments/formatters/irc.py +182 -0
- wandb/vendor/pygments/formatters/latex.py +482 -0
- wandb/vendor/pygments/formatters/other.py +160 -0
- wandb/vendor/pygments/formatters/rtf.py +147 -0
- wandb/vendor/pygments/formatters/svg.py +153 -0
- wandb/vendor/pygments/formatters/terminal.py +136 -0
- wandb/vendor/pygments/formatters/terminal256.py +309 -0
- wandb/vendor/pygments/lexer.py +871 -0
- wandb/vendor/pygments/lexers/__init__.py +329 -0
- wandb/vendor/pygments/lexers/_asy_builtins.py +1645 -0
- wandb/vendor/pygments/lexers/_cl_builtins.py +232 -0
- wandb/vendor/pygments/lexers/_cocoa_builtins.py +72 -0
- wandb/vendor/pygments/lexers/_csound_builtins.py +1346 -0
- wandb/vendor/pygments/lexers/_lasso_builtins.py +5327 -0
- wandb/vendor/pygments/lexers/_lua_builtins.py +295 -0
- wandb/vendor/pygments/lexers/_mapping.py +500 -0
- wandb/vendor/pygments/lexers/_mql_builtins.py +1172 -0
- wandb/vendor/pygments/lexers/_openedge_builtins.py +2547 -0
- wandb/vendor/pygments/lexers/_php_builtins.py +4756 -0
- wandb/vendor/pygments/lexers/_postgres_builtins.py +621 -0
- wandb/vendor/pygments/lexers/_scilab_builtins.py +3094 -0
- wandb/vendor/pygments/lexers/_sourcemod_builtins.py +1163 -0
- wandb/vendor/pygments/lexers/_stan_builtins.py +532 -0
- wandb/vendor/pygments/lexers/_stata_builtins.py +419 -0
- wandb/vendor/pygments/lexers/_tsql_builtins.py +1004 -0
- wandb/vendor/pygments/lexers/_vim_builtins.py +1939 -0
- wandb/vendor/pygments/lexers/actionscript.py +240 -0
- wandb/vendor/pygments/lexers/agile.py +24 -0
- wandb/vendor/pygments/lexers/algebra.py +221 -0
- wandb/vendor/pygments/lexers/ambient.py +76 -0
- wandb/vendor/pygments/lexers/ampl.py +87 -0
- wandb/vendor/pygments/lexers/apl.py +101 -0
- wandb/vendor/pygments/lexers/archetype.py +318 -0
- wandb/vendor/pygments/lexers/asm.py +641 -0
- wandb/vendor/pygments/lexers/automation.py +374 -0
- wandb/vendor/pygments/lexers/basic.py +500 -0
- wandb/vendor/pygments/lexers/bibtex.py +160 -0
- wandb/vendor/pygments/lexers/business.py +612 -0
- wandb/vendor/pygments/lexers/c_cpp.py +252 -0
- wandb/vendor/pygments/lexers/c_like.py +541 -0
- wandb/vendor/pygments/lexers/capnproto.py +78 -0
- wandb/vendor/pygments/lexers/chapel.py +102 -0
- wandb/vendor/pygments/lexers/clean.py +288 -0
- wandb/vendor/pygments/lexers/compiled.py +34 -0
- wandb/vendor/pygments/lexers/configs.py +833 -0
- wandb/vendor/pygments/lexers/console.py +114 -0
- wandb/vendor/pygments/lexers/crystal.py +393 -0
- wandb/vendor/pygments/lexers/csound.py +366 -0
- wandb/vendor/pygments/lexers/css.py +689 -0
- wandb/vendor/pygments/lexers/d.py +251 -0
- wandb/vendor/pygments/lexers/dalvik.py +125 -0
- wandb/vendor/pygments/lexers/data.py +555 -0
- wandb/vendor/pygments/lexers/diff.py +165 -0
- wandb/vendor/pygments/lexers/dotnet.py +691 -0
- wandb/vendor/pygments/lexers/dsls.py +878 -0
- wandb/vendor/pygments/lexers/dylan.py +289 -0
- wandb/vendor/pygments/lexers/ecl.py +125 -0
- wandb/vendor/pygments/lexers/eiffel.py +65 -0
- wandb/vendor/pygments/lexers/elm.py +121 -0
- wandb/vendor/pygments/lexers/erlang.py +533 -0
- wandb/vendor/pygments/lexers/esoteric.py +277 -0
- wandb/vendor/pygments/lexers/ezhil.py +69 -0
- wandb/vendor/pygments/lexers/factor.py +344 -0
- wandb/vendor/pygments/lexers/fantom.py +250 -0
- wandb/vendor/pygments/lexers/felix.py +273 -0
- wandb/vendor/pygments/lexers/forth.py +177 -0
- wandb/vendor/pygments/lexers/fortran.py +205 -0
- wandb/vendor/pygments/lexers/foxpro.py +428 -0
- wandb/vendor/pygments/lexers/functional.py +21 -0
- wandb/vendor/pygments/lexers/go.py +101 -0
- wandb/vendor/pygments/lexers/grammar_notation.py +213 -0
- wandb/vendor/pygments/lexers/graph.py +80 -0
- wandb/vendor/pygments/lexers/graphics.py +553 -0
- wandb/vendor/pygments/lexers/haskell.py +843 -0
- wandb/vendor/pygments/lexers/haxe.py +936 -0
- wandb/vendor/pygments/lexers/hdl.py +382 -0
- wandb/vendor/pygments/lexers/hexdump.py +103 -0
- wandb/vendor/pygments/lexers/html.py +602 -0
- wandb/vendor/pygments/lexers/idl.py +270 -0
- wandb/vendor/pygments/lexers/igor.py +288 -0
- wandb/vendor/pygments/lexers/inferno.py +96 -0
- wandb/vendor/pygments/lexers/installers.py +322 -0
- wandb/vendor/pygments/lexers/int_fiction.py +1343 -0
- wandb/vendor/pygments/lexers/iolang.py +63 -0
- wandb/vendor/pygments/lexers/j.py +146 -0
- wandb/vendor/pygments/lexers/javascript.py +1525 -0
- wandb/vendor/pygments/lexers/julia.py +333 -0
- wandb/vendor/pygments/lexers/jvm.py +1573 -0
- wandb/vendor/pygments/lexers/lisp.py +2621 -0
- wandb/vendor/pygments/lexers/make.py +202 -0
- wandb/vendor/pygments/lexers/markup.py +595 -0
- wandb/vendor/pygments/lexers/math.py +21 -0
- wandb/vendor/pygments/lexers/matlab.py +663 -0
- wandb/vendor/pygments/lexers/ml.py +769 -0
- wandb/vendor/pygments/lexers/modeling.py +358 -0
- wandb/vendor/pygments/lexers/modula2.py +1561 -0
- wandb/vendor/pygments/lexers/monte.py +204 -0
- wandb/vendor/pygments/lexers/ncl.py +894 -0
- wandb/vendor/pygments/lexers/nimrod.py +159 -0
- wandb/vendor/pygments/lexers/nit.py +64 -0
- wandb/vendor/pygments/lexers/nix.py +136 -0
- wandb/vendor/pygments/lexers/oberon.py +105 -0
- wandb/vendor/pygments/lexers/objective.py +504 -0
- wandb/vendor/pygments/lexers/ooc.py +85 -0
- wandb/vendor/pygments/lexers/other.py +41 -0
- wandb/vendor/pygments/lexers/parasail.py +79 -0
- wandb/vendor/pygments/lexers/parsers.py +835 -0
- wandb/vendor/pygments/lexers/pascal.py +644 -0
- wandb/vendor/pygments/lexers/pawn.py +199 -0
- wandb/vendor/pygments/lexers/perl.py +620 -0
- wandb/vendor/pygments/lexers/php.py +267 -0
- wandb/vendor/pygments/lexers/praat.py +294 -0
- wandb/vendor/pygments/lexers/prolog.py +306 -0
- wandb/vendor/pygments/lexers/python.py +939 -0
- wandb/vendor/pygments/lexers/qvt.py +152 -0
- wandb/vendor/pygments/lexers/r.py +453 -0
- wandb/vendor/pygments/lexers/rdf.py +270 -0
- wandb/vendor/pygments/lexers/rebol.py +431 -0
- wandb/vendor/pygments/lexers/resource.py +85 -0
- wandb/vendor/pygments/lexers/rnc.py +67 -0
- wandb/vendor/pygments/lexers/roboconf.py +82 -0
- wandb/vendor/pygments/lexers/robotframework.py +560 -0
- wandb/vendor/pygments/lexers/ruby.py +519 -0
- wandb/vendor/pygments/lexers/rust.py +220 -0
- wandb/vendor/pygments/lexers/sas.py +228 -0
- wandb/vendor/pygments/lexers/scripting.py +1222 -0
- wandb/vendor/pygments/lexers/shell.py +794 -0
- wandb/vendor/pygments/lexers/smalltalk.py +195 -0
- wandb/vendor/pygments/lexers/smv.py +79 -0
- wandb/vendor/pygments/lexers/snobol.py +83 -0
- wandb/vendor/pygments/lexers/special.py +103 -0
- wandb/vendor/pygments/lexers/sql.py +681 -0
- wandb/vendor/pygments/lexers/stata.py +108 -0
- wandb/vendor/pygments/lexers/supercollider.py +90 -0
- wandb/vendor/pygments/lexers/tcl.py +145 -0
- wandb/vendor/pygments/lexers/templates.py +2283 -0
- wandb/vendor/pygments/lexers/testing.py +207 -0
- wandb/vendor/pygments/lexers/text.py +25 -0
- wandb/vendor/pygments/lexers/textedit.py +169 -0
- wandb/vendor/pygments/lexers/textfmts.py +297 -0
- wandb/vendor/pygments/lexers/theorem.py +458 -0
- wandb/vendor/pygments/lexers/trafficscript.py +54 -0
- wandb/vendor/pygments/lexers/typoscript.py +226 -0
- wandb/vendor/pygments/lexers/urbi.py +133 -0
- wandb/vendor/pygments/lexers/varnish.py +190 -0
- wandb/vendor/pygments/lexers/verification.py +111 -0
- wandb/vendor/pygments/lexers/web.py +24 -0
- wandb/vendor/pygments/lexers/webmisc.py +988 -0
- wandb/vendor/pygments/lexers/whiley.py +116 -0
- wandb/vendor/pygments/lexers/x10.py +69 -0
- wandb/vendor/pygments/modeline.py +44 -0
- wandb/vendor/pygments/plugin.py +68 -0
- wandb/vendor/pygments/regexopt.py +92 -0
- wandb/vendor/pygments/scanner.py +105 -0
- wandb/vendor/pygments/sphinxext.py +158 -0
- wandb/vendor/pygments/style.py +155 -0
- wandb/vendor/pygments/styles/__init__.py +80 -0
- wandb/vendor/pygments/styles/abap.py +29 -0
- wandb/vendor/pygments/styles/algol.py +63 -0
- wandb/vendor/pygments/styles/algol_nu.py +63 -0
- wandb/vendor/pygments/styles/arduino.py +98 -0
- wandb/vendor/pygments/styles/autumn.py +65 -0
- wandb/vendor/pygments/styles/borland.py +51 -0
- wandb/vendor/pygments/styles/bw.py +49 -0
- wandb/vendor/pygments/styles/colorful.py +81 -0
- wandb/vendor/pygments/styles/default.py +73 -0
- wandb/vendor/pygments/styles/emacs.py +72 -0
- wandb/vendor/pygments/styles/friendly.py +72 -0
- wandb/vendor/pygments/styles/fruity.py +42 -0
- wandb/vendor/pygments/styles/igor.py +29 -0
- wandb/vendor/pygments/styles/lovelace.py +97 -0
- wandb/vendor/pygments/styles/manni.py +75 -0
- wandb/vendor/pygments/styles/monokai.py +106 -0
- wandb/vendor/pygments/styles/murphy.py +80 -0
- wandb/vendor/pygments/styles/native.py +65 -0
- wandb/vendor/pygments/styles/paraiso_dark.py +125 -0
- wandb/vendor/pygments/styles/paraiso_light.py +125 -0
- wandb/vendor/pygments/styles/pastie.py +75 -0
- wandb/vendor/pygments/styles/perldoc.py +69 -0
- wandb/vendor/pygments/styles/rainbow_dash.py +89 -0
- wandb/vendor/pygments/styles/rrt.py +33 -0
- wandb/vendor/pygments/styles/sas.py +44 -0
- wandb/vendor/pygments/styles/stata.py +40 -0
- wandb/vendor/pygments/styles/tango.py +141 -0
- wandb/vendor/pygments/styles/trac.py +63 -0
- wandb/vendor/pygments/styles/vim.py +63 -0
- wandb/vendor/pygments/styles/vs.py +38 -0
- wandb/vendor/pygments/styles/xcode.py +51 -0
- wandb/vendor/pygments/token.py +213 -0
- wandb/vendor/pygments/unistring.py +217 -0
- wandb/vendor/pygments/util.py +388 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/__init__.py +17 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/events.py +615 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/__init__.py +98 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/api.py +369 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents.py +172 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents2.py +239 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify.py +218 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_buffer.py +81 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_c.py +575 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/kqueue.py +730 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/polling.py +145 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/read_directory_changes.py +133 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/winapi.py +348 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/patterns.py +265 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/tricks/__init__.py +174 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/__init__.py +151 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/bricks.py +249 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/compat.py +29 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/decorators.py +198 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/delayed_queue.py +88 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/dirsnapshot.py +293 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/echo.py +157 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/event_backport.py +41 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/importlib2.py +40 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/platform.py +57 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/unicode_paths.py +64 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/win32stat.py +123 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/version.py +28 -0
- wandb/vendor/watchdog_0_9_0/wandb_watchdog/watchmedo.py +577 -0
- wandb/wandb_agent.py +611 -0
- wandb/wandb_controller.py +719 -0
- wandb/wandb_run.py +8 -0
- wandb-0.22.1.dist-info/METADATA +223 -0
- wandb-0.22.1.dist-info/RECORD +919 -0
- wandb-0.22.1.dist-info/WHEEL +4 -0
- wandb-0.22.1.dist-info/entry_points.txt +3 -0
- wandb-0.22.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,278 @@
|
|
1
|
+
"""W&B Public API for Project objects.
|
2
|
+
|
3
|
+
This module provides classes for interacting with W&B projects and their
|
4
|
+
associated data.
|
5
|
+
|
6
|
+
Example:
|
7
|
+
```python
|
8
|
+
from wandb.apis.public import Api
|
9
|
+
|
10
|
+
# Get all projects for an entity
|
11
|
+
projects = Api().projects("entity")
|
12
|
+
|
13
|
+
# Access project data
|
14
|
+
for project in projects:
|
15
|
+
print(f"Project: {project.name}")
|
16
|
+
print(f"URL: {project.url}")
|
17
|
+
|
18
|
+
# Get artifact types
|
19
|
+
for artifact_type in project.artifacts_types():
|
20
|
+
print(f"Artifact Type: {artifact_type.name}")
|
21
|
+
|
22
|
+
# Get sweeps
|
23
|
+
for sweep in project.sweeps():
|
24
|
+
print(f"Sweep ID: {sweep.id}")
|
25
|
+
print(f"State: {sweep.state}")
|
26
|
+
```
|
27
|
+
|
28
|
+
Note:
|
29
|
+
This module is part of the W&B Public API and provides methods to access
|
30
|
+
and manage projects. For creating new projects, use wandb.init()
|
31
|
+
with a new project name.
|
32
|
+
"""
|
33
|
+
|
34
|
+
from __future__ import annotations
|
35
|
+
|
36
|
+
from requests import HTTPError
|
37
|
+
from wandb_gql import gql
|
38
|
+
|
39
|
+
from wandb.apis import public
|
40
|
+
from wandb.apis.attrs import Attrs
|
41
|
+
from wandb.apis.normalize import normalize_exceptions
|
42
|
+
from wandb.apis.paginator import Paginator
|
43
|
+
from wandb.apis.public.api import RetryingClient
|
44
|
+
from wandb.apis.public.sweeps import Sweeps
|
45
|
+
from wandb.sdk.lib import ipython
|
46
|
+
|
47
|
+
PROJECT_FRAGMENT = """fragment ProjectFragment on Project {
|
48
|
+
id
|
49
|
+
name
|
50
|
+
entityName
|
51
|
+
createdAt
|
52
|
+
isBenchmark
|
53
|
+
}"""
|
54
|
+
|
55
|
+
|
56
|
+
class Projects(Paginator["Project"]):
|
57
|
+
"""An lazy iterator of `Project` objects.
|
58
|
+
|
59
|
+
An iterable interface to access projects created and saved by the entity.
|
60
|
+
|
61
|
+
Args:
|
62
|
+
client (`wandb.apis.internal.Api`): The API client instance to use.
|
63
|
+
entity (str): The entity name (username or team) to fetch projects for.
|
64
|
+
per_page (int): Number of projects to fetch per request (default is 50).
|
65
|
+
|
66
|
+
Example:
|
67
|
+
```python
|
68
|
+
from wandb.apis.public.api import Api
|
69
|
+
|
70
|
+
# Find projects that belong to this entity
|
71
|
+
projects = Api().projects(entity="entity")
|
72
|
+
|
73
|
+
# Iterate over files
|
74
|
+
for project in projects:
|
75
|
+
print(f"Project: {project.name}")
|
76
|
+
print(f"- URL: {project.url}")
|
77
|
+
print(f"- Created at: {project.created_at}")
|
78
|
+
print(f"- Is benchmark: {project.is_benchmark}")
|
79
|
+
```
|
80
|
+
"""
|
81
|
+
|
82
|
+
QUERY = gql(f"""#graphql
|
83
|
+
query Projects($entity: String, $cursor: String, $perPage: Int = 50) {{
|
84
|
+
models(entityName: $entity, after: $cursor, first: $perPage) {{
|
85
|
+
edges {{
|
86
|
+
node {{
|
87
|
+
...ProjectFragment
|
88
|
+
}}
|
89
|
+
cursor
|
90
|
+
}}
|
91
|
+
pageInfo {{
|
92
|
+
endCursor
|
93
|
+
hasNextPage
|
94
|
+
}}
|
95
|
+
}}
|
96
|
+
}}
|
97
|
+
{PROJECT_FRAGMENT}
|
98
|
+
""")
|
99
|
+
|
100
|
+
def __init__(
|
101
|
+
self,
|
102
|
+
client: RetryingClient,
|
103
|
+
entity: str,
|
104
|
+
per_page: int = 50,
|
105
|
+
) -> Projects:
|
106
|
+
"""An iterable collection of `Project` objects.
|
107
|
+
|
108
|
+
Args:
|
109
|
+
client: The API client used to query W&B.
|
110
|
+
entity: The entity which owns the projects.
|
111
|
+
per_page: The number of projects to fetch per request to the API.
|
112
|
+
"""
|
113
|
+
self.client = client
|
114
|
+
self.entity = entity
|
115
|
+
variables = {
|
116
|
+
"entity": self.entity,
|
117
|
+
}
|
118
|
+
super().__init__(client, variables, per_page)
|
119
|
+
|
120
|
+
@property
|
121
|
+
def length(self) -> None:
|
122
|
+
"""Returns the total number of projects.
|
123
|
+
|
124
|
+
Note: This property is not available for projects.
|
125
|
+
|
126
|
+
<!-- lazydoc-ignore: internal -->
|
127
|
+
"""
|
128
|
+
# For backwards compatibility, even though this isn't a SizedPaginator
|
129
|
+
return None
|
130
|
+
|
131
|
+
@property
|
132
|
+
def more(self):
|
133
|
+
"""Returns `True` if there are more projects to fetch. Returns
|
134
|
+
`False` if there are no more projects to fetch.
|
135
|
+
|
136
|
+
<!-- lazydoc-ignore: internal -->
|
137
|
+
"""
|
138
|
+
if self.last_response:
|
139
|
+
return self.last_response["models"]["pageInfo"]["hasNextPage"]
|
140
|
+
else:
|
141
|
+
return True
|
142
|
+
|
143
|
+
@property
|
144
|
+
def cursor(self):
|
145
|
+
"""Returns the cursor position for pagination of project results.
|
146
|
+
|
147
|
+
<!-- lazydoc-ignore: internal -->
|
148
|
+
"""
|
149
|
+
if self.last_response:
|
150
|
+
return self.last_response["models"]["edges"][-1]["cursor"]
|
151
|
+
else:
|
152
|
+
return None
|
153
|
+
|
154
|
+
def convert_objects(self):
|
155
|
+
"""Converts GraphQL edges to File objects.
|
156
|
+
|
157
|
+
<!-- lazydoc-ignore: internal -->
|
158
|
+
"""
|
159
|
+
return [
|
160
|
+
Project(self.client, self.entity, p["node"]["name"], p["node"])
|
161
|
+
for p in self.last_response["models"]["edges"]
|
162
|
+
]
|
163
|
+
|
164
|
+
def __repr__(self):
|
165
|
+
return f"<Projects {self.entity}>"
|
166
|
+
|
167
|
+
|
168
|
+
class Project(Attrs):
|
169
|
+
"""A project is a namespace for runs.
|
170
|
+
|
171
|
+
Args:
|
172
|
+
client: W&B API client instance.
|
173
|
+
name (str): The name of the project.
|
174
|
+
entity (str): The entity name that owns the project.
|
175
|
+
"""
|
176
|
+
|
177
|
+
QUERY = gql(f"""#graphql
|
178
|
+
query Project($project: String!, $entity: String!) {{
|
179
|
+
project(name: $project, entityName: $entity) {{
|
180
|
+
...ProjectFragment
|
181
|
+
}}
|
182
|
+
}}
|
183
|
+
{PROJECT_FRAGMENT}
|
184
|
+
""")
|
185
|
+
|
186
|
+
def __init__(
|
187
|
+
self,
|
188
|
+
client: RetryingClient,
|
189
|
+
entity: str,
|
190
|
+
project: str,
|
191
|
+
attrs: dict,
|
192
|
+
) -> Project:
|
193
|
+
"""A single project associated with an entity.
|
194
|
+
|
195
|
+
Args:
|
196
|
+
client: The API client used to query W&B.
|
197
|
+
entity: The entity which owns the project.
|
198
|
+
project: The name of the project to query.
|
199
|
+
attrs: The attributes of the project.
|
200
|
+
"""
|
201
|
+
super().__init__(dict(attrs))
|
202
|
+
self._is_loaded = bool(attrs)
|
203
|
+
self.client = client
|
204
|
+
self.name = project
|
205
|
+
self.entity = entity
|
206
|
+
|
207
|
+
def _load(self):
|
208
|
+
variable_values = {"project": self.name, "entity": self.entity}
|
209
|
+
try:
|
210
|
+
response = self.client.execute(self.QUERY, variable_values)
|
211
|
+
except HTTPError as e:
|
212
|
+
raise ValueError(f"Unable to fetch project ID: {variable_values!r}") from e
|
213
|
+
|
214
|
+
self._attrs = response["project"]
|
215
|
+
self._is_loaded = True
|
216
|
+
|
217
|
+
@property
|
218
|
+
def path(self):
|
219
|
+
"""Returns the path of the project. The path is a list containing the
|
220
|
+
entity and project name."""
|
221
|
+
return [self.entity, self.name]
|
222
|
+
|
223
|
+
@property
|
224
|
+
def url(self):
|
225
|
+
"""Returns the URL of the project."""
|
226
|
+
return self.client.app_url + "/".join(self.path + ["workspace"])
|
227
|
+
|
228
|
+
def to_html(self, height=420, hidden=False):
|
229
|
+
"""Generate HTML containing an iframe displaying this project.
|
230
|
+
|
231
|
+
<!-- lazydoc-ignore: internal -->
|
232
|
+
"""
|
233
|
+
url = self.url + "?jupyter=true"
|
234
|
+
style = f"border:none;width:100%;height:{height}px;"
|
235
|
+
prefix = ""
|
236
|
+
if hidden:
|
237
|
+
style += "display:none;"
|
238
|
+
prefix = ipython.toggle_button("project")
|
239
|
+
return prefix + f"<iframe src={url!r} style={style!r}></iframe>"
|
240
|
+
|
241
|
+
def _repr_html_(self) -> str:
|
242
|
+
return self.to_html()
|
243
|
+
|
244
|
+
def __repr__(self):
|
245
|
+
return "<Project {}>".format("/".join(self.path))
|
246
|
+
|
247
|
+
@normalize_exceptions
|
248
|
+
def artifacts_types(self, per_page=50):
|
249
|
+
"""Returns all artifact types associated with this project."""
|
250
|
+
return public.ArtifactTypes(self.client, self.entity, self.name)
|
251
|
+
|
252
|
+
@normalize_exceptions
|
253
|
+
def sweeps(self, per_page=50):
|
254
|
+
"""Return a paginated collection of sweeps in this project.
|
255
|
+
|
256
|
+
Args:
|
257
|
+
per_page: The number of sweeps to fetch per request to the API.
|
258
|
+
|
259
|
+
Returns:
|
260
|
+
A `Sweeps` object, which is an iterable collection of `Sweep` objects.
|
261
|
+
"""
|
262
|
+
return Sweeps(self.client, self.entity, self.name, per_page=per_page)
|
263
|
+
|
264
|
+
@property
|
265
|
+
def id(self) -> str:
|
266
|
+
if not self._is_loaded:
|
267
|
+
self._load()
|
268
|
+
|
269
|
+
if "id" not in self._attrs:
|
270
|
+
raise ValueError(f"Project {self.name} not found")
|
271
|
+
|
272
|
+
return self._attrs["id"]
|
273
|
+
|
274
|
+
def __getattr__(self, name: str):
|
275
|
+
if not self._is_loaded:
|
276
|
+
self._load()
|
277
|
+
|
278
|
+
return super().__getattr__(name)
|
@@ -0,0 +1,179 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
|
4
|
+
class QueryGenerator:
|
5
|
+
"""QueryGenerator is a helper object to write filters for runs.
|
6
|
+
|
7
|
+
<!-- lazydoc-ignore-class: internal -->
|
8
|
+
"""
|
9
|
+
|
10
|
+
INDIVIDUAL_OP_TO_MONGO = {
|
11
|
+
"!=": "$ne",
|
12
|
+
">": "$gt",
|
13
|
+
">=": "$gte",
|
14
|
+
"<": "$lt",
|
15
|
+
"<=": "$lte",
|
16
|
+
"IN": "$in",
|
17
|
+
"NIN": "$nin",
|
18
|
+
"REGEX": "$regex",
|
19
|
+
}
|
20
|
+
MONGO_TO_INDIVIDUAL_OP = {v: k for k, v in INDIVIDUAL_OP_TO_MONGO.items()}
|
21
|
+
|
22
|
+
GROUP_OP_TO_MONGO = {"AND": "$and", "OR": "$or"}
|
23
|
+
MONGO_TO_GROUP_OP = {v: k for k, v in GROUP_OP_TO_MONGO.items()}
|
24
|
+
|
25
|
+
def __init__(self):
|
26
|
+
pass
|
27
|
+
|
28
|
+
@classmethod
|
29
|
+
def format_order_key(cls, key: str):
|
30
|
+
"""Format a key for sorting."""
|
31
|
+
if key.startswith(("+", "-")):
|
32
|
+
direction = key[0]
|
33
|
+
key = key[1:]
|
34
|
+
else:
|
35
|
+
direction = "-"
|
36
|
+
parts = key.split(".")
|
37
|
+
if len(parts) == 1:
|
38
|
+
# Assume the user meant summary_metrics if not a run column
|
39
|
+
if parts[0] not in ["createdAt", "updatedAt", "name", "sweep"]:
|
40
|
+
return direction + "summary_metrics." + parts[0]
|
41
|
+
# Assume summary metrics if prefix isn't known
|
42
|
+
elif parts[0] not in ["config", "summary_metrics", "tags"]:
|
43
|
+
return direction + ".".join(["summary_metrics"] + parts)
|
44
|
+
else:
|
45
|
+
return direction + ".".join(parts)
|
46
|
+
|
47
|
+
def _is_group(self, op):
|
48
|
+
return op.get("filters") is not None
|
49
|
+
|
50
|
+
def _is_individual(self, op):
|
51
|
+
return op.get("key") is not None
|
52
|
+
|
53
|
+
def _to_mongo_op_value(self, op, value):
|
54
|
+
if op == "=":
|
55
|
+
return value
|
56
|
+
else:
|
57
|
+
return {self.INDIVIDUAL_OP_TO_MONGO[op]: value}
|
58
|
+
|
59
|
+
def key_to_server_path(self, key):
|
60
|
+
"""Convert a key dictionary to the corresponding server path string."""
|
61
|
+
if key["section"] == "config":
|
62
|
+
return "config." + key["name"]
|
63
|
+
elif key["section"] == "summary":
|
64
|
+
return "summary_metrics." + key["name"]
|
65
|
+
elif key["section"] == "keys_info":
|
66
|
+
return "keys_info.keys." + key["name"]
|
67
|
+
elif key["section"] == "run":
|
68
|
+
return key["name"]
|
69
|
+
elif key["section"] == "tags":
|
70
|
+
return "tags." + key["name"]
|
71
|
+
raise ValueError("Invalid key: {}".format(key))
|
72
|
+
|
73
|
+
def server_path_to_key(self, path):
|
74
|
+
"""Convert a server path string to the corresponding key dictionary."""
|
75
|
+
if path.startswith("config."):
|
76
|
+
return {"section": "config", "name": path.split("config.", 1)[1]}
|
77
|
+
elif path.startswith("summary_metrics."):
|
78
|
+
return {"section": "summary", "name": path.split("summary_metrics.", 1)[1]}
|
79
|
+
elif path.startswith("keys_info.keys."):
|
80
|
+
return {"section": "keys_info", "name": path.split("keys_info.keys.", 1)[1]}
|
81
|
+
elif path.startswith("tags."):
|
82
|
+
return {"section": "tags", "name": path.split("tags.", 1)[1]}
|
83
|
+
else:
|
84
|
+
return {"section": "run", "name": path}
|
85
|
+
|
86
|
+
def keys_to_order(self, keys):
|
87
|
+
"""Convert a list of key dictionaries to an order string."""
|
88
|
+
orders = []
|
89
|
+
for key in keys["keys"]:
|
90
|
+
order = self.key_to_server_path(key["key"])
|
91
|
+
if key.get("ascending"):
|
92
|
+
order = "+" + order
|
93
|
+
else:
|
94
|
+
order = "-" + order
|
95
|
+
orders.append(order)
|
96
|
+
# return ",".join(orders)
|
97
|
+
return orders
|
98
|
+
|
99
|
+
def order_to_keys(self, order):
|
100
|
+
"""Convert an order string to a list of key dictionaries."""
|
101
|
+
keys = []
|
102
|
+
for k in order: # orderstr.split(","):
|
103
|
+
name = k[1:]
|
104
|
+
if k[0] == "+":
|
105
|
+
ascending = True
|
106
|
+
elif k[0] == "-":
|
107
|
+
ascending = False
|
108
|
+
else:
|
109
|
+
raise Exception("you must sort by ascending(+) or descending(-)")
|
110
|
+
|
111
|
+
key = {"key": {"section": "run", "name": name}, "ascending": ascending}
|
112
|
+
keys.append(key)
|
113
|
+
|
114
|
+
return {"keys": keys}
|
115
|
+
|
116
|
+
def _to_mongo_individual(self, filter):
|
117
|
+
if filter["key"]["name"] == "":
|
118
|
+
return None
|
119
|
+
|
120
|
+
if filter.get("value") is None and filter["op"] != "=" and filter["op"] != "!=":
|
121
|
+
return None
|
122
|
+
|
123
|
+
if filter.get("disabled") is not None and filter["disabled"]:
|
124
|
+
return None
|
125
|
+
|
126
|
+
if filter["key"]["section"] == "tags":
|
127
|
+
if filter["op"] == "IN":
|
128
|
+
return {"tags": {"$in": filter["value"]}}
|
129
|
+
if filter["value"] is False:
|
130
|
+
return {
|
131
|
+
"$or": [{"tags": None}, {"tags": {"$ne": filter["key"]["name"]}}]
|
132
|
+
}
|
133
|
+
else:
|
134
|
+
return {"tags": filter["key"]["name"]}
|
135
|
+
path = self.key_to_server_path(filter["key"])
|
136
|
+
if path is None:
|
137
|
+
return path
|
138
|
+
return {path: self._to_mongo_op_value(filter["op"], filter["value"])}
|
139
|
+
|
140
|
+
def filter_to_mongo(self, filter):
|
141
|
+
"""Returns dictionary with filter format converted to MongoDB filter."""
|
142
|
+
if self._is_individual(filter):
|
143
|
+
return self._to_mongo_individual(filter)
|
144
|
+
elif self._is_group(filter):
|
145
|
+
return {
|
146
|
+
self.GROUP_OP_TO_MONGO[filter["op"]]: [
|
147
|
+
self.filter_to_mongo(f) for f in filter["filters"]
|
148
|
+
]
|
149
|
+
}
|
150
|
+
|
151
|
+
def mongo_to_filter(self, filter):
|
152
|
+
"""Returns dictionary with MongoDB filter converted to filter format."""
|
153
|
+
# Returns {"op": "OR", "filters": [{"op": "AND", "filters": []}]}
|
154
|
+
if filter is None:
|
155
|
+
return None # this covers the case where self.filter_to_mongo returns None.
|
156
|
+
|
157
|
+
group_op = None
|
158
|
+
for key in filter.keys():
|
159
|
+
# if self.MONGO_TO_GROUP_OP[key]:
|
160
|
+
if key in self.MONGO_TO_GROUP_OP:
|
161
|
+
group_op = key
|
162
|
+
break
|
163
|
+
if group_op is not None:
|
164
|
+
return {
|
165
|
+
"op": self.MONGO_TO_GROUP_OP[group_op],
|
166
|
+
"filters": [self.mongo_to_filter(f) for f in filter[group_op]],
|
167
|
+
}
|
168
|
+
else:
|
169
|
+
for k, v in filter.items():
|
170
|
+
if isinstance(v, dict):
|
171
|
+
# TODO: do we always have one key in this case?
|
172
|
+
op = next(iter(v.keys()))
|
173
|
+
return {
|
174
|
+
"key": self.server_path_to_key(k),
|
175
|
+
"op": self.MONGO_TO_INDIVIDUAL_OP[op],
|
176
|
+
"value": v[op],
|
177
|
+
}
|
178
|
+
else:
|
179
|
+
return {"key": self.server_path_to_key(k), "op": "=", "value": v}
|
@@ -0,0 +1,176 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from itertools import chain
|
4
|
+
from typing import (
|
5
|
+
Any,
|
6
|
+
Iterable,
|
7
|
+
Iterator,
|
8
|
+
MutableSequence,
|
9
|
+
Sequence,
|
10
|
+
TypeVar,
|
11
|
+
final,
|
12
|
+
overload,
|
13
|
+
)
|
14
|
+
|
15
|
+
from wandb._strutils import nameof
|
16
|
+
|
17
|
+
T = TypeVar("T")
|
18
|
+
|
19
|
+
|
20
|
+
@final
|
21
|
+
class FreezableList(MutableSequence[T]):
|
22
|
+
"""A list-like container type that only allows adding new items.
|
23
|
+
|
24
|
+
It tracks "saved" (immutable) and "draft" (mutable) items.
|
25
|
+
Items can be added, inserted, and removed while in draft state, but once frozen,
|
26
|
+
they become immutable. Unlike a set, duplicate items are allowed in the draft
|
27
|
+
state but duplicates already present in the saved state cannot be added.
|
28
|
+
Any initial items passed to the constructor are saved.
|
29
|
+
"""
|
30
|
+
|
31
|
+
def __init__(self, iterable: Iterable[T] | None = None, /) -> None:
|
32
|
+
self._frozen: tuple[T, ...] = tuple(iterable or ())
|
33
|
+
self._draft: list[T] = []
|
34
|
+
|
35
|
+
def append(self, value: T) -> None:
|
36
|
+
"""Append an item to the draft list. No duplicates are allowed."""
|
37
|
+
if (value in self._frozen) or (value in self._draft):
|
38
|
+
return
|
39
|
+
self._draft.append(value)
|
40
|
+
|
41
|
+
def remove(self, value: T) -> None:
|
42
|
+
"""Remove the first occurrence of value from the draft list."""
|
43
|
+
if value in self._frozen:
|
44
|
+
raise ValueError(f"Cannot remove item from frozen list: {value!r}")
|
45
|
+
self._draft.remove(value)
|
46
|
+
|
47
|
+
def freeze(self) -> None:
|
48
|
+
"""Freeze any draft items by adding them to the saved tuple."""
|
49
|
+
# Filter out duplicates already in saved before extending
|
50
|
+
new_items = tuple(item for item in self._draft if item not in self._frozen)
|
51
|
+
self._frozen = self._frozen + new_items
|
52
|
+
self._draft.clear()
|
53
|
+
|
54
|
+
def __eq__(self, value: object) -> bool:
|
55
|
+
if not isinstance(value, Sequence):
|
56
|
+
return NotImplemented
|
57
|
+
return list(self) == list(value)
|
58
|
+
|
59
|
+
def __contains__(self, value: Any) -> bool:
|
60
|
+
return value in self._frozen or value in self._draft
|
61
|
+
|
62
|
+
def __len__(self) -> int:
|
63
|
+
return len(self._frozen) + len(self._draft)
|
64
|
+
|
65
|
+
def __iter__(self) -> Iterator[T]:
|
66
|
+
return iter(chain(self._frozen, self._draft))
|
67
|
+
|
68
|
+
@overload
|
69
|
+
def __getitem__(self, index: int) -> T: ...
|
70
|
+
|
71
|
+
@overload
|
72
|
+
def __getitem__(self, index: slice) -> Sequence[T]: ...
|
73
|
+
|
74
|
+
def __getitem__(self, index: int | slice) -> T | Sequence[T]:
|
75
|
+
return [*self._frozen, *self._draft][index]
|
76
|
+
|
77
|
+
@overload
|
78
|
+
def __setitem__(self, index: int, value: T) -> None: ...
|
79
|
+
|
80
|
+
@overload
|
81
|
+
def __setitem__(self, index: slice, value: Iterable[T]) -> None: ...
|
82
|
+
|
83
|
+
def __setitem__(self, index: int | slice, value: T | Iterable[T]) -> None:
|
84
|
+
if isinstance(index, slice):
|
85
|
+
# Setting slices might affect saved items, disallow for simplicity
|
86
|
+
raise TypeError(f"{nameof(type(self))!r} does not support slice assignment")
|
87
|
+
else:
|
88
|
+
if value in self._frozen or value in self._draft:
|
89
|
+
return
|
90
|
+
|
91
|
+
# The frozen items are sequentially first and protected from changes
|
92
|
+
len_frozen = len(self._frozen)
|
93
|
+
size = len(self)
|
94
|
+
|
95
|
+
if (index >= size) or (index < -size):
|
96
|
+
raise IndexError("Index out of range")
|
97
|
+
|
98
|
+
draft_index = (index % size) - len_frozen
|
99
|
+
if draft_index < 0:
|
100
|
+
raise ValueError(f"Cannot assign to saved item at index {index!r}")
|
101
|
+
self._draft[draft_index] = value
|
102
|
+
|
103
|
+
@overload
|
104
|
+
def __delitem__(self, index: int) -> None: ...
|
105
|
+
|
106
|
+
@overload
|
107
|
+
def __delitem__(self, index: slice) -> None: ...
|
108
|
+
|
109
|
+
def __delitem__(self, index: int | slice) -> None:
|
110
|
+
if isinstance(index, slice):
|
111
|
+
raise TypeError(f"{nameof(type(self))!r} does not support slice deletion")
|
112
|
+
else:
|
113
|
+
# The frozen items are sequentially first and protected from changes
|
114
|
+
len_frozen = len(self._frozen)
|
115
|
+
size = len(self)
|
116
|
+
|
117
|
+
if (index >= size) or (index < -size):
|
118
|
+
raise IndexError("Index out of range")
|
119
|
+
|
120
|
+
draft_index = (index % size) - len_frozen
|
121
|
+
if draft_index < 0:
|
122
|
+
raise ValueError(f"Cannot delete saved item at index {index!r}")
|
123
|
+
del self._draft[draft_index]
|
124
|
+
|
125
|
+
def insert(self, index: int, value: T) -> None:
|
126
|
+
"""Insert item before index.
|
127
|
+
|
128
|
+
Insertion is only allowed at indices corresponding to the draft portion
|
129
|
+
of the list (i.e., index >= len(frozen_items)). Negative indices are
|
130
|
+
interpreted relative to the combined length of frozen and draft items.
|
131
|
+
"""
|
132
|
+
if value in self._frozen or value in self._draft:
|
133
|
+
# Silently ignore duplicates, similar to append
|
134
|
+
return
|
135
|
+
|
136
|
+
# The frozen items are sequentially first and protected from changes
|
137
|
+
len_frozen = len(self._frozen)
|
138
|
+
size = len(self)
|
139
|
+
|
140
|
+
# Follow the behavior of `list.insert()` when the index is out of bounds.
|
141
|
+
# - negative out-of-bounds index: prepend. Will only work if the frozen items are empty.
|
142
|
+
if index < -size and not self._frozen:
|
143
|
+
return self._draft.insert(0, value)
|
144
|
+
|
145
|
+
# - positive out-of-bounds index: append.
|
146
|
+
if index >= size:
|
147
|
+
return self._draft.append(value)
|
148
|
+
|
149
|
+
# - in-bounds index: insert only if into the draft portion.
|
150
|
+
draft_index = (index % size) - len_frozen
|
151
|
+
if draft_index < 0:
|
152
|
+
raise IndexError(
|
153
|
+
f"Cannot insert into the frozen list (index < {len_frozen})"
|
154
|
+
)
|
155
|
+
return self._draft.insert(draft_index, value)
|
156
|
+
|
157
|
+
def __repr__(self) -> str:
|
158
|
+
return f"{nameof(type(self))}(frozen={list(self._frozen)!r}, draft={list(self._draft)!r})"
|
159
|
+
|
160
|
+
@property
|
161
|
+
def draft(self) -> tuple[T, ...]:
|
162
|
+
"""A read-only, tuple copy of the current draft items."""
|
163
|
+
return tuple(self._draft)
|
164
|
+
|
165
|
+
|
166
|
+
class AddOnlyArtifactTypesList(FreezableList[str]):
|
167
|
+
def remove(self, value: str) -> None:
|
168
|
+
try:
|
169
|
+
super().remove(value)
|
170
|
+
except ValueError:
|
171
|
+
raise ValueError(
|
172
|
+
f"Cannot remove artifact type: {value!r} that has been saved to the registry"
|
173
|
+
)
|
174
|
+
|
175
|
+
def __repr__(self) -> str:
|
176
|
+
return f"{nameof(type(self))}(saved={list(self._frozen)!r}, draft={list(self._draft)!r})"
|