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,28 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class UniqueFragmentNames(ValidationRule):
|
6
|
+
__slots__ = 'known_fragment_names',
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(UniqueFragmentNames, self).__init__(context)
|
10
|
+
self.known_fragment_names = {}
|
11
|
+
|
12
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
13
|
+
return False
|
14
|
+
|
15
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
16
|
+
fragment_name = node.name.value
|
17
|
+
if fragment_name in self.known_fragment_names:
|
18
|
+
self.context.report_error(GraphQLError(
|
19
|
+
self.duplicate_fragment_name_message(fragment_name),
|
20
|
+
[self.known_fragment_names[fragment_name], node.name]
|
21
|
+
))
|
22
|
+
else:
|
23
|
+
self.known_fragment_names[fragment_name] = node.name
|
24
|
+
return False
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def duplicate_fragment_name_message(field):
|
28
|
+
return 'There can only be one fragment named "{}".'.format(field)
|
@@ -0,0 +1,33 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class UniqueInputFieldNames(ValidationRule):
|
6
|
+
__slots__ = 'known_names', 'known_names_stack'
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(UniqueInputFieldNames, self).__init__(context)
|
10
|
+
self.known_names = {}
|
11
|
+
self.known_names_stack = []
|
12
|
+
|
13
|
+
def enter_ObjectValue(self, node, key, parent, path, ancestors):
|
14
|
+
self.known_names_stack.append(self.known_names)
|
15
|
+
self.known_names = {}
|
16
|
+
|
17
|
+
def leave_ObjectValue(self, node, key, parent, path, ancestors):
|
18
|
+
self.known_names = self.known_names_stack.pop()
|
19
|
+
|
20
|
+
def enter_ObjectField(self, node, key, parent, path, ancestors):
|
21
|
+
field_name = node.name.value
|
22
|
+
if field_name in self.known_names:
|
23
|
+
self.context.report_error(GraphQLError(
|
24
|
+
self.duplicate_input_field_message(field_name),
|
25
|
+
[self.known_names[field_name], node.name]
|
26
|
+
))
|
27
|
+
else:
|
28
|
+
self.known_names[field_name] = node.name
|
29
|
+
return False
|
30
|
+
|
31
|
+
@staticmethod
|
32
|
+
def duplicate_input_field_message(field_name):
|
33
|
+
return 'There can only be one input field named "{}".'.format(field_name)
|
@@ -0,0 +1,31 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class UniqueOperationNames(ValidationRule):
|
6
|
+
__slots__ = 'known_operation_names',
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(UniqueOperationNames, self).__init__(context)
|
10
|
+
self.known_operation_names = {}
|
11
|
+
|
12
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
13
|
+
operation_name = node.name
|
14
|
+
if not operation_name:
|
15
|
+
return
|
16
|
+
|
17
|
+
if operation_name.value in self.known_operation_names:
|
18
|
+
self.context.report_error(GraphQLError(
|
19
|
+
self.duplicate_operation_name_message(operation_name.value),
|
20
|
+
[self.known_operation_names[operation_name.value], operation_name]
|
21
|
+
))
|
22
|
+
else:
|
23
|
+
self.known_operation_names[operation_name.value] = operation_name
|
24
|
+
return False
|
25
|
+
|
26
|
+
def enter_FragmentDefinition(self, node, key, parent, path, ancestors):
|
27
|
+
return False
|
28
|
+
|
29
|
+
@staticmethod
|
30
|
+
def duplicate_operation_name_message(operation_name):
|
31
|
+
return 'There can only be one operation named "{}".'.format(operation_name)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from .base import ValidationRule
|
3
|
+
|
4
|
+
|
5
|
+
class UniqueVariableNames(ValidationRule):
|
6
|
+
__slots__ = 'known_variable_names',
|
7
|
+
|
8
|
+
def __init__(self, context):
|
9
|
+
super(UniqueVariableNames, self).__init__(context)
|
10
|
+
self.known_variable_names = {}
|
11
|
+
|
12
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
13
|
+
self.known_variable_names = {}
|
14
|
+
|
15
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
16
|
+
variable_name = node.variable.name.value
|
17
|
+
if variable_name in self.known_variable_names:
|
18
|
+
self.context.report_error(GraphQLError(
|
19
|
+
self.duplicate_variable_message(variable_name),
|
20
|
+
[self.known_variable_names[variable_name], node.variable.name]
|
21
|
+
))
|
22
|
+
else:
|
23
|
+
self.known_variable_names[variable_name] = node.variable.name
|
24
|
+
|
25
|
+
@staticmethod
|
26
|
+
def duplicate_variable_message(operation_name):
|
27
|
+
return 'There can be only one variable named "{}".'.format(operation_name)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...language.printer import print_ast
|
3
|
+
from ...type.definition import is_input_type
|
4
|
+
from ...utils.type_from_ast import type_from_ast
|
5
|
+
from .base import ValidationRule
|
6
|
+
|
7
|
+
|
8
|
+
class VariablesAreInputTypes(ValidationRule):
|
9
|
+
|
10
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
11
|
+
type = type_from_ast(self.context.get_schema(), node.type)
|
12
|
+
|
13
|
+
if type and not is_input_type(type):
|
14
|
+
self.context.report_error(GraphQLError(
|
15
|
+
self.non_input_type_on_variable_message(node.variable.name.value, print_ast(node.type)),
|
16
|
+
[node.type]
|
17
|
+
))
|
18
|
+
|
19
|
+
@staticmethod
|
20
|
+
def non_input_type_on_variable_message(variable_name, type_name):
|
21
|
+
return 'Variable "${}" cannot be non-input type "{}".'.format(variable_name, type_name)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
from ...error import GraphQLError
|
2
|
+
from ...type.definition import GraphQLNonNull
|
3
|
+
from ...utils.type_comparators import is_type_sub_type_of
|
4
|
+
from ...utils.type_from_ast import type_from_ast
|
5
|
+
from .base import ValidationRule
|
6
|
+
|
7
|
+
|
8
|
+
class VariablesInAllowedPosition(ValidationRule):
|
9
|
+
__slots__ = 'var_def_map'
|
10
|
+
|
11
|
+
def __init__(self, context):
|
12
|
+
super(VariablesInAllowedPosition, self).__init__(context)
|
13
|
+
self.var_def_map = {}
|
14
|
+
|
15
|
+
def enter_OperationDefinition(self, node, key, parent, path, ancestors):
|
16
|
+
self.var_def_map = {}
|
17
|
+
|
18
|
+
def leave_OperationDefinition(self, operation, key, parent, path, ancestors):
|
19
|
+
usages = self.context.get_recursive_variable_usages(operation)
|
20
|
+
|
21
|
+
for usage in usages:
|
22
|
+
node = usage.node
|
23
|
+
type = usage.type
|
24
|
+
var_name = node.name.value
|
25
|
+
var_def = self.var_def_map.get(var_name)
|
26
|
+
if var_def and type:
|
27
|
+
# A var type is allowed if it is the same or more strict (e.g. is
|
28
|
+
# a subtype of) than the expected type. It can be more strict if
|
29
|
+
# the variable type is non-null when the expected type is nullable.
|
30
|
+
# If both are list types, the variable item type can be more strict
|
31
|
+
# than the expected item type (contravariant).
|
32
|
+
schema = self.context.get_schema()
|
33
|
+
var_type = type_from_ast(schema, var_def.type)
|
34
|
+
if var_type and not is_type_sub_type_of(schema, self.effective_type(var_type, var_def), type):
|
35
|
+
self.context.report_error(GraphQLError(
|
36
|
+
self.bad_var_pos_message(var_name, var_type, type),
|
37
|
+
[var_def, node]
|
38
|
+
))
|
39
|
+
|
40
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
41
|
+
self.var_def_map[node.variable.name.value] = node
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def effective_type(var_type, var_def):
|
45
|
+
if not var_def.default_value or isinstance(var_type, GraphQLNonNull):
|
46
|
+
return var_type
|
47
|
+
|
48
|
+
return GraphQLNonNull(var_type)
|
49
|
+
|
50
|
+
@staticmethod
|
51
|
+
def bad_var_pos_message(var_name, var_type, expected_type):
|
52
|
+
return 'Variable "{}" of type "{}" used in position expecting type "{}".'.format(var_name, var_type,
|
53
|
+
expected_type)
|
@@ -0,0 +1,158 @@
|
|
1
|
+
from ..language.ast import (FragmentDefinition, FragmentSpread,
|
2
|
+
OperationDefinition)
|
3
|
+
from ..language.visitor import ParallelVisitor, TypeInfoVisitor, Visitor, visit
|
4
|
+
from ..type import GraphQLSchema
|
5
|
+
from ..utils.type_info import TypeInfo
|
6
|
+
from .rules import specified_rules
|
7
|
+
|
8
|
+
|
9
|
+
def validate(schema, ast, rules=specified_rules):
|
10
|
+
assert schema, 'Must provide schema'
|
11
|
+
assert ast, 'Must provide document'
|
12
|
+
assert isinstance(schema, GraphQLSchema)
|
13
|
+
type_info = TypeInfo(schema)
|
14
|
+
return visit_using_rules(schema, type_info, ast, rules)
|
15
|
+
|
16
|
+
|
17
|
+
def visit_using_rules(schema, type_info, ast, rules):
|
18
|
+
context = ValidationContext(schema, ast, type_info)
|
19
|
+
visitors = [rule(context) for rule in rules]
|
20
|
+
visit(ast, TypeInfoVisitor(type_info, ParallelVisitor(visitors)))
|
21
|
+
return context.get_errors()
|
22
|
+
|
23
|
+
|
24
|
+
class VariableUsage(object):
|
25
|
+
__slots__ = 'node', 'type'
|
26
|
+
|
27
|
+
def __init__(self, node, type):
|
28
|
+
self.node = node
|
29
|
+
self.type = type
|
30
|
+
|
31
|
+
|
32
|
+
class UsageVisitor(Visitor):
|
33
|
+
__slots__ = 'usages', 'type_info'
|
34
|
+
|
35
|
+
def __init__(self, usages, type_info):
|
36
|
+
self.usages = usages
|
37
|
+
self.type_info = type_info
|
38
|
+
|
39
|
+
def enter_VariableDefinition(self, node, key, parent, path, ancestors):
|
40
|
+
return False
|
41
|
+
|
42
|
+
def enter_Variable(self, node, key, parent, path, ancestors):
|
43
|
+
usage = VariableUsage(node, type=self.type_info.get_input_type())
|
44
|
+
self.usages.append(usage)
|
45
|
+
|
46
|
+
|
47
|
+
class ValidationContext(object):
|
48
|
+
__slots__ = ('_schema', '_ast', '_type_info', '_errors', '_fragments', '_fragment_spreads',
|
49
|
+
'_recursively_referenced_fragments', '_variable_usages', '_recursive_variable_usages')
|
50
|
+
|
51
|
+
def __init__(self, schema, ast, type_info):
|
52
|
+
self._schema = schema
|
53
|
+
self._ast = ast
|
54
|
+
self._type_info = type_info
|
55
|
+
self._errors = []
|
56
|
+
self._fragments = None
|
57
|
+
self._fragment_spreads = {}
|
58
|
+
self._recursively_referenced_fragments = {}
|
59
|
+
self._variable_usages = {}
|
60
|
+
self._recursive_variable_usages = {}
|
61
|
+
|
62
|
+
def report_error(self, error):
|
63
|
+
self._errors.append(error)
|
64
|
+
|
65
|
+
def get_errors(self):
|
66
|
+
return self._errors
|
67
|
+
|
68
|
+
def get_schema(self):
|
69
|
+
return self._schema
|
70
|
+
|
71
|
+
def get_variable_usages(self, node):
|
72
|
+
usages = self._variable_usages.get(node)
|
73
|
+
if usages is None:
|
74
|
+
usages = []
|
75
|
+
sub_visitor = UsageVisitor(usages, self._type_info)
|
76
|
+
visit(node, TypeInfoVisitor(self._type_info, sub_visitor))
|
77
|
+
self._variable_usages[node] = usages
|
78
|
+
|
79
|
+
return usages
|
80
|
+
|
81
|
+
def get_recursive_variable_usages(self, operation):
|
82
|
+
assert isinstance(operation, OperationDefinition)
|
83
|
+
usages = self._recursive_variable_usages.get(operation)
|
84
|
+
if usages is None:
|
85
|
+
usages = self.get_variable_usages(operation)
|
86
|
+
fragments = self.get_recursively_referenced_fragments(operation)
|
87
|
+
for fragment in fragments:
|
88
|
+
usages.extend(self.get_variable_usages(fragment))
|
89
|
+
self._recursive_variable_usages[operation] = usages
|
90
|
+
|
91
|
+
return usages
|
92
|
+
|
93
|
+
def get_recursively_referenced_fragments(self, operation):
|
94
|
+
assert isinstance(operation, OperationDefinition)
|
95
|
+
fragments = self._recursively_referenced_fragments.get(operation)
|
96
|
+
if not fragments:
|
97
|
+
fragments = []
|
98
|
+
collected_names = set()
|
99
|
+
nodes_to_visit = [operation.selection_set]
|
100
|
+
while nodes_to_visit:
|
101
|
+
node = nodes_to_visit.pop()
|
102
|
+
spreads = self.get_fragment_spreads(node)
|
103
|
+
for spread in spreads:
|
104
|
+
frag_name = spread.name.value
|
105
|
+
if frag_name not in collected_names:
|
106
|
+
collected_names.add(frag_name)
|
107
|
+
fragment = self.get_fragment(frag_name)
|
108
|
+
if fragment:
|
109
|
+
fragments.append(fragment)
|
110
|
+
nodes_to_visit.append(fragment.selection_set)
|
111
|
+
self._recursively_referenced_fragments[operation] = fragments
|
112
|
+
return fragments
|
113
|
+
|
114
|
+
def get_fragment_spreads(self, node):
|
115
|
+
spreads = self._fragment_spreads.get(node)
|
116
|
+
if not spreads:
|
117
|
+
spreads = []
|
118
|
+
sets_to_visit = [node]
|
119
|
+
while sets_to_visit:
|
120
|
+
_set = sets_to_visit.pop()
|
121
|
+
for selection in _set.selections:
|
122
|
+
if isinstance(selection, FragmentSpread):
|
123
|
+
spreads.append(selection)
|
124
|
+
elif selection.selection_set:
|
125
|
+
sets_to_visit.append(selection.selection_set)
|
126
|
+
|
127
|
+
self._fragment_spreads[node] = spreads
|
128
|
+
return spreads
|
129
|
+
|
130
|
+
def get_ast(self):
|
131
|
+
return self._ast
|
132
|
+
|
133
|
+
def get_fragment(self, name):
|
134
|
+
fragments = self._fragments
|
135
|
+
if fragments is None:
|
136
|
+
self._fragments = fragments = {}
|
137
|
+
for statement in self.get_ast().definitions:
|
138
|
+
if isinstance(statement, FragmentDefinition):
|
139
|
+
fragments[statement.name.value] = statement
|
140
|
+
return fragments.get(name)
|
141
|
+
|
142
|
+
def get_type(self):
|
143
|
+
return self._type_info.get_type()
|
144
|
+
|
145
|
+
def get_parent_type(self):
|
146
|
+
return self._type_info.get_parent_type()
|
147
|
+
|
148
|
+
def get_input_type(self):
|
149
|
+
return self._type_info.get_input_type()
|
150
|
+
|
151
|
+
def get_field_def(self):
|
152
|
+
return self._type_info.get_field_def()
|
153
|
+
|
154
|
+
def get_directive(self):
|
155
|
+
return self._type_info.get_directive()
|
156
|
+
|
157
|
+
def get_argument(self):
|
158
|
+
return self._type_info.get_argument()
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Configuration for pytest to automatically collect types.
|
2
|
+
# Thanks to Guilherme Salgado.
|
3
|
+
import pytest
|
4
|
+
|
5
|
+
try:
|
6
|
+
import pyannotate_runtime
|
7
|
+
PYANOTATE_PRESENT = True
|
8
|
+
except ImportError:
|
9
|
+
PYANOTATE_PRESENT = False
|
10
|
+
|
11
|
+
if PYANOTATE_PRESENT:
|
12
|
+
def pytest_collection_finish(session):
|
13
|
+
"""Handle the pytest collection finish hook: configure pyannotate.
|
14
|
+
Explicitly delay importing `collect_types` until all tests have
|
15
|
+
been collected. This gives gevent a chance to monkey patch the
|
16
|
+
world before importing pyannotate.
|
17
|
+
"""
|
18
|
+
from pyannotate_runtime import collect_types
|
19
|
+
collect_types.init_types_collection()
|
20
|
+
|
21
|
+
@pytest.fixture(autouse=True)
|
22
|
+
def collect_types_fixture():
|
23
|
+
from pyannotate_runtime import collect_types
|
24
|
+
collect_types.resume()
|
25
|
+
yield
|
26
|
+
collect_types.pause()
|
27
|
+
|
28
|
+
def pytest_sessionfinish(session, exitstatus):
|
29
|
+
from pyannotate_runtime import collect_types
|
30
|
+
collect_types.dump_stats("type_info.json")
|
@@ -0,0 +1,64 @@
|
|
1
|
+
import sys
|
2
|
+
from setuptools import setup, find_packages
|
3
|
+
|
4
|
+
if sys.version_info[0] < 3:
|
5
|
+
import __builtin__ as builtins
|
6
|
+
else:
|
7
|
+
import builtins
|
8
|
+
|
9
|
+
builtins.__SETUP__ = True
|
10
|
+
|
11
|
+
version = __import__("promise").get_version()
|
12
|
+
|
13
|
+
|
14
|
+
IS_PY3 = sys.hexversion >= 0x03000000
|
15
|
+
|
16
|
+
tests_require = [
|
17
|
+
"pytest>=2.7.3",
|
18
|
+
"pytest-cov",
|
19
|
+
"coveralls",
|
20
|
+
"futures",
|
21
|
+
"pytest-benchmark",
|
22
|
+
"mock",
|
23
|
+
]
|
24
|
+
if IS_PY3:
|
25
|
+
tests_require += ["pytest-asyncio"]
|
26
|
+
|
27
|
+
|
28
|
+
setup(
|
29
|
+
name="promise",
|
30
|
+
version=version,
|
31
|
+
description="Promises/A+ implementation for Python",
|
32
|
+
long_description=open("README.rst").read(),
|
33
|
+
url="https://github.com/syrusakbary/promise",
|
34
|
+
download_url="https://github.com/syrusakbary/promise/releases",
|
35
|
+
author="Syrus Akbary",
|
36
|
+
author_email="me@syrusakbary.com",
|
37
|
+
license="MIT",
|
38
|
+
classifiers=[
|
39
|
+
"Development Status :: 5 - Production/Stable",
|
40
|
+
"Intended Audience :: Developers",
|
41
|
+
"Topic :: Software Development :: Libraries",
|
42
|
+
"Programming Language :: Python :: 2",
|
43
|
+
"Programming Language :: Python :: 2.7",
|
44
|
+
"Programming Language :: Python :: 3",
|
45
|
+
"Programming Language :: Python :: 3.3",
|
46
|
+
"Programming Language :: Python :: 3.4",
|
47
|
+
"Programming Language :: Python :: 3.5",
|
48
|
+
"Programming Language :: Python :: 3.6",
|
49
|
+
"Programming Language :: Python :: 3.7",
|
50
|
+
"Programming Language :: Python :: 3.8",
|
51
|
+
"Programming Language :: Python :: Implementation :: PyPy",
|
52
|
+
"License :: OSI Approved :: MIT License",
|
53
|
+
],
|
54
|
+
keywords="concurrent future deferred promise",
|
55
|
+
packages=find_packages(exclude=["tests"]),
|
56
|
+
# PEP-561: https://www.python.org/dev/peps/pep-0561/
|
57
|
+
package_data={"promise": ["py.typed"]},
|
58
|
+
extras_require={"test": tests_require},
|
59
|
+
install_requires=[
|
60
|
+
"typing>=3.6.4; python_version < '3.5'",
|
61
|
+
"six"
|
62
|
+
],
|
63
|
+
tests_require=tests_require,
|
64
|
+
)
|
File without changes
|
@@ -0,0 +1,8 @@
|
|
1
|
+
from sys import version_info
|
2
|
+
|
3
|
+
collect_ignore = []
|
4
|
+
if version_info[:2] < (3, 4):
|
5
|
+
collect_ignore.append("test_awaitable.py")
|
6
|
+
if version_info[:2] < (3, 5):
|
7
|
+
collect_ignore.append("test_awaitable_35.py")
|
8
|
+
collect_ignore.append("test_dataloader_awaitable_35.py")
|
@@ -0,0 +1,32 @@
|
|
1
|
+
from asyncio import coroutine
|
2
|
+
from pytest import mark
|
3
|
+
from time import sleep
|
4
|
+
from promise import Promise
|
5
|
+
|
6
|
+
|
7
|
+
@mark.asyncio
|
8
|
+
@coroutine
|
9
|
+
def test_await():
|
10
|
+
yield from Promise.resolve(True)
|
11
|
+
|
12
|
+
|
13
|
+
@mark.asyncio
|
14
|
+
@coroutine
|
15
|
+
def test_await_time():
|
16
|
+
def resolve_or_reject(resolve, reject):
|
17
|
+
sleep(.1)
|
18
|
+
resolve(True)
|
19
|
+
|
20
|
+
p = Promise(resolve_or_reject)
|
21
|
+
assert p.get() is True
|
22
|
+
|
23
|
+
|
24
|
+
@mark.asyncio
|
25
|
+
@coroutine
|
26
|
+
def test_promise_coroutine():
|
27
|
+
@coroutine
|
28
|
+
def my_coro():
|
29
|
+
yield from Promise.resolve(True)
|
30
|
+
|
31
|
+
promise = Promise.resolve(my_coro())
|
32
|
+
assert isinstance(promise, Promise)
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from asyncio import sleep, Future, wait, FIRST_COMPLETED
|
2
|
+
from pytest import mark
|
3
|
+
from promise import Promise, is_thenable
|
4
|
+
|
5
|
+
|
6
|
+
@mark.asyncio
|
7
|
+
async def test_await():
|
8
|
+
assert await Promise.resolve(True)
|
9
|
+
|
10
|
+
|
11
|
+
@mark.asyncio
|
12
|
+
async def test_promisify_coroutine():
|
13
|
+
async def my_coroutine():
|
14
|
+
await sleep(.01)
|
15
|
+
return True
|
16
|
+
|
17
|
+
assert await Promise.resolve(my_coroutine())
|
18
|
+
|
19
|
+
|
20
|
+
@mark.asyncio
|
21
|
+
async def test_coroutine_is_thenable():
|
22
|
+
async def my_coroutine():
|
23
|
+
await sleep(.01)
|
24
|
+
return True
|
25
|
+
|
26
|
+
assert is_thenable(my_coroutine())
|
27
|
+
|
28
|
+
|
29
|
+
@mark.asyncio
|
30
|
+
async def test_promisify_future():
|
31
|
+
future = Future()
|
32
|
+
future.set_result(True)
|
33
|
+
assert await Promise.resolve(future)
|
34
|
+
|
35
|
+
|
36
|
+
@mark.asyncio
|
37
|
+
async def test_await_in_safe_promise():
|
38
|
+
async def inner():
|
39
|
+
@Promise.safe
|
40
|
+
def x():
|
41
|
+
promise = Promise.resolve(True).then(lambda x: x)
|
42
|
+
return promise
|
43
|
+
|
44
|
+
return await x()
|
45
|
+
|
46
|
+
result = await inner()
|
47
|
+
assert result == True
|
@@ -0,0 +1,116 @@
|
|
1
|
+
from pytest import raises
|
2
|
+
import time
|
3
|
+
from promise import Promise, promisify, is_thenable
|
4
|
+
|
5
|
+
|
6
|
+
def test_benchmark_promise_creation(benchmark):
|
7
|
+
@benchmark
|
8
|
+
def create_promise(): # unnecessary function call
|
9
|
+
p = Promise()
|
10
|
+
|
11
|
+
|
12
|
+
def test_benchmark_promise_resolve(benchmark):
|
13
|
+
def create_promise():
|
14
|
+
return Promise.resolve(True)
|
15
|
+
|
16
|
+
result = benchmark(create_promise).get()
|
17
|
+
assert result == True
|
18
|
+
|
19
|
+
|
20
|
+
def test_benchmark_is_thenable_basic_type(benchmark):
|
21
|
+
def create_promise():
|
22
|
+
return is_thenable(True)
|
23
|
+
|
24
|
+
result = benchmark(create_promise)
|
25
|
+
assert result == False
|
26
|
+
|
27
|
+
|
28
|
+
def test_benchmark_is_thenable_custom_type(benchmark):
|
29
|
+
class MyType(object):
|
30
|
+
pass
|
31
|
+
|
32
|
+
my_type_instance = MyType()
|
33
|
+
|
34
|
+
def create_promise():
|
35
|
+
return is_thenable(my_type_instance)
|
36
|
+
|
37
|
+
result = benchmark(create_promise)
|
38
|
+
assert result == False
|
39
|
+
|
40
|
+
|
41
|
+
def test_benchmark_promise_creation_with_resolve(benchmark):
|
42
|
+
do_resolve = lambda resolve, reject: resolve(True)
|
43
|
+
|
44
|
+
def create_promise(): # unnecessary function call
|
45
|
+
p = Promise(do_resolve)
|
46
|
+
# p._wait()
|
47
|
+
return p
|
48
|
+
|
49
|
+
result = benchmark(create_promise).get()
|
50
|
+
assert result == True
|
51
|
+
|
52
|
+
|
53
|
+
def test_benchmark_promise_creation_with_reject(benchmark):
|
54
|
+
do_resolve = lambda resolve, reject: reject(Exception("Error"))
|
55
|
+
|
56
|
+
def create_promise(): # unnecessary function call
|
57
|
+
p = Promise(do_resolve)
|
58
|
+
# p._wait()
|
59
|
+
return p
|
60
|
+
|
61
|
+
with raises(Exception) as exc_info:
|
62
|
+
result = benchmark(create_promise).get()
|
63
|
+
|
64
|
+
assert str(exc_info.value) == "Error"
|
65
|
+
|
66
|
+
|
67
|
+
# def test_benchmark_promisify_promise(benchmark):
|
68
|
+
# instance = Promise()
|
69
|
+
|
70
|
+
# def create_promise(): # unnecessary function call
|
71
|
+
# return promisify(instance)
|
72
|
+
|
73
|
+
# result = benchmark(create_promise)
|
74
|
+
|
75
|
+
# assert isinstance(result, Promise)
|
76
|
+
|
77
|
+
|
78
|
+
def test_benchmark_promisify_custom_type(benchmark):
|
79
|
+
class CustomThenable(object):
|
80
|
+
pass
|
81
|
+
# def then(self, resolve, reject):
|
82
|
+
# return resolve(True)
|
83
|
+
|
84
|
+
instance = CustomThenable()
|
85
|
+
|
86
|
+
def create_promise(): # unnecessary function call
|
87
|
+
return Promise.resolve(instance)
|
88
|
+
|
89
|
+
result = benchmark(create_promise)
|
90
|
+
|
91
|
+
assert isinstance(result, Promise)
|
92
|
+
assert result.get() == instance
|
93
|
+
|
94
|
+
|
95
|
+
def test_benchmark_promise_all(benchmark):
|
96
|
+
values = range(1000)
|
97
|
+
|
98
|
+
def create_promise(): # unnecessary function call
|
99
|
+
return Promise.all(values)
|
100
|
+
|
101
|
+
result = benchmark(create_promise)
|
102
|
+
|
103
|
+
assert isinstance(result, Promise)
|
104
|
+
assert result.get() == list(range(1000))
|
105
|
+
|
106
|
+
|
107
|
+
def test_benchmark_promise_all_promise(benchmark):
|
108
|
+
values = [Promise.resolve(i) for i in range(100000)]
|
109
|
+
|
110
|
+
def create_promise(): # unnecessary function call
|
111
|
+
return Promise.all(values)
|
112
|
+
|
113
|
+
result = benchmark(create_promise)
|
114
|
+
|
115
|
+
assert isinstance(result, Promise)
|
116
|
+
assert result.get() == list(range(100000))
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from time import sleep
|
2
|
+
from concurrent.futures import ThreadPoolExecutor
|
3
|
+
from promise import Promise
|
4
|
+
from operator import mul
|
5
|
+
|
6
|
+
executor = ThreadPoolExecutor(max_workers=40000)
|
7
|
+
|
8
|
+
|
9
|
+
def promise_factorial(n):
|
10
|
+
if n < 2:
|
11
|
+
return 1
|
12
|
+
sleep(.02)
|
13
|
+
a = executor.submit(promise_factorial, n - 1)
|
14
|
+
|
15
|
+
def promise_then(r):
|
16
|
+
return mul(r, n)
|
17
|
+
|
18
|
+
return Promise.resolve(a).then(promise_then)
|
19
|
+
|
20
|
+
|
21
|
+
def test_factorial():
|
22
|
+
p = promise_factorial(10)
|
23
|
+
assert p.get() == 3628800
|