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
wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/default_values_of_correct_type.py
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language.printer import print_ast
|
3
|
+
from ...type.definition import GraphQLNonNull
|
4
|
+
from ...utils.is_valid_literal_value import is_valid_literal_value
|
5
|
+
from .base import ValidationRule
|
6
|
+
|
7
|
+
|
8
|
+
class DefaultValuesOfCorrectType(ValidationRule):
|
9
|
+
|
10
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
11
|
+
name = node.variable.name.value
|
12
|
+
default_value = node.default_value
|
13
|
+
type = self.context.get_input_type()
|
14
|
+
|
15
|
+
if isinstance(type, GraphQLNonNull) and default_value:
|
16
|
+
self.context.report_error(GraphQLError(
|
17
|
+
self.default_for_non_null_arg_message(name, type, type.of_type),
|
18
|
+
[default_value]
|
19
|
+
))
|
20
|
+
|
21
|
+
if type and default_value:
|
22
|
+
errors = is_valid_literal_value(type, default_value)
|
23
|
+
if errors:
|
24
|
+
self.context.report_error(GraphQLError(
|
25
|
+
self.bad_value_for_default_arg_message(name, type, print_ast(default_value), errors),
|
26
|
+
[default_value]
|
27
|
+
))
|
28
|
+
return False
|
29
|
+
|
30
|
+
def enter_SelectionSet(self, node, key, parent, path, ancestors):
|
31
|
+
return False
|
32
|
+
|
33
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
34
|
+
return False
|
35
|
+
|
36
|
+
@staticmethod
|
37
|
+
def default_for_non_null_arg_message(var_name, type, guess_type):
|
38
|
+
return u'Variable "${}" of type "{}" is required and will not use the default value. ' \
|
39
|
+
u'Perhaps you meant to use type "{}".'.format(var_name, type, guess_type)
|
40
|
+
|
41
|
+
@staticmethod
|
42
|
+
def bad_value_for_default_arg_message(var_name, type, value, verbose_errors):
|
43
|
+
message = (u'\n' + u'\n'.join(verbose_errors)) if verbose_errors else u''
|
44
|
+
return u'Variable "${}" of type "{}" has invalid default value: {}.{}'.format(var_name, type, value, message)
|
@@ -0,0 +1,113 @@
|
|
1
|
+
from collections import Counter
|
2
|
+
|
3
|
+
from ...error import GraphQLError
|
4
|
+
from ...pyutils.ordereddict import OrderedDict
|
5
|
+
from ...type.definition import (GraphQLInterfaceType, GraphQLObjectType,
|
6
|
+
GraphQLUnionType)
|
7
|
+
from ...utils.quoted_or_list import quoted_or_list
|
8
|
+
from ...utils.suggestion_list import suggestion_list
|
9
|
+
from .base import ValidationRule
|
10
|
+
|
11
|
+
try:
|
12
|
+
# Python 2
|
13
|
+
from itertools import izip
|
14
|
+
except ImportError:
|
15
|
+
# Python 3
|
16
|
+
izip = zip
|
17
|
+
|
18
|
+
|
19
|
+
def _undefined_field_message(field_name, type, suggested_types,
|
20
|
+
suggested_fields):
|
21
|
+
message = 'Cannot query field "{}" on type "{}".'.format(field_name, type)
|
22
|
+
|
23
|
+
if suggested_types:
|
24
|
+
suggestions = quoted_or_list(suggested_types)
|
25
|
+
message += " Did you mean to use an inline fragment on {}?".format(suggestions)
|
26
|
+
elif suggested_fields:
|
27
|
+
suggestions = quoted_or_list(suggested_fields)
|
28
|
+
message += " Did you mean {}?".format(suggestions)
|
29
|
+
|
30
|
+
return message
|
31
|
+
|
32
|
+
|
33
|
+
class OrderedCounter(Counter, OrderedDict):
|
34
|
+
pass
|
35
|
+
|
36
|
+
|
37
|
+
class FieldsOnCorrectType(ValidationRule):
|
38
|
+
'''Fields on correct type
|
39
|
+
|
40
|
+
A GraphQL document is only valid if all fields selected are defined by the
|
41
|
+
parent type, or are an allowed meta field such as __typenamme
|
42
|
+
'''
|
43
|
+
|
44
|
+
def enter_Field(self, node, key, parent, path, ancestors):
|
45
|
+
parent_type = self.context.get_parent_type()
|
46
|
+
if not parent_type:
|
47
|
+
return
|
48
|
+
|
49
|
+
field_def = self.context.get_field_def()
|
50
|
+
if not field_def:
|
51
|
+
# This field doesn't exist, lets look for suggestions.
|
52
|
+
schema = self.context.get_schema()
|
53
|
+
field_name = node.name.value
|
54
|
+
|
55
|
+
# First determine if there are any suggested types to condition on.
|
56
|
+
suggested_type_names = get_suggested_type_names(schema, parent_type, field_name)
|
57
|
+
# if there are no suggested types perhaps it was a typo?
|
58
|
+
suggested_field_names = [] if suggested_type_names else get_suggested_field_names(schema, parent_type, field_name)
|
59
|
+
|
60
|
+
# report an error including helpful suggestions.
|
61
|
+
self.context.report_error(GraphQLError(
|
62
|
+
_undefined_field_message(field_name, parent_type.name, suggested_type_names, suggested_field_names),
|
63
|
+
[node]
|
64
|
+
))
|
65
|
+
|
66
|
+
|
67
|
+
def get_suggested_type_names(schema, output_type, field_name):
|
68
|
+
'''Go through all of the implementations of type, as well as the interfaces
|
69
|
+
that they implement. If any of those types include the provided field,
|
70
|
+
suggest them, sorted by how often the type is referenced, starting
|
71
|
+
with Interfaces.'''
|
72
|
+
|
73
|
+
if isinstance(output_type, (GraphQLInterfaceType, GraphQLUnionType)):
|
74
|
+
suggested_object_types = []
|
75
|
+
interface_usage_count = OrderedDict()
|
76
|
+
for possible_type in schema.get_possible_types(output_type):
|
77
|
+
if not possible_type.fields.get(field_name):
|
78
|
+
return
|
79
|
+
|
80
|
+
# This object type defines this field.
|
81
|
+
suggested_object_types.append(possible_type.name)
|
82
|
+
|
83
|
+
for possible_interface in possible_type.interfaces:
|
84
|
+
if not possible_interface.fields.get(field_name):
|
85
|
+
continue
|
86
|
+
|
87
|
+
# This interface type defines this field.
|
88
|
+
interface_usage_count[possible_interface.name] = (
|
89
|
+
interface_usage_count.get(possible_interface.name, 0) + 1)
|
90
|
+
|
91
|
+
# Suggest interface types based on how common they are.
|
92
|
+
suggested_interface_types = sorted(list(interface_usage_count.keys()), key=lambda k: interface_usage_count[k],
|
93
|
+
reverse=True)
|
94
|
+
|
95
|
+
# Suggest both interface and object types.
|
96
|
+
suggested_interface_types.extend(suggested_object_types)
|
97
|
+
return suggested_interface_types
|
98
|
+
|
99
|
+
# Otherwise, must be an Object type, which does not have possible fields.
|
100
|
+
return []
|
101
|
+
|
102
|
+
|
103
|
+
def get_suggested_field_names(schema, graphql_type, field_name):
|
104
|
+
'''For the field name provided, determine if there are any similar field names
|
105
|
+
that may be the result of a typo.'''
|
106
|
+
|
107
|
+
if isinstance(graphql_type, (GraphQLInterfaceType, GraphQLObjectType)):
|
108
|
+
possible_field_names = list(graphql_type.fields.keys())
|
109
|
+
|
110
|
+
return suggestion_list(field_name, possible_field_names)
|
111
|
+
|
112
|
+
# Otherwise, must be a Union type, which does not define fields.
|
113
|
+
return []
|
@@ -0,0 +1,33 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language.printer import print_ast
|
3
|
+
from ...type.definition import is_composite_type
|
4
|
+
from .base import ValidationRule
|
5
|
+
|
6
|
+
|
7
|
+
class FragmentsOnCompositeTypes(ValidationRule):
|
8
|
+
|
9
|
+
def enter_InlineFragment(self, node, key, parent, path, ancestors):
|
10
|
+
type = self.context.get_type()
|
11
|
+
|
12
|
+
if node.type_condition and type and not is_composite_type(type):
|
13
|
+
self.context.report_error(GraphQLError(
|
14
|
+
self.inline_fragment_on_non_composite_error_message(print_ast(node.type_condition)),
|
15
|
+
[node.type_condition]
|
16
|
+
))
|
17
|
+
|
18
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
19
|
+
type = self.context.get_type()
|
20
|
+
|
21
|
+
if type and not is_composite_type(type):
|
22
|
+
self.context.report_error(GraphQLError(
|
23
|
+
self.fragment_on_non_composite_error_message(node.name.value, print_ast(node.type_condition)),
|
24
|
+
[node.type_condition]
|
25
|
+
))
|
26
|
+
|
27
|
+
@staticmethod
|
28
|
+
def inline_fragment_on_non_composite_error_message(type):
|
29
|
+
return 'Fragment cannot condition on non composite type "{}".'.format(type)
|
30
|
+
|
31
|
+
@staticmethod
|
32
|
+
def fragment_on_non_composite_error_message(frag_name, type):
|
33
|
+
return 'Fragment "{}" cannot condition on non composite type "{}".'.format(frag_name, type)
|
@@ -0,0 +1,70 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language import ast
|
3
|
+
from ...utils.quoted_or_list import quoted_or_list
|
4
|
+
from ...utils.suggestion_list import suggestion_list
|
5
|
+
from .base import ValidationRule
|
6
|
+
|
7
|
+
|
8
|
+
def _unknown_arg_message(arg_name, field_name, type, suggested_args):
|
9
|
+
message = 'Unknown argument "{}" on field "{}" of type "{}".'.format(arg_name, field_name, type)
|
10
|
+
if suggested_args:
|
11
|
+
message += ' Did you mean {}?'.format(quoted_or_list(suggested_args))
|
12
|
+
|
13
|
+
return message
|
14
|
+
|
15
|
+
|
16
|
+
def _unknown_directive_arg_message(arg_name, directive_name, suggested_args):
|
17
|
+
message = 'Unknown argument "{}" on directive "@{}".'.format(arg_name, directive_name)
|
18
|
+
if suggested_args:
|
19
|
+
message += ' Did you mean {}?'.format(quoted_or_list(suggested_args))
|
20
|
+
|
21
|
+
return message
|
22
|
+
|
23
|
+
|
24
|
+
class KnownArgumentNames(ValidationRule):
|
25
|
+
|
26
|
+
def enter_Argument(self, node, key, parent, path, ancestors):
|
27
|
+
argument_of = ancestors[-1]
|
28
|
+
|
29
|
+
if isinstance(argument_of, ast.Field):
|
30
|
+
field_def = self.context.get_field_def()
|
31
|
+
if not field_def:
|
32
|
+
return
|
33
|
+
|
34
|
+
field_arg_def = field_def.args.get(node.name.value)
|
35
|
+
|
36
|
+
if not field_arg_def:
|
37
|
+
parent_type = self.context.get_parent_type()
|
38
|
+
assert parent_type
|
39
|
+
self.context.report_error(GraphQLError(
|
40
|
+
_unknown_arg_message(
|
41
|
+
node.name.value,
|
42
|
+
argument_of.name.value,
|
43
|
+
parent_type.name,
|
44
|
+
suggestion_list(
|
45
|
+
node.name.value,
|
46
|
+
(arg_name for arg_name in field_def.args.keys())
|
47
|
+
)
|
48
|
+
),
|
49
|
+
[node]
|
50
|
+
))
|
51
|
+
|
52
|
+
elif isinstance(argument_of, ast.Directive):
|
53
|
+
directive = self.context.get_directive()
|
54
|
+
if not directive:
|
55
|
+
return
|
56
|
+
|
57
|
+
directive_arg_def = directive.args.get(node.name.value)
|
58
|
+
|
59
|
+
if not directive_arg_def:
|
60
|
+
self.context.report_error(GraphQLError(
|
61
|
+
_unknown_directive_arg_message(
|
62
|
+
node.name.value,
|
63
|
+
directive.name,
|
64
|
+
suggestion_list(
|
65
|
+
node.name.value,
|
66
|
+
(arg_name for arg_name in directive.args.keys())
|
67
|
+
)
|
68
|
+
),
|
69
|
+
[node]
|
70
|
+
))
|
@@ -0,0 +1,97 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language import ast
|
3
|
+
from ...type.directives import DirectiveLocation
|
4
|
+
from .base import ValidationRule
|
5
|
+
|
6
|
+
|
7
|
+
class KnownDirectives(ValidationRule):
|
8
|
+
|
9
|
+
def enter_Directive(self, node, key, parent, path, ancestors):
|
10
|
+
directive_def = next((
|
11
|
+
definition for definition in self.context.get_schema().get_directives()
|
12
|
+
if definition.name == node.name.value
|
13
|
+
), None)
|
14
|
+
|
15
|
+
if not directive_def:
|
16
|
+
return self.context.report_error(GraphQLError(
|
17
|
+
self.unknown_directive_message(node.name.value),
|
18
|
+
[node]
|
19
|
+
))
|
20
|
+
|
21
|
+
candidate_location = get_directive_location_for_ast_path(ancestors)
|
22
|
+
if not candidate_location:
|
23
|
+
self.context.report_error(GraphQLError(
|
24
|
+
self.misplaced_directive_message(node.name.value, node.type),
|
25
|
+
[node]
|
26
|
+
))
|
27
|
+
elif candidate_location not in directive_def.locations:
|
28
|
+
self.context.report_error(GraphQLError(
|
29
|
+
self.misplaced_directive_message(node.name.value, candidate_location),
|
30
|
+
[node]
|
31
|
+
))
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
def unknown_directive_message(directive_name):
|
35
|
+
return 'Unknown directive "{}".'.format(directive_name)
|
36
|
+
|
37
|
+
@staticmethod
|
38
|
+
def misplaced_directive_message(directive_name, location):
|
39
|
+
return 'Directive "{}" may not be used on "{}".'.format(directive_name, location)
|
40
|
+
|
41
|
+
|
42
|
+
_operation_definition_map = {
|
43
|
+
'query': DirectiveLocation.QUERY,
|
44
|
+
'mutation': DirectiveLocation.MUTATION,
|
45
|
+
'subscription': DirectiveLocation.SUBSCRIPTION,
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
def get_directive_location_for_ast_path(ancestors):
|
50
|
+
applied_to = ancestors[-1]
|
51
|
+
if isinstance(applied_to, ast.OperationDefinition):
|
52
|
+
return _operation_definition_map.get(applied_to.operation)
|
53
|
+
|
54
|
+
elif isinstance(applied_to, ast.Field):
|
55
|
+
return DirectiveLocation.FIELD
|
56
|
+
|
57
|
+
elif isinstance(applied_to, ast.FragmentSpread):
|
58
|
+
return DirectiveLocation.FRAGMENT_SPREAD
|
59
|
+
|
60
|
+
elif isinstance(applied_to, ast.InlineFragment):
|
61
|
+
return DirectiveLocation.INLINE_FRAGMENT
|
62
|
+
|
63
|
+
elif isinstance(applied_to, ast.FragmentDefinition):
|
64
|
+
return DirectiveLocation.FRAGMENT_DEFINITION
|
65
|
+
|
66
|
+
elif isinstance(applied_to, ast.SchemaDefinition):
|
67
|
+
return DirectiveLocation.SCHEMA
|
68
|
+
|
69
|
+
elif isinstance(applied_to, ast.ScalarTypeDefinition):
|
70
|
+
return DirectiveLocation.SCALAR
|
71
|
+
|
72
|
+
elif isinstance(applied_to, ast.ObjectTypeDefinition):
|
73
|
+
return DirectiveLocation.OBJECT
|
74
|
+
|
75
|
+
elif isinstance(applied_to, ast.FieldDefinition):
|
76
|
+
return DirectiveLocation.FIELD_DEFINITION
|
77
|
+
|
78
|
+
elif isinstance(applied_to, ast.InterfaceTypeDefinition):
|
79
|
+
return DirectiveLocation.INTERFACE
|
80
|
+
|
81
|
+
elif isinstance(applied_to, ast.UnionTypeDefinition):
|
82
|
+
return DirectiveLocation.UNION
|
83
|
+
|
84
|
+
elif isinstance(applied_to, ast.EnumTypeDefinition):
|
85
|
+
return DirectiveLocation.ENUM
|
86
|
+
|
87
|
+
elif isinstance(applied_to, ast.EnumValueDefinition):
|
88
|
+
return DirectiveLocation.ENUM_VALUE
|
89
|
+
|
90
|
+
elif isinstance(applied_to, ast.InputObjectTypeDefinition):
|
91
|
+
return DirectiveLocation.INPUT_OBJECT
|
92
|
+
|
93
|
+
elif isinstance(applied_to, ast.InputValueDefinition):
|
94
|
+
parent_node = ancestors[-3]
|
95
|
+
return (DirectiveLocation.INPUT_FIELD_DEFINITION
|
96
|
+
if isinstance(parent_node, ast.InputObjectTypeDefinition)
|
97
|
+
else DirectiveLocation.ARGUMENT_DEFINITION)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class KnownFragmentNames(ValidationRule):
|
6
|
+
|
7
|
+
def enter_FragmentSpread(self, node, key, parent, path, ancestors):
|
8
|
+
fragment_name = node.name.value
|
9
|
+
fragment = self.context.get_fragment(fragment_name)
|
10
|
+
|
11
|
+
if not fragment:
|
12
|
+
self.context.report_error(GraphQLError(
|
13
|
+
self.unknown_fragment_message(fragment_name),
|
14
|
+
[node.name]
|
15
|
+
))
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def unknown_fragment_message(fragment_name):
|
19
|
+
return 'Unknown fragment "{}".'.format(fragment_name)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...utils.quoted_or_list import quoted_or_list
|
3
|
+
from ...utils.suggestion_list import suggestion_list
|
4
|
+
from .base import ValidationRule
|
5
|
+
|
6
|
+
|
7
|
+
def _unknown_type_message(type, suggested_types):
|
8
|
+
message = 'Unknown type "{}".'.format(type)
|
9
|
+
if suggested_types:
|
10
|
+
message += ' Perhaps you meant {}?'.format(quoted_or_list(suggested_types))
|
11
|
+
|
12
|
+
return message
|
13
|
+
|
14
|
+
|
15
|
+
class KnownTypeNames(ValidationRule):
|
16
|
+
|
17
|
+
def enter_ObjectTypeDefinition(self, node, *args):
|
18
|
+
return False
|
19
|
+
|
20
|
+
def enter_InterfaceTypeDefinition(self, node, *args):
|
21
|
+
return False
|
22
|
+
|
23
|
+
def enter_UnionTypeDefinition(self, node, *args):
|
24
|
+
return False
|
25
|
+
|
26
|
+
def enter_InputObjectTypeDefinition(self, node, *args):
|
27
|
+
return False
|
28
|
+
|
29
|
+
def enter_NamedType(self, node, *args):
|
30
|
+
schema = self.context.get_schema()
|
31
|
+
type_name = node.name.value
|
32
|
+
type = schema.get_type(type_name)
|
33
|
+
|
34
|
+
if not type:
|
35
|
+
self.context.report_error(
|
36
|
+
GraphQLError(
|
37
|
+
_unknown_type_message(
|
38
|
+
type_name,
|
39
|
+
suggestion_list(type_name, list(schema.get_type_map().keys()))
|
40
|
+
),
|
41
|
+
[node]
|
42
|
+
)
|
43
|
+
)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language import ast
|
3
|
+
from .base import ValidationRule
|
4
|
+
|
5
|
+
|
6
|
+
class LoneAnonymousOperation(ValidationRule):
|
7
|
+
__slots__ = 'operation_count',
|
8
|
+
|
9
|
+
def __init__(self, context):
|
10
|
+
self.operation_count = 0
|
11
|
+
super(LoneAnonymousOperation, self).__init__(context)
|
12
|
+
|
13
|
+
def enter_Document(self, node, key, parent, path, ancestors):
|
14
|
+
self.operation_count = \
|
15
|
+
sum(1 for definition in node.definitions if isinstance(definition, ast.OperationDefinition))
|
16
|
+
|
17
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
18
|
+
if not node.name and self.operation_count > 1:
|
19
|
+
self.context.report_error(GraphQLError(self.anonymous_operation_not_alone_message(), [node]))
|
20
|
+
|
21
|
+
@staticmethod
|
22
|
+
def anonymous_operation_not_alone_message():
|
23
|
+
return 'This anonymous operation must be the only defined operation.'
|
@@ -0,0 +1,59 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class NoFragmentCycles(ValidationRule):
|
6
|
+
__slots__ = 'errors', 'visited_frags', 'spread_path', 'spread_path_index_by_name'
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(NoFragmentCycles, self).__init__(context)
|
10
|
+
self.errors = []
|
11
|
+
self.visited_frags = set()
|
12
|
+
self.spread_path = []
|
13
|
+
self.spread_path_index_by_name = {}
|
14
|
+
|
15
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
16
|
+
return False
|
17
|
+
|
18
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
19
|
+
if node.name.value not in self.visited_frags:
|
20
|
+
self.detect_cycle_recursive(node)
|
21
|
+
return False
|
22
|
+
|
23
|
+
def detect_cycle_recursive(self, fragment):
|
24
|
+
fragment_name = fragment.name.value
|
25
|
+
self.visited_frags.add(fragment_name)
|
26
|
+
|
27
|
+
spread_nodes = self.context.get_fragment_spreads(fragment.selection_set)
|
28
|
+
if not spread_nodes:
|
29
|
+
return
|
30
|
+
|
31
|
+
self.spread_path_index_by_name[fragment_name] = len(self.spread_path)
|
32
|
+
|
33
|
+
for spread_node in spread_nodes:
|
34
|
+
spread_name = spread_node.name.value
|
35
|
+
cycle_index = self.spread_path_index_by_name.get(spread_name)
|
36
|
+
|
37
|
+
if cycle_index is None:
|
38
|
+
self.spread_path.append(spread_node)
|
39
|
+
if spread_name not in self.visited_frags:
|
40
|
+
spread_fragment = self.context.get_fragment(spread_name)
|
41
|
+
if spread_fragment:
|
42
|
+
self.detect_cycle_recursive(spread_fragment)
|
43
|
+
self.spread_path.pop()
|
44
|
+
else:
|
45
|
+
cycle_path = self.spread_path[cycle_index:]
|
46
|
+
self.context.report_error(GraphQLError(
|
47
|
+
self.cycle_error_message(
|
48
|
+
spread_name,
|
49
|
+
[s.name.value for s in cycle_path]
|
50
|
+
),
|
51
|
+
cycle_path + [spread_node]
|
52
|
+
))
|
53
|
+
|
54
|
+
self.spread_path_index_by_name[fragment_name] = None
|
55
|
+
|
56
|
+
@staticmethod
|
57
|
+
def cycle_error_message(fragment_name, spread_names):
|
58
|
+
via = ' via {}'.format(', '.join(spread_names)) if spread_names else ''
|
59
|
+
return 'Cannot spread fragment "{}" within itself{}.'.format(fragment_name, via)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class NoUndefinedVariables(ValidationRule):
|
6
|
+
__slots__ = 'defined_variable_names',
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
self.defined_variable_names = set()
|
10
|
+
super(NoUndefinedVariables, self).__init__(context)
|
11
|
+
|
12
|
+
@staticmethod
|
13
|
+
def undefined_var_message(var_name, op_name=None):
|
14
|
+
if op_name:
|
15
|
+
return 'Variable "${}" is not defined by operation "{}".'.format(
|
16
|
+
var_name, op_name
|
17
|
+
)
|
18
|
+
return 'Variable "${}" is not defined.'.format(var_name)
|
19
|
+
|
20
|
+
def enter_OperationDefinition(self, operation, key, parent, path, ancestors):
|
21
|
+
self.defined_variable_names = set()
|
22
|
+
|
23
|
+
def leave_OperationDefinition(self, operation, key, parent, path, ancestors):
|
24
|
+
usages = self.context.get_recursive_variable_usages(operation)
|
25
|
+
|
26
|
+
for variable_usage in usages:
|
27
|
+
node = variable_usage.node
|
28
|
+
var_name = node.name.value
|
29
|
+
if var_name not in self.defined_variable_names:
|
30
|
+
self.context.report_error(GraphQLError(
|
31
|
+
self.undefined_var_message(var_name, operation.name and operation.name.value),
|
32
|
+
[node, operation]
|
33
|
+
))
|
34
|
+
|
35
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
36
|
+
self.defined_variable_names.add(node.variable.name.value)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class NoUnusedFragments(ValidationRule):
|
6
|
+
__slots__ = 'fragment_definitions', 'operation_definitions', 'fragment_adjacencies', 'spread_names'
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(NoUnusedFragments, self).__init__(context)
|
10
|
+
self.operation_definitions = []
|
11
|
+
self.fragment_definitions = []
|
12
|
+
|
13
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
14
|
+
self.operation_definitions.append(node)
|
15
|
+
return False
|
16
|
+
|
17
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
18
|
+
self.fragment_definitions.append(node)
|
19
|
+
return False
|
20
|
+
|
21
|
+
def leave_Document(self, node, key, parent, path, ancestors):
|
22
|
+
fragment_names_used = set()
|
23
|
+
|
24
|
+
for operation in self.operation_definitions:
|
25
|
+
fragments = self.context.get_recursively_referenced_fragments(operation)
|
26
|
+
for fragment in fragments:
|
27
|
+
fragment_names_used.add(fragment.name.value)
|
28
|
+
|
29
|
+
for fragment_definition in self.fragment_definitions:
|
30
|
+
if fragment_definition.name.value not in fragment_names_used:
|
31
|
+
self.context.report_error(GraphQLError(
|
32
|
+
self.unused_fragment_message(fragment_definition.name.value),
|
33
|
+
[fragment_definition]
|
34
|
+
))
|
35
|
+
|
36
|
+
@staticmethod
|
37
|
+
def unused_fragment_message(fragment_name):
|
38
|
+
return 'Fragment "{}" is never used.'.format(fragment_name)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class NoUnusedVariables(ValidationRule):
|
6
|
+
__slots__ = 'variable_definitions'
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
self.variable_definitions = []
|
10
|
+
super(NoUnusedVariables, self).__init__(context)
|
11
|
+
|
12
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
13
|
+
self.variable_definitions = []
|
14
|
+
|
15
|
+
def leave_OperationDefinition(self, operation, key, parent, path, ancestors):
|
16
|
+
variable_name_used = set()
|
17
|
+
usages = self.context.get_recursive_variable_usages(operation)
|
18
|
+
op_name = operation.name and operation.name.value or None
|
19
|
+
|
20
|
+
for variable_usage in usages:
|
21
|
+
variable_name_used.add(variable_usage.node.name.value)
|
22
|
+
|
23
|
+
for variable_definition in self.variable_definitions:
|
24
|
+
if variable_definition.variable.name.value not in variable_name_used:
|
25
|
+
self.context.report_error(GraphQLError(
|
26
|
+
self.unused_variable_message(variable_definition.variable.name.value, op_name),
|
27
|
+
[variable_definition]
|
28
|
+
))
|
29
|
+
|
30
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
31
|
+
self.variable_definitions.append(node)
|
32
|
+
|
33
|
+
@staticmethod
|
34
|
+
def unused_variable_message(variable_name, op_name):
|
35
|
+
if op_name:
|
36
|
+
return 'Variable "${}" is never used in operation "{}".'.format(variable_name, op_name)
|
37
|
+
return 'Variable "${}" is never used.'.format(variable_name)
|