wandb 0.18.2__py3-none-musllinux_1_2_x86_64.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 +89 -0
- wandb/__init__.py +245 -0
- wandb/__init__.pyi +1139 -0
- wandb/__main__.py +3 -0
- wandb/_globals.py +19 -0
- wandb/agents/__init__.py +0 -0
- wandb/agents/pyagent.py +363 -0
- wandb/analytics/__init__.py +3 -0
- wandb/analytics/sentry.py +266 -0
- wandb/apis/__init__.py +48 -0
- wandb/apis/attrs.py +40 -0
- wandb/apis/importers/__init__.py +1 -0
- wandb/apis/importers/internals/internal.py +385 -0
- wandb/apis/importers/internals/protocols.py +99 -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 +1603 -0
- wandb/apis/internal.py +232 -0
- wandb/apis/normalize.py +89 -0
- wandb/apis/paginator.py +81 -0
- wandb/apis/public/__init__.py +34 -0
- wandb/apis/public/api.py +1305 -0
- wandb/apis/public/artifacts.py +1090 -0
- wandb/apis/public/const.py +4 -0
- wandb/apis/public/files.py +195 -0
- wandb/apis/public/history.py +149 -0
- wandb/apis/public/jobs.py +659 -0
- wandb/apis/public/projects.py +154 -0
- wandb/apis/public/query_generator.py +166 -0
- wandb/apis/public/reports.py +469 -0
- wandb/apis/public/runs.py +914 -0
- wandb/apis/public/sweeps.py +240 -0
- wandb/apis/public/teams.py +198 -0
- wandb/apis/public/users.py +136 -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/beta/workflows.py +288 -0
- wandb/bin/nvidia_gpu_stats +0 -0
- wandb/bin/wandb-core +0 -0
- wandb/cli/__init__.py +0 -0
- wandb/cli/cli.py +3004 -0
- wandb/data_types.py +63 -0
- wandb/docker/__init__.py +342 -0
- wandb/docker/auth.py +436 -0
- wandb/docker/wandb-entrypoint.sh +33 -0
- wandb/docker/www_authenticate.py +94 -0
- wandb/env.py +514 -0
- wandb/errors/__init__.py +17 -0
- wandb/errors/errors.py +37 -0
- wandb/errors/term.py +103 -0
- wandb/errors/util.py +57 -0
- wandb/errors/warnings.py +2 -0
- wandb/filesync/__init__.py +0 -0
- wandb/filesync/dir_watcher.py +403 -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 +290 -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 +178 -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 +882 -0
- wandb/integration/diffusers/resolvers/utils.py +102 -0
- wandb/integration/fastai/__init__.py +249 -0
- wandb/integration/gym/__init__.py +105 -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 +136 -0
- wandb/integration/keras/callbacks/model_checkpoint.py +195 -0
- wandb/integration/keras/callbacks/tables_builder.py +226 -0
- wandb/integration/keras/keras.py +1091 -0
- wandb/integration/kfp/__init__.py +6 -0
- wandb/integration/kfp/helpers.py +28 -0
- wandb/integration/kfp/kfp_patch.py +324 -0
- wandb/integration/kfp/wandb_logging.py +182 -0
- wandb/integration/langchain/__init__.py +3 -0
- wandb/integration/langchain/wandb_tracer.py +48 -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 +762 -0
- wandb/integration/magic.py +556 -0
- wandb/integration/metaflow/__init__.py +3 -0
- wandb/integration/metaflow/metaflow.py +383 -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 +299 -0
- wandb/integration/sacred/__init__.py +117 -0
- wandb/integration/sagemaker/__init__.py +12 -0
- wandb/integration/sagemaker/auth.py +28 -0
- wandb/integration/sagemaker/config.py +49 -0
- wandb/integration/sagemaker/files.py +3 -0
- wandb/integration/sagemaker/resources.py +34 -0
- wandb/integration/sb3/__init__.py +3 -0
- wandb/integration/sb3/sb3.py +153 -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 +183 -0
- wandb/integration/tensorboard/__init__.py +10 -0
- wandb/integration/tensorboard/log.py +355 -0
- wandb/integration/tensorboard/monkeypatch.py +185 -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 +208 -0
- wandb/integration/ultralytics/callback.py +524 -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/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 +515 -0
- wandb/magic.py +3 -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 +173 -0
- wandb/old/summary.py +440 -0
- wandb/plot/__init__.py +19 -0
- wandb/plot/bar.py +45 -0
- wandb/plot/confusion_matrix.py +100 -0
- wandb/plot/histogram.py +39 -0
- wandb/plot/line.py +43 -0
- wandb/plot/line_series.py +88 -0
- wandb/plot/pr_curve.py +136 -0
- wandb/plot/roc_curve.py +118 -0
- wandb/plot/scatter.py +32 -0
- wandb/plot/utils.py +183 -0
- wandb/plot/viz.py +123 -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 +1608 -0
- wandb/proto/v3/wandb_server_pb2.py +208 -0
- wandb/proto/v3/wandb_settings_pb2.py +112 -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 +360 -0
- wandb/proto/v4/wandb_server_pb2.py +63 -0
- wandb/proto/v4/wandb_settings_pb2.py +45 -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 +361 -0
- wandb/proto/v5/wandb_server_pb2.py +64 -0
- wandb/proto/v5/wandb_settings_pb2.py +46 -0
- wandb/proto/v5/wandb_telemetry_pb2.py +42 -0
- wandb/proto/wandb_base_pb2.py +10 -0
- wandb/proto/wandb_deprecated.py +53 -0
- wandb/proto/wandb_generate_deprecated.py +34 -0
- wandb/proto/wandb_generate_proto.py +49 -0
- wandb/proto/wandb_internal_pb2.py +16 -0
- wandb/proto/wandb_server_pb2.py +10 -0
- wandb/proto/wandb_settings_pb2.py +10 -0
- wandb/proto/wandb_telemetry_pb2.py +10 -0
- wandb/py.typed +0 -0
- wandb/sdk/__init__.py +37 -0
- wandb/sdk/artifacts/__init__.py +0 -0
- wandb/sdk/artifacts/_validators.py +90 -0
- wandb/sdk/artifacts/artifact.py +2389 -0
- wandb/sdk/artifacts/artifact_download_logger.py +43 -0
- wandb/sdk/artifacts/artifact_file_cache.py +253 -0
- wandb/sdk/artifacts/artifact_instance_cache.py +17 -0
- wandb/sdk/artifacts/artifact_manifest.py +74 -0
- wandb/sdk/artifacts/artifact_manifest_entry.py +249 -0
- wandb/sdk/artifacts/artifact_manifests/__init__.py +0 -0
- wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +92 -0
- wandb/sdk/artifacts/artifact_saver.py +269 -0
- wandb/sdk/artifacts/artifact_state.py +11 -0
- wandb/sdk/artifacts/artifact_ttl.py +7 -0
- wandb/sdk/artifacts/exceptions.py +57 -0
- wandb/sdk/artifacts/staging.py +25 -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 +208 -0
- wandb/sdk/artifacts/storage_handlers/gcs_handler.py +228 -0
- wandb/sdk/artifacts/storage_handlers/http_handler.py +114 -0
- wandb/sdk/artifacts/storage_handlers/local_file_handler.py +141 -0
- wandb/sdk/artifacts/storage_handlers/multi_handler.py +56 -0
- wandb/sdk/artifacts/storage_handlers/s3_handler.py +300 -0
- wandb/sdk/artifacts/storage_handlers/tracking_handler.py +72 -0
- wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +135 -0
- wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +74 -0
- wandb/sdk/artifacts/storage_layout.py +6 -0
- wandb/sdk/artifacts/storage_policies/__init__.py +4 -0
- wandb/sdk/artifacts/storage_policies/register.py +1 -0
- wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +378 -0
- wandb/sdk/artifacts/storage_policy.py +72 -0
- wandb/sdk/backend/__init__.py +0 -0
- wandb/sdk/backend/backend.py +222 -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 +165 -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 +315 -0
- wandb/sdk/data_types/base_types/wb_value.py +272 -0
- wandb/sdk/data_types/bokeh.py +70 -0
- wandb/sdk/data_types/graph.py +405 -0
- wandb/sdk/data_types/helper_types/__init__.py +0 -0
- wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +295 -0
- wandb/sdk/data_types/helper_types/classes.py +159 -0
- wandb/sdk/data_types/helper_types/image_mask.py +235 -0
- wandb/sdk/data_types/histogram.py +96 -0
- wandb/sdk/data_types/html.py +115 -0
- wandb/sdk/data_types/image.py +845 -0
- wandb/sdk/data_types/molecule.py +241 -0
- wandb/sdk/data_types/object_3d.py +474 -0
- wandb/sdk/data_types/plotly.py +82 -0
- wandb/sdk/data_types/saved_model.py +446 -0
- wandb/sdk/data_types/table.py +1204 -0
- wandb/sdk/data_types/trace_tree.py +438 -0
- wandb/sdk/data_types/utils.py +229 -0
- wandb/sdk/data_types/video.py +247 -0
- wandb/sdk/integration_utils/__init__.py +0 -0
- wandb/sdk/integration_utils/auto_logging.py +239 -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 +972 -0
- wandb/sdk/interface/interface_queue.py +59 -0
- wandb/sdk/interface/interface_relay.py +53 -0
- wandb/sdk/interface/interface_shared.py +537 -0
- wandb/sdk/interface/interface_sock.py +61 -0
- wandb/sdk/interface/message_future.py +27 -0
- wandb/sdk/interface/message_future_poll.py +50 -0
- wandb/sdk/interface/router.py +118 -0
- wandb/sdk/interface/router_queue.py +44 -0
- wandb/sdk/interface/router_relay.py +39 -0
- wandb/sdk/interface/router_sock.py +36 -0
- wandb/sdk/interface/summary_record.py +67 -0
- wandb/sdk/internal/__init__.py +0 -0
- wandb/sdk/internal/context.py +89 -0
- wandb/sdk/internal/datastore.py +297 -0
- wandb/sdk/internal/file_pusher.py +181 -0
- wandb/sdk/internal/file_stream.py +695 -0
- wandb/sdk/internal/flow_control.py +263 -0
- wandb/sdk/internal/handler.py +901 -0
- wandb/sdk/internal/internal.py +417 -0
- wandb/sdk/internal/internal_api.py +4358 -0
- wandb/sdk/internal/internal_util.py +100 -0
- wandb/sdk/internal/job_builder.py +629 -0
- wandb/sdk/internal/profiler.py +78 -0
- wandb/sdk/internal/progress.py +83 -0
- wandb/sdk/internal/run.py +25 -0
- wandb/sdk/internal/sample.py +70 -0
- wandb/sdk/internal/sender.py +1686 -0
- wandb/sdk/internal/sender_config.py +197 -0
- wandb/sdk/internal/settings_static.py +90 -0
- wandb/sdk/internal/system/__init__.py +0 -0
- wandb/sdk/internal/system/assets/__init__.py +27 -0
- wandb/sdk/internal/system/assets/aggregators.py +37 -0
- wandb/sdk/internal/system/assets/asset_registry.py +20 -0
- wandb/sdk/internal/system/assets/cpu.py +163 -0
- wandb/sdk/internal/system/assets/disk.py +210 -0
- wandb/sdk/internal/system/assets/gpu.py +416 -0
- wandb/sdk/internal/system/assets/gpu_amd.py +239 -0
- wandb/sdk/internal/system/assets/gpu_apple.py +177 -0
- wandb/sdk/internal/system/assets/interfaces.py +207 -0
- wandb/sdk/internal/system/assets/ipu.py +177 -0
- wandb/sdk/internal/system/assets/memory.py +166 -0
- wandb/sdk/internal/system/assets/network.py +125 -0
- wandb/sdk/internal/system/assets/open_metrics.py +299 -0
- wandb/sdk/internal/system/assets/tpu.py +154 -0
- wandb/sdk/internal/system/assets/trainium.py +399 -0
- wandb/sdk/internal/system/env_probe_helpers.py +13 -0
- wandb/sdk/internal/system/system_info.py +249 -0
- wandb/sdk/internal/system/system_monitor.py +229 -0
- wandb/sdk/internal/tb_watcher.py +518 -0
- wandb/sdk/internal/thread_local_settings.py +18 -0
- wandb/sdk/internal/writer.py +206 -0
- wandb/sdk/launch/__init__.py +14 -0
- wandb/sdk/launch/_launch.py +330 -0
- wandb/sdk/launch/_launch_add.py +255 -0
- wandb/sdk/launch/_project_spec.py +566 -0
- wandb/sdk/launch/agent/__init__.py +5 -0
- wandb/sdk/launch/agent/agent.py +924 -0
- wandb/sdk/launch/agent/config.py +296 -0
- wandb/sdk/launch/agent/job_status_tracker.py +53 -0
- wandb/sdk/launch/agent/run_queue_item_file_saver.py +45 -0
- wandb/sdk/launch/builder/__init__.py +0 -0
- wandb/sdk/launch/builder/abstract.py +156 -0
- wandb/sdk/launch/builder/build.py +297 -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 +528 -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 +335 -0
- wandb/sdk/launch/environment/local_environment.py +66 -0
- wandb/sdk/launch/errors.py +19 -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 +39 -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 +67 -0
- wandb/sdk/launch/runner/__init__.py +0 -0
- wandb/sdk/launch/runner/abstract.py +195 -0
- wandb/sdk/launch/runner/kubernetes_monitor.py +474 -0
- wandb/sdk/launch/runner/kubernetes_runner.py +963 -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 +426 -0
- wandb/sdk/launch/runner/vertex_runner.py +230 -0
- wandb/sdk/launch/sweeps/__init__.py +39 -0
- wandb/sdk/launch/sweeps/scheduler.py +742 -0
- wandb/sdk/launch/sweeps/scheduler_sweep.py +91 -0
- wandb/sdk/launch/sweeps/utils.py +316 -0
- wandb/sdk/launch/utils.py +746 -0
- wandb/sdk/launch/wandb_reference.py +138 -0
- wandb/sdk/lib/__init__.py +5 -0
- wandb/sdk/lib/_settings_toposort_generate.py +159 -0
- wandb/sdk/lib/_settings_toposort_generated.py +250 -0
- wandb/sdk/lib/_wburls_generate.py +25 -0
- wandb/sdk/lib/_wburls_generated.py +22 -0
- wandb/sdk/lib/apikey.py +273 -0
- wandb/sdk/lib/capped_dict.py +26 -0
- wandb/sdk/lib/config_util.py +101 -0
- wandb/sdk/lib/credentials.py +141 -0
- wandb/sdk/lib/deprecate.py +42 -0
- wandb/sdk/lib/disabled.py +29 -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 +174 -0
- wandb/sdk/lib/gitlib.py +239 -0
- wandb/sdk/lib/gql_request.py +65 -0
- wandb/sdk/lib/handler_util.py +21 -0
- wandb/sdk/lib/hashutil.py +84 -0
- wandb/sdk/lib/import_hooks.py +275 -0
- wandb/sdk/lib/ipython.py +146 -0
- wandb/sdk/lib/json_util.py +80 -0
- wandb/sdk/lib/lazyloader.py +63 -0
- wandb/sdk/lib/mailbox.py +460 -0
- wandb/sdk/lib/module.py +69 -0
- wandb/sdk/lib/paths.py +106 -0
- wandb/sdk/lib/preinit.py +42 -0
- wandb/sdk/lib/printer.py +313 -0
- wandb/sdk/lib/proto_util.py +90 -0
- wandb/sdk/lib/redirect.py +845 -0
- wandb/sdk/lib/reporting.py +99 -0
- wandb/sdk/lib/retry.py +289 -0
- wandb/sdk/lib/run_moment.py +78 -0
- wandb/sdk/lib/runid.py +12 -0
- wandb/sdk/lib/server.py +52 -0
- wandb/sdk/lib/service_connection.py +216 -0
- wandb/sdk/lib/service_token.py +94 -0
- wandb/sdk/lib/sock_client.py +295 -0
- wandb/sdk/lib/sparkline.py +45 -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/tracelog.py +255 -0
- wandb/sdk/lib/wburls.py +46 -0
- wandb/sdk/service/__init__.py +0 -0
- wandb/sdk/service/_startup_debug.py +22 -0
- wandb/sdk/service/port_file.py +53 -0
- wandb/sdk/service/server.py +116 -0
- wandb/sdk/service/server_sock.py +276 -0
- wandb/sdk/service/service.py +242 -0
- wandb/sdk/service/streams.py +417 -0
- wandb/sdk/verify/__init__.py +0 -0
- wandb/sdk/verify/verify.py +501 -0
- wandb/sdk/wandb_alerts.py +12 -0
- wandb/sdk/wandb_config.py +322 -0
- wandb/sdk/wandb_helper.py +54 -0
- wandb/sdk/wandb_init.py +1266 -0
- wandb/sdk/wandb_login.py +349 -0
- wandb/sdk/wandb_metric.py +110 -0
- wandb/sdk/wandb_require.py +97 -0
- wandb/sdk/wandb_require_helpers.py +44 -0
- wandb/sdk/wandb_run.py +4236 -0
- wandb/sdk/wandb_settings.py +2001 -0
- wandb/sdk/wandb_setup.py +409 -0
- wandb/sdk/wandb_summary.py +150 -0
- wandb/sdk/wandb_sweep.py +119 -0
- wandb/sdk/wandb_sync.py +81 -0
- wandb/sdk/wandb_watch.py +144 -0
- wandb/sklearn.py +35 -0
- wandb/sync/__init__.py +3 -0
- wandb/sync/sync.py +443 -0
- wandb/trigger.py +29 -0
- wandb/util.py +1956 -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/pynvml/__init__.py +0 -0
- wandb/vendor/pynvml/pynvml.py +4779 -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 +588 -0
- wandb/wandb_controller.py +721 -0
- wandb/wandb_run.py +9 -0
- wandb-0.18.2.dist-info/METADATA +213 -0
- wandb-0.18.2.dist-info/RECORD +827 -0
- wandb-0.18.2.dist-info/WHEEL +5 -0
- wandb-0.18.2.dist-info/entry_points.txt +3 -0
- wandb-0.18.2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,311 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
from ..error import GraphQLError
|
3
|
+
from ..language import ast
|
4
|
+
from ..pyutils.default_ordered_dict import DefaultOrderedDict
|
5
|
+
from ..type.definition import GraphQLInterfaceType, GraphQLUnionType
|
6
|
+
from ..type.directives import GraphQLIncludeDirective, GraphQLSkipDirective
|
7
|
+
from ..type.introspection import (SchemaMetaFieldDef, TypeMetaFieldDef,
|
8
|
+
TypeNameMetaFieldDef)
|
9
|
+
from ..utils.type_from_ast import type_from_ast
|
10
|
+
from .values import get_argument_values, get_variable_values
|
11
|
+
|
12
|
+
Undefined = object()
|
13
|
+
|
14
|
+
|
15
|
+
class ExecutionContext(object):
|
16
|
+
"""Data that must be available at all points during query execution.
|
17
|
+
|
18
|
+
Namely, schema of the type system that is currently executing,
|
19
|
+
and the fragments defined in the query document"""
|
20
|
+
|
21
|
+
__slots__ = 'schema', 'fragments', 'root_value', 'operation', 'variable_values', 'errors', 'context_value', \
|
22
|
+
'argument_values_cache', 'executor', 'middleware', '_subfields_cache'
|
23
|
+
|
24
|
+
def __init__(self, schema, document_ast, root_value, context_value, variable_values, operation_name, executor, middleware):
|
25
|
+
"""Constructs a ExecutionContext object from the arguments passed
|
26
|
+
to execute, which we will pass throughout the other execution
|
27
|
+
methods."""
|
28
|
+
errors = []
|
29
|
+
operation = None
|
30
|
+
fragments = {}
|
31
|
+
|
32
|
+
for definition in document_ast.definitions:
|
33
|
+
if isinstance(definition, ast.OperationDefinition):
|
34
|
+
if not operation_name and operation:
|
35
|
+
raise GraphQLError('Must provide operation name if query contains multiple operations.')
|
36
|
+
|
37
|
+
if not operation_name or definition.name and definition.name.value == operation_name:
|
38
|
+
operation = definition
|
39
|
+
|
40
|
+
elif isinstance(definition, ast.FragmentDefinition):
|
41
|
+
fragments[definition.name.value] = definition
|
42
|
+
|
43
|
+
else:
|
44
|
+
raise GraphQLError(
|
45
|
+
u'GraphQL cannot execute a request containing a {}.'.format(definition.__class__.__name__),
|
46
|
+
definition
|
47
|
+
)
|
48
|
+
|
49
|
+
if not operation:
|
50
|
+
if operation_name:
|
51
|
+
raise GraphQLError(u'Unknown operation named "{}".'.format(operation_name))
|
52
|
+
|
53
|
+
else:
|
54
|
+
raise GraphQLError('Must provide an operation.')
|
55
|
+
|
56
|
+
variable_values = get_variable_values(schema, operation.variable_definitions or [], variable_values)
|
57
|
+
|
58
|
+
self.schema = schema
|
59
|
+
self.fragments = fragments
|
60
|
+
self.root_value = root_value
|
61
|
+
self.operation = operation
|
62
|
+
self.variable_values = variable_values
|
63
|
+
self.errors = errors
|
64
|
+
self.context_value = context_value
|
65
|
+
self.argument_values_cache = {}
|
66
|
+
self.executor = executor
|
67
|
+
self.middleware = middleware
|
68
|
+
self._subfields_cache = {}
|
69
|
+
|
70
|
+
def get_field_resolver(self, field_resolver):
|
71
|
+
if not self.middleware:
|
72
|
+
return field_resolver
|
73
|
+
return self.middleware.get_field_resolver(field_resolver)
|
74
|
+
|
75
|
+
def get_argument_values(self, field_def, field_ast):
|
76
|
+
k = field_def, field_ast
|
77
|
+
result = self.argument_values_cache.get(k)
|
78
|
+
|
79
|
+
if not result:
|
80
|
+
result = self.argument_values_cache[k] = get_argument_values(field_def.args, field_ast.arguments,
|
81
|
+
self.variable_values)
|
82
|
+
|
83
|
+
return result
|
84
|
+
|
85
|
+
def get_sub_fields(self, return_type, field_asts):
|
86
|
+
k = return_type, tuple(field_asts)
|
87
|
+
if k not in self._subfields_cache:
|
88
|
+
subfield_asts = DefaultOrderedDict(list)
|
89
|
+
visited_fragment_names = set()
|
90
|
+
for field_ast in field_asts:
|
91
|
+
selection_set = field_ast.selection_set
|
92
|
+
if selection_set:
|
93
|
+
subfield_asts = collect_fields(
|
94
|
+
self, return_type, selection_set,
|
95
|
+
subfield_asts, visited_fragment_names
|
96
|
+
)
|
97
|
+
self._subfields_cache[k] = subfield_asts
|
98
|
+
return self._subfields_cache[k]
|
99
|
+
|
100
|
+
|
101
|
+
class ExecutionResult(object):
|
102
|
+
"""The result of execution. `data` is the result of executing the
|
103
|
+
query, `errors` is null if no errors occurred, and is a
|
104
|
+
non-empty array if an error occurred."""
|
105
|
+
|
106
|
+
__slots__ = 'data', 'errors', 'invalid'
|
107
|
+
|
108
|
+
def __init__(self, data=None, errors=None, invalid=False):
|
109
|
+
self.data = data
|
110
|
+
self.errors = errors
|
111
|
+
|
112
|
+
if invalid:
|
113
|
+
assert data is None
|
114
|
+
|
115
|
+
self.invalid = invalid
|
116
|
+
|
117
|
+
def __eq__(self, other):
|
118
|
+
return (
|
119
|
+
self is other or (
|
120
|
+
isinstance(other, ExecutionResult) and
|
121
|
+
self.data == other.data and
|
122
|
+
self.errors == other.errors and
|
123
|
+
self.invalid == other.invalid
|
124
|
+
)
|
125
|
+
)
|
126
|
+
|
127
|
+
|
128
|
+
def get_operation_root_type(schema, operation):
|
129
|
+
op = operation.operation
|
130
|
+
if op == 'query':
|
131
|
+
return schema.get_query_type()
|
132
|
+
|
133
|
+
elif op == 'mutation':
|
134
|
+
mutation_type = schema.get_mutation_type()
|
135
|
+
|
136
|
+
if not mutation_type:
|
137
|
+
raise GraphQLError(
|
138
|
+
'Schema is not configured for mutations',
|
139
|
+
[operation]
|
140
|
+
)
|
141
|
+
|
142
|
+
return mutation_type
|
143
|
+
|
144
|
+
elif op == 'subscription':
|
145
|
+
subscription_type = schema.get_subscription_type()
|
146
|
+
|
147
|
+
if not subscription_type:
|
148
|
+
raise GraphQLError(
|
149
|
+
'Schema is not configured for subscriptions',
|
150
|
+
[operation]
|
151
|
+
)
|
152
|
+
|
153
|
+
return subscription_type
|
154
|
+
|
155
|
+
raise GraphQLError(
|
156
|
+
'Can only execute queries, mutations and subscriptions',
|
157
|
+
[operation]
|
158
|
+
)
|
159
|
+
|
160
|
+
|
161
|
+
def collect_fields(ctx, runtime_type, selection_set, fields, prev_fragment_names):
|
162
|
+
"""
|
163
|
+
Given a selectionSet, adds all of the fields in that selection to
|
164
|
+
the passed in map of fields, and returns it at the end.
|
165
|
+
|
166
|
+
collect_fields requires the "runtime type" of an object. For a field which
|
167
|
+
returns and Interface or Union type, the "runtime type" will be the actual
|
168
|
+
Object type returned by that field.
|
169
|
+
"""
|
170
|
+
for selection in selection_set.selections:
|
171
|
+
directives = selection.directives
|
172
|
+
|
173
|
+
if isinstance(selection, ast.Field):
|
174
|
+
if not should_include_node(ctx, directives):
|
175
|
+
continue
|
176
|
+
|
177
|
+
name = get_field_entry_key(selection)
|
178
|
+
fields[name].append(selection)
|
179
|
+
|
180
|
+
elif isinstance(selection, ast.InlineFragment):
|
181
|
+
if not should_include_node(
|
182
|
+
ctx, directives) or not does_fragment_condition_match(
|
183
|
+
ctx, selection, runtime_type):
|
184
|
+
continue
|
185
|
+
|
186
|
+
collect_fields(ctx, runtime_type, selection.selection_set, fields, prev_fragment_names)
|
187
|
+
|
188
|
+
elif isinstance(selection, ast.FragmentSpread):
|
189
|
+
frag_name = selection.name.value
|
190
|
+
|
191
|
+
if frag_name in prev_fragment_names or not should_include_node(ctx, directives):
|
192
|
+
continue
|
193
|
+
|
194
|
+
prev_fragment_names.add(frag_name)
|
195
|
+
fragment = ctx.fragments.get(frag_name)
|
196
|
+
frag_directives = fragment.directives
|
197
|
+
if not fragment or not \
|
198
|
+
should_include_node(ctx, frag_directives) or not \
|
199
|
+
does_fragment_condition_match(ctx, fragment, runtime_type):
|
200
|
+
continue
|
201
|
+
|
202
|
+
collect_fields(ctx, runtime_type, fragment.selection_set, fields, prev_fragment_names)
|
203
|
+
|
204
|
+
return fields
|
205
|
+
|
206
|
+
|
207
|
+
def should_include_node(ctx, directives):
|
208
|
+
"""Determines if a field should be included based on the @include and
|
209
|
+
@skip directives, where @skip has higher precidence than @include."""
|
210
|
+
# TODO: Refactor based on latest code
|
211
|
+
if directives:
|
212
|
+
skip_ast = None
|
213
|
+
|
214
|
+
for directive in directives:
|
215
|
+
if directive.name.value == GraphQLSkipDirective.name:
|
216
|
+
skip_ast = directive
|
217
|
+
break
|
218
|
+
|
219
|
+
if skip_ast:
|
220
|
+
args = get_argument_values(
|
221
|
+
GraphQLSkipDirective.args,
|
222
|
+
skip_ast.arguments,
|
223
|
+
ctx.variable_values,
|
224
|
+
)
|
225
|
+
if args.get('if') is True:
|
226
|
+
return False
|
227
|
+
|
228
|
+
include_ast = None
|
229
|
+
|
230
|
+
for directive in directives:
|
231
|
+
if directive.name.value == GraphQLIncludeDirective.name:
|
232
|
+
include_ast = directive
|
233
|
+
break
|
234
|
+
|
235
|
+
if include_ast:
|
236
|
+
args = get_argument_values(
|
237
|
+
GraphQLIncludeDirective.args,
|
238
|
+
include_ast.arguments,
|
239
|
+
ctx.variable_values,
|
240
|
+
)
|
241
|
+
|
242
|
+
if args.get('if') is False:
|
243
|
+
return False
|
244
|
+
|
245
|
+
return True
|
246
|
+
|
247
|
+
|
248
|
+
def does_fragment_condition_match(ctx, fragment, type_):
|
249
|
+
type_condition_ast = fragment.type_condition
|
250
|
+
if not type_condition_ast:
|
251
|
+
return True
|
252
|
+
|
253
|
+
conditional_type = type_from_ast(ctx.schema, type_condition_ast)
|
254
|
+
if conditional_type.is_same_type(type_):
|
255
|
+
return True
|
256
|
+
|
257
|
+
if isinstance(conditional_type, (GraphQLInterfaceType, GraphQLUnionType)):
|
258
|
+
return ctx.schema.is_possible_type(conditional_type, type_)
|
259
|
+
|
260
|
+
return False
|
261
|
+
|
262
|
+
|
263
|
+
def get_field_entry_key(node):
|
264
|
+
"""Implements the logic to compute the key of a given field's entry"""
|
265
|
+
if node.alias:
|
266
|
+
return node.alias.value
|
267
|
+
return node.name.value
|
268
|
+
|
269
|
+
|
270
|
+
class ResolveInfo(object):
|
271
|
+
__slots__ = ('field_name', 'field_asts', 'return_type', 'parent_type',
|
272
|
+
'schema', 'fragments', 'root_value', 'operation', 'variable_values')
|
273
|
+
|
274
|
+
def __init__(self, field_name, field_asts, return_type, parent_type,
|
275
|
+
schema, fragments, root_value, operation, variable_values):
|
276
|
+
self.field_name = field_name
|
277
|
+
self.field_asts = field_asts
|
278
|
+
self.return_type = return_type
|
279
|
+
self.parent_type = parent_type
|
280
|
+
self.schema = schema
|
281
|
+
self.fragments = fragments
|
282
|
+
self.root_value = root_value
|
283
|
+
self.operation = operation
|
284
|
+
self.variable_values = variable_values
|
285
|
+
|
286
|
+
|
287
|
+
def default_resolve_fn(source, args, context, info):
|
288
|
+
"""If a resolve function is not given, then a default resolve behavior is used which takes the property of the source object
|
289
|
+
of the same name as the field and returns it as the result, or if it's a function, returns the result of calling that function."""
|
290
|
+
name = info.field_name
|
291
|
+
property = getattr(source, name, None)
|
292
|
+
if callable(property):
|
293
|
+
return property()
|
294
|
+
return property
|
295
|
+
|
296
|
+
|
297
|
+
def get_field_def(schema, parent_type, field_name):
|
298
|
+
"""This method looks up the field on the given type defintion.
|
299
|
+
It has special casing for the two introspection fields, __schema
|
300
|
+
and __typename. __typename is special because it can always be
|
301
|
+
queried as a field, even in situations where no other fields
|
302
|
+
are allowed, like on a Union. __schema could get automatically
|
303
|
+
added to the query type, but that would require mutating type
|
304
|
+
definitions, which would cause issues."""
|
305
|
+
if field_name == '__schema' and schema.get_query_type() == parent_type:
|
306
|
+
return SchemaMetaFieldDef
|
307
|
+
elif field_name == '__type' and schema.get_query_type() == parent_type:
|
308
|
+
return TypeMetaFieldDef
|
309
|
+
elif field_name == '__typename':
|
310
|
+
return TypeNameMetaFieldDef
|
311
|
+
return parent_type.fields.get(field_name)
|
@@ -0,0 +1,398 @@
|
|
1
|
+
import collections
|
2
|
+
from collections.abc import Iterable
|
3
|
+
import functools
|
4
|
+
import logging
|
5
|
+
import sys
|
6
|
+
|
7
|
+
from wandb_promise import Promise, promise_for_dict, is_thenable
|
8
|
+
|
9
|
+
from ..error import GraphQLError, GraphQLLocatedError
|
10
|
+
from ..pyutils.default_ordered_dict import DefaultOrderedDict
|
11
|
+
from ..pyutils.ordereddict import OrderedDict
|
12
|
+
from ..type import (GraphQLEnumType, GraphQLInterfaceType, GraphQLList,
|
13
|
+
GraphQLNonNull, GraphQLObjectType, GraphQLScalarType,
|
14
|
+
GraphQLSchema, GraphQLUnionType)
|
15
|
+
from .base import (ExecutionContext, ExecutionResult, ResolveInfo, Undefined,
|
16
|
+
collect_fields, default_resolve_fn, get_field_def,
|
17
|
+
get_operation_root_type)
|
18
|
+
from .executors.sync import SyncExecutor
|
19
|
+
from .experimental.executor import execute as experimental_execute
|
20
|
+
from .middleware import MiddlewareManager
|
21
|
+
|
22
|
+
logger = logging.getLogger(__name__)
|
23
|
+
|
24
|
+
|
25
|
+
use_experimental_executor = False
|
26
|
+
|
27
|
+
|
28
|
+
def execute(schema, document_ast, root_value=None, context_value=None,
|
29
|
+
variable_values=None, operation_name=None, executor=None,
|
30
|
+
return_promise=False, middleware=None):
|
31
|
+
if use_experimental_executor:
|
32
|
+
return experimental_execute(
|
33
|
+
schema, document_ast, root_value, context_value,
|
34
|
+
variable_values, operation_name, executor,
|
35
|
+
return_promise, middleware
|
36
|
+
)
|
37
|
+
|
38
|
+
assert schema, 'Must provide schema'
|
39
|
+
assert isinstance(schema, GraphQLSchema), (
|
40
|
+
'Schema must be an instance of GraphQLSchema. Also ensure that there are ' +
|
41
|
+
'not multiple versions of GraphQL installed in your node_modules directory.'
|
42
|
+
)
|
43
|
+
if middleware:
|
44
|
+
if not isinstance(middleware, MiddlewareManager):
|
45
|
+
middleware = MiddlewareManager(*middleware)
|
46
|
+
|
47
|
+
assert isinstance(middleware, MiddlewareManager), (
|
48
|
+
'middlewares have to be an instance'
|
49
|
+
' of MiddlewareManager. Received "{}".'.format(middleware)
|
50
|
+
)
|
51
|
+
|
52
|
+
if executor is None:
|
53
|
+
executor = SyncExecutor()
|
54
|
+
|
55
|
+
context = ExecutionContext(
|
56
|
+
schema,
|
57
|
+
document_ast,
|
58
|
+
root_value,
|
59
|
+
context_value,
|
60
|
+
variable_values,
|
61
|
+
operation_name,
|
62
|
+
executor,
|
63
|
+
middleware
|
64
|
+
)
|
65
|
+
|
66
|
+
def executor(resolve, reject):
|
67
|
+
return resolve(execute_operation(context, context.operation, root_value))
|
68
|
+
|
69
|
+
def on_rejected(error):
|
70
|
+
context.errors.append(error)
|
71
|
+
return None
|
72
|
+
|
73
|
+
def on_resolve(data):
|
74
|
+
if not context.errors:
|
75
|
+
return ExecutionResult(data=data)
|
76
|
+
return ExecutionResult(data=data, errors=context.errors)
|
77
|
+
|
78
|
+
promise = Promise(executor).catch(on_rejected).then(on_resolve)
|
79
|
+
if return_promise:
|
80
|
+
return promise
|
81
|
+
context.executor.wait_until_finished()
|
82
|
+
return promise.get()
|
83
|
+
|
84
|
+
|
85
|
+
def execute_operation(exe_context, operation, root_value):
|
86
|
+
type = get_operation_root_type(exe_context.schema, operation)
|
87
|
+
fields = collect_fields(
|
88
|
+
exe_context,
|
89
|
+
type,
|
90
|
+
operation.selection_set,
|
91
|
+
DefaultOrderedDict(list),
|
92
|
+
set()
|
93
|
+
)
|
94
|
+
|
95
|
+
if operation.operation == 'mutation':
|
96
|
+
return execute_fields_serially(exe_context, type, root_value, fields)
|
97
|
+
|
98
|
+
return execute_fields(exe_context, type, root_value, fields)
|
99
|
+
|
100
|
+
|
101
|
+
def execute_fields_serially(exe_context, parent_type, source_value, fields):
|
102
|
+
def execute_field_callback(results, response_name):
|
103
|
+
field_asts = fields[response_name]
|
104
|
+
result = resolve_field(
|
105
|
+
exe_context,
|
106
|
+
parent_type,
|
107
|
+
source_value,
|
108
|
+
field_asts
|
109
|
+
)
|
110
|
+
if result is Undefined:
|
111
|
+
return results
|
112
|
+
|
113
|
+
if is_thenable(result):
|
114
|
+
def collect_result(resolved_result):
|
115
|
+
results[response_name] = resolved_result
|
116
|
+
return results
|
117
|
+
|
118
|
+
return result.then(collect_result, None)
|
119
|
+
|
120
|
+
results[response_name] = result
|
121
|
+
return results
|
122
|
+
|
123
|
+
def execute_field(prev_promise, response_name):
|
124
|
+
return prev_promise.then(lambda results: execute_field_callback(results, response_name))
|
125
|
+
|
126
|
+
return functools.reduce(execute_field, fields.keys(), Promise.resolve(collections.OrderedDict()))
|
127
|
+
|
128
|
+
|
129
|
+
def execute_fields(exe_context, parent_type, source_value, fields):
|
130
|
+
contains_promise = False
|
131
|
+
|
132
|
+
final_results = OrderedDict()
|
133
|
+
|
134
|
+
for response_name, field_asts in fields.items():
|
135
|
+
result = resolve_field(exe_context, parent_type, source_value, field_asts)
|
136
|
+
if result is Undefined:
|
137
|
+
continue
|
138
|
+
|
139
|
+
final_results[response_name] = result
|
140
|
+
if is_thenable(result):
|
141
|
+
contains_promise = True
|
142
|
+
|
143
|
+
if not contains_promise:
|
144
|
+
return final_results
|
145
|
+
|
146
|
+
return promise_for_dict(final_results)
|
147
|
+
|
148
|
+
|
149
|
+
def resolve_field(exe_context, parent_type, source, field_asts):
|
150
|
+
field_ast = field_asts[0]
|
151
|
+
field_name = field_ast.name.value
|
152
|
+
|
153
|
+
field_def = get_field_def(exe_context.schema, parent_type, field_name)
|
154
|
+
if not field_def:
|
155
|
+
return Undefined
|
156
|
+
|
157
|
+
return_type = field_def.type
|
158
|
+
resolve_fn = field_def.resolver or default_resolve_fn
|
159
|
+
|
160
|
+
# We wrap the resolve_fn from the middleware
|
161
|
+
resolve_fn_middleware = exe_context.get_field_resolver(resolve_fn)
|
162
|
+
|
163
|
+
# Build a dict of arguments from the field.arguments AST, using the variables scope to
|
164
|
+
# fulfill any variable references.
|
165
|
+
args = exe_context.get_argument_values(field_def, field_ast)
|
166
|
+
|
167
|
+
# The resolve function's optional third argument is a context value that
|
168
|
+
# is provided to every resolve function within an execution. It is commonly
|
169
|
+
# used to represent an authenticated user, or request-specific caches.
|
170
|
+
context = exe_context.context_value
|
171
|
+
|
172
|
+
# The resolve function's optional third argument is a collection of
|
173
|
+
# information about the current execution state.
|
174
|
+
info = ResolveInfo(
|
175
|
+
field_name,
|
176
|
+
field_asts,
|
177
|
+
return_type,
|
178
|
+
parent_type,
|
179
|
+
schema=exe_context.schema,
|
180
|
+
fragments=exe_context.fragments,
|
181
|
+
root_value=exe_context.root_value,
|
182
|
+
operation=exe_context.operation,
|
183
|
+
variable_values=exe_context.variable_values,
|
184
|
+
)
|
185
|
+
|
186
|
+
executor = exe_context.executor
|
187
|
+
result = resolve_or_error(resolve_fn_middleware, source, args, context, info, executor)
|
188
|
+
|
189
|
+
return complete_value_catching_error(
|
190
|
+
exe_context,
|
191
|
+
return_type,
|
192
|
+
field_asts,
|
193
|
+
info,
|
194
|
+
result
|
195
|
+
)
|
196
|
+
|
197
|
+
|
198
|
+
def resolve_or_error(resolve_fn, source, args, context, info, executor):
|
199
|
+
try:
|
200
|
+
return executor.execute(resolve_fn, source, args, context, info)
|
201
|
+
except Exception as e:
|
202
|
+
logger.exception("An error occurred while resolving field {}.{}".format(
|
203
|
+
info.parent_type.name, info.field_name
|
204
|
+
))
|
205
|
+
e.stack = sys.exc_info()[2]
|
206
|
+
return e
|
207
|
+
|
208
|
+
|
209
|
+
def complete_value_catching_error(exe_context, return_type, field_asts, info, result):
|
210
|
+
# If the field type is non-nullable, then it is resolved without any
|
211
|
+
# protection from errors.
|
212
|
+
if isinstance(return_type, GraphQLNonNull):
|
213
|
+
return complete_value(exe_context, return_type, field_asts, info, result)
|
214
|
+
|
215
|
+
# Otherwise, error protection is applied, logging the error and
|
216
|
+
# resolving a null value for this field if one is encountered.
|
217
|
+
try:
|
218
|
+
completed = complete_value(exe_context, return_type, field_asts, info, result)
|
219
|
+
if is_thenable(completed):
|
220
|
+
def handle_error(error):
|
221
|
+
exe_context.errors.append(error)
|
222
|
+
return None
|
223
|
+
|
224
|
+
return completed.catch(handle_error)
|
225
|
+
|
226
|
+
return completed
|
227
|
+
except Exception as e:
|
228
|
+
exe_context.errors.append(e)
|
229
|
+
return None
|
230
|
+
|
231
|
+
|
232
|
+
def complete_value(exe_context, return_type, field_asts, info, result):
|
233
|
+
"""
|
234
|
+
Implements the instructions for completeValue as defined in the
|
235
|
+
"Field entries" section of the spec.
|
236
|
+
|
237
|
+
If the field type is Non-Null, then this recursively completes the value for the inner type. It throws a field
|
238
|
+
error if that completion returns null, as per the "Nullability" section of the spec.
|
239
|
+
|
240
|
+
If the field type is a List, then this recursively completes the value for the inner type on each item in the
|
241
|
+
list.
|
242
|
+
|
243
|
+
If the field type is a Scalar or Enum, ensures the completed value is a legal value of the type by calling the
|
244
|
+
`serialize` method of GraphQL type definition.
|
245
|
+
|
246
|
+
If the field is an abstract type, determine the runtime type of the value and then complete based on that type.
|
247
|
+
|
248
|
+
Otherwise, the field type expects a sub-selection set, and will complete the value by evaluating all
|
249
|
+
sub-selections.
|
250
|
+
"""
|
251
|
+
# If field type is NonNull, complete for inner type, and throw field error if result is null.
|
252
|
+
|
253
|
+
if is_thenable(result):
|
254
|
+
return Promise.resolve(result).then(
|
255
|
+
lambda resolved: complete_value(
|
256
|
+
exe_context,
|
257
|
+
return_type,
|
258
|
+
field_asts,
|
259
|
+
info,
|
260
|
+
resolved
|
261
|
+
),
|
262
|
+
lambda error: Promise.rejected(GraphQLLocatedError(field_asts, original_error=error))
|
263
|
+
)
|
264
|
+
|
265
|
+
# print return_type, type(result)
|
266
|
+
if isinstance(result, Exception):
|
267
|
+
raise GraphQLLocatedError(field_asts, original_error=result)
|
268
|
+
|
269
|
+
if isinstance(return_type, GraphQLNonNull):
|
270
|
+
return complete_nonnull_value(exe_context, return_type, field_asts, info, result)
|
271
|
+
|
272
|
+
# If result is null-like, return null.
|
273
|
+
if result is None:
|
274
|
+
return None
|
275
|
+
|
276
|
+
# If field type is List, complete each item in the list with the inner type
|
277
|
+
if isinstance(return_type, GraphQLList):
|
278
|
+
return complete_list_value(exe_context, return_type, field_asts, info, result)
|
279
|
+
|
280
|
+
# If field type is Scalar or Enum, serialize to a valid value, returning null if coercion is not possible.
|
281
|
+
if isinstance(return_type, (GraphQLScalarType, GraphQLEnumType)):
|
282
|
+
return complete_leaf_value(return_type, result)
|
283
|
+
|
284
|
+
if isinstance(return_type, (GraphQLInterfaceType, GraphQLUnionType)):
|
285
|
+
return complete_abstract_value(exe_context, return_type, field_asts, info, result)
|
286
|
+
|
287
|
+
if isinstance(return_type, GraphQLObjectType):
|
288
|
+
return complete_object_value(exe_context, return_type, field_asts, info, result)
|
289
|
+
|
290
|
+
assert False, u'Cannot complete value of unexpected type "{}".'.format(return_type)
|
291
|
+
|
292
|
+
|
293
|
+
def complete_list_value(exe_context, return_type, field_asts, info, result):
|
294
|
+
"""
|
295
|
+
Complete a list value by completing each item in the list with the inner type
|
296
|
+
"""
|
297
|
+
assert isinstance(result, Iterable), \
|
298
|
+
('User Error: expected iterable, but did not find one ' +
|
299
|
+
'for field {}.{}.').format(info.parent_type, info.field_name)
|
300
|
+
|
301
|
+
item_type = return_type.of_type
|
302
|
+
completed_results = []
|
303
|
+
contains_promise = False
|
304
|
+
for item in result:
|
305
|
+
completed_item = complete_value_catching_error(exe_context, item_type, field_asts, info, item)
|
306
|
+
if not contains_promise and is_thenable(completed_item):
|
307
|
+
contains_promise = True
|
308
|
+
|
309
|
+
completed_results.append(completed_item)
|
310
|
+
|
311
|
+
return Promise.all(completed_results) if contains_promise else completed_results
|
312
|
+
|
313
|
+
|
314
|
+
def complete_leaf_value(return_type, result):
|
315
|
+
"""
|
316
|
+
Complete a Scalar or Enum by serializing to a valid value, returning null if serialization is not possible.
|
317
|
+
"""
|
318
|
+
# serialize = getattr(return_type, 'serialize', None)
|
319
|
+
# assert serialize, 'Missing serialize method on type'
|
320
|
+
|
321
|
+
return return_type.serialize(result)
|
322
|
+
|
323
|
+
|
324
|
+
def complete_abstract_value(exe_context, return_type, field_asts, info, result):
|
325
|
+
"""
|
326
|
+
Complete an value of an abstract type by determining the runtime type of that value, then completing based
|
327
|
+
on that type.
|
328
|
+
"""
|
329
|
+
runtime_type = None
|
330
|
+
|
331
|
+
# Field type must be Object, Interface or Union and expect sub-selections.
|
332
|
+
if isinstance(return_type, (GraphQLInterfaceType, GraphQLUnionType)):
|
333
|
+
if return_type.resolve_type:
|
334
|
+
runtime_type = return_type.resolve_type(result, exe_context.context_value, info)
|
335
|
+
else:
|
336
|
+
runtime_type = get_default_resolve_type_fn(result, exe_context.context_value, info, return_type)
|
337
|
+
|
338
|
+
if isinstance(runtime_type, str):
|
339
|
+
runtime_type = info.schema.get_type(runtime_type)
|
340
|
+
|
341
|
+
if not isinstance(runtime_type, GraphQLObjectType):
|
342
|
+
raise GraphQLError(
|
343
|
+
('Abstract type {} must resolve to an Object type at runtime ' +
|
344
|
+
'for field {}.{} with value "{}", received "{}".').format(
|
345
|
+
return_type,
|
346
|
+
info.parent_type,
|
347
|
+
info.field_name,
|
348
|
+
result,
|
349
|
+
runtime_type,
|
350
|
+
),
|
351
|
+
field_asts
|
352
|
+
)
|
353
|
+
|
354
|
+
if not exe_context.schema.is_possible_type(return_type, runtime_type):
|
355
|
+
raise GraphQLError(
|
356
|
+
u'Runtime Object type "{}" is not a possible type for "{}".'.format(runtime_type, return_type),
|
357
|
+
field_asts
|
358
|
+
)
|
359
|
+
|
360
|
+
return complete_object_value(exe_context, runtime_type, field_asts, info, result)
|
361
|
+
|
362
|
+
|
363
|
+
def get_default_resolve_type_fn(value, context, info, abstract_type):
|
364
|
+
possible_types = info.schema.get_possible_types(abstract_type)
|
365
|
+
for type in possible_types:
|
366
|
+
if callable(type.is_type_of) and type.is_type_of(value, context, info):
|
367
|
+
return type
|
368
|
+
|
369
|
+
|
370
|
+
def complete_object_value(exe_context, return_type, field_asts, info, result):
|
371
|
+
"""
|
372
|
+
Complete an Object value by evaluating all sub-selections.
|
373
|
+
"""
|
374
|
+
if return_type.is_type_of and not return_type.is_type_of(result, exe_context.context_value, info):
|
375
|
+
raise GraphQLError(
|
376
|
+
u'Expected value of type "{}" but got: {}.'.format(return_type, type(result).__name__),
|
377
|
+
field_asts
|
378
|
+
)
|
379
|
+
|
380
|
+
# Collect sub-fields to execute to complete this value.
|
381
|
+
subfield_asts = exe_context.get_sub_fields(return_type, field_asts)
|
382
|
+
return execute_fields(exe_context, return_type, result, subfield_asts)
|
383
|
+
|
384
|
+
|
385
|
+
def complete_nonnull_value(exe_context, return_type, field_asts, info, result):
|
386
|
+
"""
|
387
|
+
Complete a NonNull value by completing the inner type
|
388
|
+
"""
|
389
|
+
completed = complete_value(
|
390
|
+
exe_context, return_type.of_type, field_asts, info, result
|
391
|
+
)
|
392
|
+
if completed is None:
|
393
|
+
raise GraphQLError(
|
394
|
+
'Cannot return null for non-nullable field {}.{}.'.format(info.parent_type, info.field_name),
|
395
|
+
field_asts
|
396
|
+
)
|
397
|
+
|
398
|
+
return completed
|