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,98 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
#
|
4
|
+
# Copyright 2011 Yesudeep Mangalapilly <yesudeep@gmail.com>
|
5
|
+
# Copyright 2012 Google, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
|
19
|
+
"""
|
20
|
+
:module: watchdog.observers
|
21
|
+
:synopsis: Observer that picks a native implementation if available.
|
22
|
+
:author: yesudeep@google.com (Yesudeep Mangalapilly)
|
23
|
+
|
24
|
+
|
25
|
+
Classes
|
26
|
+
=======
|
27
|
+
.. autoclass:: Observer
|
28
|
+
:members:
|
29
|
+
:show-inheritance:
|
30
|
+
:inherited-members:
|
31
|
+
|
32
|
+
Observer thread that schedules watching directories and dispatches
|
33
|
+
calls to event handlers.
|
34
|
+
|
35
|
+
You can also import platform specific classes directly and use it instead
|
36
|
+
of :class:`Observer`. Here is a list of implemented observer classes.:
|
37
|
+
|
38
|
+
============== ================================ ==============================
|
39
|
+
Class Platforms Note
|
40
|
+
============== ================================ ==============================
|
41
|
+
|Inotify| Linux 2.6.13+ ``inotify(7)`` based observer
|
42
|
+
|FSEvents| Mac OS X FSEvents based observer
|
43
|
+
|Kqueue| Mac OS X and BSD with kqueue(2) ``kqueue(2)`` based observer
|
44
|
+
|WinApi| MS Windows Windows API-based observer
|
45
|
+
|Polling| Any fallback implementation
|
46
|
+
============== ================================ ==============================
|
47
|
+
|
48
|
+
.. |Inotify| replace:: :class:`.inotify.InotifyObserver`
|
49
|
+
.. |FSEvents| replace:: :class:`.fsevents.FSEventsObserver`
|
50
|
+
.. |Kqueue| replace:: :class:`.kqueue.KqueueObserver`
|
51
|
+
.. |WinApi| replace:: :class:`.read_directory_changes.WindowsApiObserver`
|
52
|
+
.. |WinApiAsync| replace:: :class:`.read_directory_changes_async.WindowsApiAsyncObserver`
|
53
|
+
.. |Polling| replace:: :class:`.polling.PollingObserver`
|
54
|
+
|
55
|
+
"""
|
56
|
+
|
57
|
+
import warnings
|
58
|
+
from wandb_watchdog.utils import platform
|
59
|
+
from wandb_watchdog.utils import UnsupportedLibc
|
60
|
+
|
61
|
+
if platform.is_linux():
|
62
|
+
try:
|
63
|
+
from .inotify import InotifyObserver as Observer
|
64
|
+
except UnsupportedLibc:
|
65
|
+
from .polling import PollingObserver as Observer
|
66
|
+
|
67
|
+
elif platform.is_darwin():
|
68
|
+
# FIXME: catching too broad. Error prone
|
69
|
+
try:
|
70
|
+
from .fsevents import FSEventsObserver as Observer
|
71
|
+
except:
|
72
|
+
try:
|
73
|
+
from .kqueue import KqueueObserver as Observer
|
74
|
+
# Note: (tim): Commenting out these warnings since the _watchdog_fsevents
|
75
|
+
# module is not available unless installed directly.
|
76
|
+
# warnings.warn("Failed to import fsevents. Fall back to kqueue")
|
77
|
+
except:
|
78
|
+
from .polling import PollingObserver as Observer
|
79
|
+
# Note: (tim): Commenting out these warnings since the _watchdog_fsevents
|
80
|
+
# module is not available unless installed directly.
|
81
|
+
# warnings.warn("Failed to import fsevents and kqueue. Fall back to polling.")
|
82
|
+
|
83
|
+
elif platform.is_bsd():
|
84
|
+
from .kqueue import KqueueObserver as Observer
|
85
|
+
|
86
|
+
elif platform.is_windows():
|
87
|
+
# TODO: find a reliable way of checking Windows version and import
|
88
|
+
# polling explicitly for Windows XP
|
89
|
+
try:
|
90
|
+
from .read_directory_changes import WindowsApiObserver as Observer
|
91
|
+
except:
|
92
|
+
from .polling import PollingObserver as Observer
|
93
|
+
warnings.warn("Failed to import read_directory_changes. Fall back to polling.")
|
94
|
+
|
95
|
+
else:
|
96
|
+
from .polling import PollingObserver as Observer
|
97
|
+
|
98
|
+
__all__ = ["Observer"]
|
@@ -0,0 +1,369 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
#
|
4
|
+
# Copyright 2011 Yesudeep Mangalapilly <yesudeep@gmail.com>
|
5
|
+
# Copyright 2012 Google, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
|
19
|
+
from __future__ import with_statement
|
20
|
+
import threading
|
21
|
+
from wandb_watchdog.utils import BaseThread
|
22
|
+
from wandb_watchdog.utils.compat import queue
|
23
|
+
from wandb_watchdog.utils.bricks import SkipRepeatsQueue
|
24
|
+
|
25
|
+
DEFAULT_EMITTER_TIMEOUT = 1 # in seconds.
|
26
|
+
DEFAULT_OBSERVER_TIMEOUT = 1 # in seconds.
|
27
|
+
|
28
|
+
|
29
|
+
# Collection classes
|
30
|
+
class EventQueue(SkipRepeatsQueue):
|
31
|
+
"""Thread-safe event queue based on a special queue that skips adding
|
32
|
+
the same event (:class:`FileSystemEvent`) multiple times consecutively.
|
33
|
+
Thus avoiding dispatching multiple event handling
|
34
|
+
calls when multiple identical events are produced quicker than an observer
|
35
|
+
can consume them.
|
36
|
+
"""
|
37
|
+
|
38
|
+
|
39
|
+
class ObservedWatch(object):
|
40
|
+
"""An scheduled watch.
|
41
|
+
|
42
|
+
:param path:
|
43
|
+
Path string.
|
44
|
+
:param recursive:
|
45
|
+
``True`` if watch is recursive; ``False`` otherwise.
|
46
|
+
"""
|
47
|
+
|
48
|
+
def __init__(self, path, recursive):
|
49
|
+
self._path = path
|
50
|
+
self._is_recursive = recursive
|
51
|
+
|
52
|
+
@property
|
53
|
+
def path(self):
|
54
|
+
"""The path that this watch monitors."""
|
55
|
+
return self._path
|
56
|
+
|
57
|
+
@property
|
58
|
+
def is_recursive(self):
|
59
|
+
"""Determines whether subdirectories are watched for the path."""
|
60
|
+
return self._is_recursive
|
61
|
+
|
62
|
+
@property
|
63
|
+
def key(self):
|
64
|
+
return self.path, self.is_recursive
|
65
|
+
|
66
|
+
def __eq__(self, watch):
|
67
|
+
return self.key == watch.key
|
68
|
+
|
69
|
+
def __ne__(self, watch):
|
70
|
+
return self.key != watch.key
|
71
|
+
|
72
|
+
def __hash__(self):
|
73
|
+
return hash(self.key)
|
74
|
+
|
75
|
+
def __repr__(self):
|
76
|
+
return "<ObservedWatch: path=%s, is_recursive=%s>" % (
|
77
|
+
self.path, self.is_recursive)
|
78
|
+
|
79
|
+
|
80
|
+
# Observer classes
|
81
|
+
class EventEmitter(BaseThread):
|
82
|
+
"""
|
83
|
+
Producer thread base class subclassed by event emitters
|
84
|
+
that generate events and populate a queue with them.
|
85
|
+
|
86
|
+
:param event_queue:
|
87
|
+
The event queue to populate with generated events.
|
88
|
+
:type event_queue:
|
89
|
+
:class:`watchdog.events.EventQueue`
|
90
|
+
:param watch:
|
91
|
+
The watch to observe and produce events for.
|
92
|
+
:type watch:
|
93
|
+
:class:`ObservedWatch`
|
94
|
+
:param timeout:
|
95
|
+
Timeout (in seconds) between successive attempts at reading events.
|
96
|
+
:type timeout:
|
97
|
+
``float``
|
98
|
+
"""
|
99
|
+
|
100
|
+
def __init__(self, event_queue, watch, timeout=DEFAULT_EMITTER_TIMEOUT):
|
101
|
+
BaseThread.__init__(self)
|
102
|
+
self._event_queue = event_queue
|
103
|
+
self._watch = watch
|
104
|
+
self._timeout = timeout
|
105
|
+
|
106
|
+
@property
|
107
|
+
def timeout(self):
|
108
|
+
"""
|
109
|
+
Blocking timeout for reading events.
|
110
|
+
"""
|
111
|
+
return self._timeout
|
112
|
+
|
113
|
+
@property
|
114
|
+
def watch(self):
|
115
|
+
"""
|
116
|
+
The watch associated with this emitter.
|
117
|
+
"""
|
118
|
+
return self._watch
|
119
|
+
|
120
|
+
def queue_event(self, event):
|
121
|
+
"""
|
122
|
+
Queues a single event.
|
123
|
+
|
124
|
+
:param event:
|
125
|
+
Event to be queued.
|
126
|
+
:type event:
|
127
|
+
An instance of :class:`watchdog.events.FileSystemEvent`
|
128
|
+
or a subclass.
|
129
|
+
"""
|
130
|
+
self._event_queue.put((event, self.watch))
|
131
|
+
|
132
|
+
def queue_events(self, timeout):
|
133
|
+
"""Override this method to populate the event queue with events
|
134
|
+
per interval period.
|
135
|
+
|
136
|
+
:param timeout:
|
137
|
+
Timeout (in seconds) between successive attempts at
|
138
|
+
reading events.
|
139
|
+
:type timeout:
|
140
|
+
``float``
|
141
|
+
"""
|
142
|
+
|
143
|
+
def run(self):
|
144
|
+
try:
|
145
|
+
while self.should_keep_running():
|
146
|
+
self.queue_events(self.timeout)
|
147
|
+
finally:
|
148
|
+
pass
|
149
|
+
|
150
|
+
|
151
|
+
class EventDispatcher(BaseThread):
|
152
|
+
"""
|
153
|
+
Consumer thread base class subclassed by event observer threads
|
154
|
+
that dispatch events from an event queue to appropriate event handlers.
|
155
|
+
|
156
|
+
:param timeout:
|
157
|
+
Event queue blocking timeout (in seconds).
|
158
|
+
:type timeout:
|
159
|
+
``float``
|
160
|
+
"""
|
161
|
+
|
162
|
+
def __init__(self, timeout=DEFAULT_OBSERVER_TIMEOUT):
|
163
|
+
BaseThread.__init__(self)
|
164
|
+
self._event_queue = EventQueue()
|
165
|
+
self._timeout = timeout
|
166
|
+
|
167
|
+
@property
|
168
|
+
def timeout(self):
|
169
|
+
"""Event queue block timeout."""
|
170
|
+
return self._timeout
|
171
|
+
|
172
|
+
@property
|
173
|
+
def event_queue(self):
|
174
|
+
"""The event queue which is populated with file system events
|
175
|
+
by emitters and from which events are dispatched by a dispatcher
|
176
|
+
thread."""
|
177
|
+
return self._event_queue
|
178
|
+
|
179
|
+
def dispatch_events(self, event_queue, timeout):
|
180
|
+
"""Override this method to consume events from an event queue, blocking
|
181
|
+
on the queue for the specified timeout before raising :class:`queue.Empty`.
|
182
|
+
|
183
|
+
:param event_queue:
|
184
|
+
Event queue to populate with one set of events.
|
185
|
+
:type event_queue:
|
186
|
+
:class:`EventQueue`
|
187
|
+
:param timeout:
|
188
|
+
Interval period (in seconds) to wait before timing out on the
|
189
|
+
event queue.
|
190
|
+
:type timeout:
|
191
|
+
``float``
|
192
|
+
:raises:
|
193
|
+
:class:`queue.Empty`
|
194
|
+
"""
|
195
|
+
|
196
|
+
def run(self):
|
197
|
+
while self.should_keep_running():
|
198
|
+
try:
|
199
|
+
self.dispatch_events(self.event_queue, self.timeout)
|
200
|
+
except queue.Empty:
|
201
|
+
continue
|
202
|
+
|
203
|
+
|
204
|
+
class BaseObserver(EventDispatcher):
|
205
|
+
"""Base observer."""
|
206
|
+
|
207
|
+
def __init__(self, emitter_class, timeout=DEFAULT_OBSERVER_TIMEOUT):
|
208
|
+
EventDispatcher.__init__(self, timeout)
|
209
|
+
self._emitter_class = emitter_class
|
210
|
+
self._lock = threading.RLock()
|
211
|
+
self._watches = set()
|
212
|
+
self._handlers = dict()
|
213
|
+
self._emitters = set()
|
214
|
+
self._emitter_for_watch = dict()
|
215
|
+
|
216
|
+
def _add_emitter(self, emitter):
|
217
|
+
self._emitter_for_watch[emitter.watch] = emitter
|
218
|
+
self._emitters.add(emitter)
|
219
|
+
|
220
|
+
def _remove_emitter(self, emitter):
|
221
|
+
del self._emitter_for_watch[emitter.watch]
|
222
|
+
self._emitters.remove(emitter)
|
223
|
+
emitter.stop()
|
224
|
+
try:
|
225
|
+
emitter.join()
|
226
|
+
except RuntimeError:
|
227
|
+
pass
|
228
|
+
|
229
|
+
def _clear_emitters(self):
|
230
|
+
for emitter in self._emitters:
|
231
|
+
emitter.stop()
|
232
|
+
for emitter in self._emitters:
|
233
|
+
try:
|
234
|
+
emitter.join()
|
235
|
+
except RuntimeError:
|
236
|
+
pass
|
237
|
+
self._emitters.clear()
|
238
|
+
self._emitter_for_watch.clear()
|
239
|
+
|
240
|
+
def _add_handler_for_watch(self, event_handler, watch):
|
241
|
+
if watch not in self._handlers:
|
242
|
+
self._handlers[watch] = set()
|
243
|
+
self._handlers[watch].add(event_handler)
|
244
|
+
|
245
|
+
def _remove_handlers_for_watch(self, watch):
|
246
|
+
del self._handlers[watch]
|
247
|
+
|
248
|
+
@property
|
249
|
+
def emitters(self):
|
250
|
+
"""Returns event emitter created by this observer."""
|
251
|
+
return self._emitters
|
252
|
+
|
253
|
+
def start(self):
|
254
|
+
for emitter in self._emitters:
|
255
|
+
emitter.start()
|
256
|
+
super(BaseObserver, self).start()
|
257
|
+
|
258
|
+
def schedule(self, event_handler, path, recursive=False):
|
259
|
+
"""
|
260
|
+
Schedules watching a path and calls appropriate methods specified
|
261
|
+
in the given event handler in response to file system events.
|
262
|
+
|
263
|
+
:param event_handler:
|
264
|
+
An event handler instance that has appropriate event handling
|
265
|
+
methods which will be called by the observer in response to
|
266
|
+
file system events.
|
267
|
+
:type event_handler:
|
268
|
+
:class:`watchdog.events.FileSystemEventHandler` or a subclass
|
269
|
+
:param path:
|
270
|
+
Directory path that will be monitored.
|
271
|
+
:type path:
|
272
|
+
``str``
|
273
|
+
:param recursive:
|
274
|
+
``True`` if events will be emitted for sub-directories
|
275
|
+
traversed recursively; ``False`` otherwise.
|
276
|
+
:type recursive:
|
277
|
+
``bool``
|
278
|
+
:return:
|
279
|
+
An :class:`ObservedWatch` object instance representing
|
280
|
+
a watch.
|
281
|
+
"""
|
282
|
+
with self._lock:
|
283
|
+
watch = ObservedWatch(path, recursive)
|
284
|
+
self._add_handler_for_watch(event_handler, watch)
|
285
|
+
|
286
|
+
# If we don't have an emitter for this watch already, create it.
|
287
|
+
if self._emitter_for_watch.get(watch) is None:
|
288
|
+
emitter = self._emitter_class(event_queue=self.event_queue,
|
289
|
+
watch=watch,
|
290
|
+
timeout=self.timeout)
|
291
|
+
self._add_emitter(emitter)
|
292
|
+
if self.is_alive():
|
293
|
+
emitter.start()
|
294
|
+
self._watches.add(watch)
|
295
|
+
return watch
|
296
|
+
|
297
|
+
def add_handler_for_watch(self, event_handler, watch):
|
298
|
+
"""Adds a handler for the given watch.
|
299
|
+
|
300
|
+
:param event_handler:
|
301
|
+
An event handler instance that has appropriate event handling
|
302
|
+
methods which will be called by the observer in response to
|
303
|
+
file system events.
|
304
|
+
:type event_handler:
|
305
|
+
:class:`watchdog.events.FileSystemEventHandler` or a subclass
|
306
|
+
:param watch:
|
307
|
+
The watch to add a handler for.
|
308
|
+
:type watch:
|
309
|
+
An instance of :class:`ObservedWatch` or a subclass of
|
310
|
+
:class:`ObservedWatch`
|
311
|
+
"""
|
312
|
+
with self._lock:
|
313
|
+
self._add_handler_for_watch(event_handler, watch)
|
314
|
+
|
315
|
+
def remove_handler_for_watch(self, event_handler, watch):
|
316
|
+
"""Removes a handler for the given watch.
|
317
|
+
|
318
|
+
:param event_handler:
|
319
|
+
An event handler instance that has appropriate event handling
|
320
|
+
methods which will be called by the observer in response to
|
321
|
+
file system events.
|
322
|
+
:type event_handler:
|
323
|
+
:class:`watchdog.events.FileSystemEventHandler` or a subclass
|
324
|
+
:param watch:
|
325
|
+
The watch to remove a handler for.
|
326
|
+
:type watch:
|
327
|
+
An instance of :class:`ObservedWatch` or a subclass of
|
328
|
+
:class:`ObservedWatch`
|
329
|
+
"""
|
330
|
+
with self._lock:
|
331
|
+
self._handlers[watch].remove(event_handler)
|
332
|
+
|
333
|
+
def unschedule(self, watch):
|
334
|
+
"""Unschedules a watch.
|
335
|
+
|
336
|
+
:param watch:
|
337
|
+
The watch to unschedule.
|
338
|
+
:type watch:
|
339
|
+
An instance of :class:`ObservedWatch` or a subclass of
|
340
|
+
:class:`ObservedWatch`
|
341
|
+
"""
|
342
|
+
with self._lock:
|
343
|
+
emitter = self._emitter_for_watch[watch]
|
344
|
+
del self._handlers[watch]
|
345
|
+
self._remove_emitter(emitter)
|
346
|
+
self._watches.remove(watch)
|
347
|
+
|
348
|
+
def unschedule_all(self):
|
349
|
+
"""Unschedules all watches and detaches all associated event
|
350
|
+
handlers."""
|
351
|
+
with self._lock:
|
352
|
+
self._handlers.clear()
|
353
|
+
self._clear_emitters()
|
354
|
+
self._watches.clear()
|
355
|
+
|
356
|
+
def on_thread_stop(self):
|
357
|
+
self.unschedule_all()
|
358
|
+
|
359
|
+
def dispatch_events(self, event_queue, timeout):
|
360
|
+
event, watch = event_queue.get(block=True, timeout=timeout)
|
361
|
+
|
362
|
+
with self._lock:
|
363
|
+
# To allow unschedule/stop and safe removal of event handlers
|
364
|
+
# within event handlers itself, check if the handler is still
|
365
|
+
# registered after every dispatch.
|
366
|
+
for handler in list(self._handlers.get(watch, [])):
|
367
|
+
if handler in self._handlers.get(watch, []):
|
368
|
+
handler.dispatch(event)
|
369
|
+
event_queue.task_done()
|
@@ -0,0 +1,172 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# -*- coding: utf-8 -*-
|
3
|
+
#
|
4
|
+
# Copyright 2011 Yesudeep Mangalapilly <yesudeep@gmail.com>
|
5
|
+
# Copyright 2012 Google, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
|
19
|
+
"""
|
20
|
+
:module: watchdog.observers.fsevents
|
21
|
+
:synopsis: FSEvents based emitter implementation.
|
22
|
+
:author: yesudeep@google.com (Yesudeep Mangalapilly)
|
23
|
+
:platforms: Mac OS X
|
24
|
+
"""
|
25
|
+
|
26
|
+
from __future__ import with_statement
|
27
|
+
|
28
|
+
import sys
|
29
|
+
import threading
|
30
|
+
import unicodedata
|
31
|
+
import _watchdog_fsevents as _fsevents
|
32
|
+
|
33
|
+
from wandb_watchdog.events import (
|
34
|
+
FileDeletedEvent,
|
35
|
+
FileModifiedEvent,
|
36
|
+
FileCreatedEvent,
|
37
|
+
FileMovedEvent,
|
38
|
+
DirDeletedEvent,
|
39
|
+
DirModifiedEvent,
|
40
|
+
DirCreatedEvent,
|
41
|
+
DirMovedEvent
|
42
|
+
)
|
43
|
+
|
44
|
+
from wandb_watchdog.utils.dirsnapshot import DirectorySnapshot
|
45
|
+
from wandb_watchdog.observers.api import (
|
46
|
+
BaseObserver,
|
47
|
+
EventEmitter,
|
48
|
+
DEFAULT_EMITTER_TIMEOUT,
|
49
|
+
DEFAULT_OBSERVER_TIMEOUT
|
50
|
+
)
|
51
|
+
|
52
|
+
|
53
|
+
class FSEventsEmitter(EventEmitter):
|
54
|
+
|
55
|
+
"""
|
56
|
+
Mac OS X FSEvents Emitter class.
|
57
|
+
|
58
|
+
:param event_queue:
|
59
|
+
The event queue to fill with events.
|
60
|
+
:param watch:
|
61
|
+
A watch object representing the directory to monitor.
|
62
|
+
:type watch:
|
63
|
+
:class:`watchdog.observers.api.ObservedWatch`
|
64
|
+
:param timeout:
|
65
|
+
Read events blocking timeout (in seconds).
|
66
|
+
:type timeout:
|
67
|
+
``float``
|
68
|
+
"""
|
69
|
+
|
70
|
+
def __init__(self, event_queue, watch, timeout=DEFAULT_EMITTER_TIMEOUT):
|
71
|
+
EventEmitter.__init__(self, event_queue, watch, timeout)
|
72
|
+
self._lock = threading.Lock()
|
73
|
+
self.snapshot = DirectorySnapshot(watch.path, watch.is_recursive)
|
74
|
+
|
75
|
+
def on_thread_stop(self):
|
76
|
+
_fsevents.remove_watch(self.watch)
|
77
|
+
_fsevents.stop(self)
|
78
|
+
|
79
|
+
def queue_events(self, timeout):
|
80
|
+
with self._lock:
|
81
|
+
if not self.watch.is_recursive\
|
82
|
+
and self.watch.path not in self.pathnames:
|
83
|
+
return
|
84
|
+
new_snapshot = DirectorySnapshot(self.watch.path,
|
85
|
+
self.watch.is_recursive)
|
86
|
+
events = new_snapshot - self.snapshot
|
87
|
+
self.snapshot = new_snapshot
|
88
|
+
|
89
|
+
# Files.
|
90
|
+
for src_path in events.files_deleted:
|
91
|
+
self.queue_event(FileDeletedEvent(src_path))
|
92
|
+
for src_path in events.files_modified:
|
93
|
+
self.queue_event(FileModifiedEvent(src_path))
|
94
|
+
for src_path in events.files_created:
|
95
|
+
self.queue_event(FileCreatedEvent(src_path))
|
96
|
+
for src_path, dest_path in events.files_moved:
|
97
|
+
self.queue_event(FileMovedEvent(src_path, dest_path))
|
98
|
+
|
99
|
+
# Directories.
|
100
|
+
for src_path in events.dirs_deleted:
|
101
|
+
self.queue_event(DirDeletedEvent(src_path))
|
102
|
+
for src_path in events.dirs_modified:
|
103
|
+
self.queue_event(DirModifiedEvent(src_path))
|
104
|
+
for src_path in events.dirs_created:
|
105
|
+
self.queue_event(DirCreatedEvent(src_path))
|
106
|
+
for src_path, dest_path in events.dirs_moved:
|
107
|
+
self.queue_event(DirMovedEvent(src_path, dest_path))
|
108
|
+
|
109
|
+
def run(self):
|
110
|
+
try:
|
111
|
+
def callback(pathnames, flags, emitter=self):
|
112
|
+
emitter.queue_events(emitter.timeout)
|
113
|
+
|
114
|
+
# for pathname, flag in zip(pathnames, flags):
|
115
|
+
# if emitter.watch.is_recursive: # and pathname != emitter.watch.path:
|
116
|
+
# new_sub_snapshot = DirectorySnapshot(pathname, True)
|
117
|
+
# old_sub_snapshot = self.snapshot.copy(pathname)
|
118
|
+
# diff = new_sub_snapshot - old_sub_snapshot
|
119
|
+
# self.snapshot += new_subsnapshot
|
120
|
+
# else:
|
121
|
+
# new_snapshot = DirectorySnapshot(emitter.watch.path, False)
|
122
|
+
# diff = new_snapshot - emitter.snapshot
|
123
|
+
# emitter.snapshot = new_snapshot
|
124
|
+
|
125
|
+
# INFO: FSEvents reports directory notifications recursively
|
126
|
+
# by default, so we do not need to add subdirectory paths.
|
127
|
+
#pathnames = set([self.watch.path])
|
128
|
+
# if self.watch.is_recursive:
|
129
|
+
# for root, directory_names, _ in os.walk(self.watch.path):
|
130
|
+
# for directory_name in directory_names:
|
131
|
+
# full_path = absolute_path(
|
132
|
+
# os.path.join(root, directory_name))
|
133
|
+
# pathnames.add(full_path)
|
134
|
+
self.pathnames = [self.watch.path]
|
135
|
+
_fsevents.add_watch(self,
|
136
|
+
self.watch,
|
137
|
+
callback,
|
138
|
+
self.pathnames)
|
139
|
+
_fsevents.read_events(self)
|
140
|
+
except:
|
141
|
+
pass
|
142
|
+
|
143
|
+
|
144
|
+
class FSEventsObserver(BaseObserver):
|
145
|
+
|
146
|
+
def __init__(self, timeout=DEFAULT_OBSERVER_TIMEOUT):
|
147
|
+
BaseObserver.__init__(self, emitter_class=FSEventsEmitter,
|
148
|
+
timeout=timeout)
|
149
|
+
|
150
|
+
def schedule(self, event_handler, path, recursive=False):
|
151
|
+
# Python 2/3 compat
|
152
|
+
try:
|
153
|
+
str_class = unicode
|
154
|
+
except NameError:
|
155
|
+
str_class = str
|
156
|
+
|
157
|
+
# Fix for issue #26: Trace/BPT error when given a unicode path
|
158
|
+
# string. https://github.com/gorakhargosh/watchdog/issues#issue/26
|
159
|
+
if isinstance(path, str_class):
|
160
|
+
#path = unicode(path, 'utf-8')
|
161
|
+
path = unicodedata.normalize('NFC', path)
|
162
|
+
# We only encode the path in Python 2 for backwards compatibility.
|
163
|
+
# On Python 3 we want the path to stay as unicode if possible for
|
164
|
+
# the sake of path matching not having to be rewritten to use the
|
165
|
+
# bytes API instead of strings. The _watchdog_fsevent.so code for
|
166
|
+
# Python 3 can handle both str and bytes paths, which is why we
|
167
|
+
# do not HAVE to encode it with Python 3. The Python 2 code in
|
168
|
+
# _watchdog_fsevents.so was not changed for the sake of backwards
|
169
|
+
# compatibility.
|
170
|
+
if sys.version_info < (3,):
|
171
|
+
path = path.encode('utf-8')
|
172
|
+
return BaseObserver.schedule(self, event_handler, path, recursive)
|