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.
Files changed (827) hide show
  1. package_readme.md +89 -0
  2. wandb/__init__.py +245 -0
  3. wandb/__init__.pyi +1139 -0
  4. wandb/__main__.py +3 -0
  5. wandb/_globals.py +19 -0
  6. wandb/agents/__init__.py +0 -0
  7. wandb/agents/pyagent.py +363 -0
  8. wandb/analytics/__init__.py +3 -0
  9. wandb/analytics/sentry.py +266 -0
  10. wandb/apis/__init__.py +48 -0
  11. wandb/apis/attrs.py +40 -0
  12. wandb/apis/importers/__init__.py +1 -0
  13. wandb/apis/importers/internals/internal.py +385 -0
  14. wandb/apis/importers/internals/protocols.py +99 -0
  15. wandb/apis/importers/internals/util.py +78 -0
  16. wandb/apis/importers/mlflow.py +254 -0
  17. wandb/apis/importers/validation.py +108 -0
  18. wandb/apis/importers/wandb.py +1603 -0
  19. wandb/apis/internal.py +232 -0
  20. wandb/apis/normalize.py +89 -0
  21. wandb/apis/paginator.py +81 -0
  22. wandb/apis/public/__init__.py +34 -0
  23. wandb/apis/public/api.py +1305 -0
  24. wandb/apis/public/artifacts.py +1090 -0
  25. wandb/apis/public/const.py +4 -0
  26. wandb/apis/public/files.py +195 -0
  27. wandb/apis/public/history.py +149 -0
  28. wandb/apis/public/jobs.py +659 -0
  29. wandb/apis/public/projects.py +154 -0
  30. wandb/apis/public/query_generator.py +166 -0
  31. wandb/apis/public/reports.py +469 -0
  32. wandb/apis/public/runs.py +914 -0
  33. wandb/apis/public/sweeps.py +240 -0
  34. wandb/apis/public/teams.py +198 -0
  35. wandb/apis/public/users.py +136 -0
  36. wandb/apis/reports/__init__.py +1 -0
  37. wandb/apis/reports/v1/__init__.py +8 -0
  38. wandb/apis/reports/v2/__init__.py +8 -0
  39. wandb/apis/workspaces/__init__.py +8 -0
  40. wandb/beta/workflows.py +288 -0
  41. wandb/bin/nvidia_gpu_stats +0 -0
  42. wandb/bin/wandb-core +0 -0
  43. wandb/cli/__init__.py +0 -0
  44. wandb/cli/cli.py +3004 -0
  45. wandb/data_types.py +63 -0
  46. wandb/docker/__init__.py +342 -0
  47. wandb/docker/auth.py +436 -0
  48. wandb/docker/wandb-entrypoint.sh +33 -0
  49. wandb/docker/www_authenticate.py +94 -0
  50. wandb/env.py +514 -0
  51. wandb/errors/__init__.py +17 -0
  52. wandb/errors/errors.py +37 -0
  53. wandb/errors/term.py +103 -0
  54. wandb/errors/util.py +57 -0
  55. wandb/errors/warnings.py +2 -0
  56. wandb/filesync/__init__.py +0 -0
  57. wandb/filesync/dir_watcher.py +403 -0
  58. wandb/filesync/stats.py +100 -0
  59. wandb/filesync/step_checksum.py +142 -0
  60. wandb/filesync/step_prepare.py +179 -0
  61. wandb/filesync/step_upload.py +290 -0
  62. wandb/filesync/upload_job.py +142 -0
  63. wandb/integration/__init__.py +0 -0
  64. wandb/integration/catboost/__init__.py +5 -0
  65. wandb/integration/catboost/catboost.py +178 -0
  66. wandb/integration/cohere/__init__.py +3 -0
  67. wandb/integration/cohere/cohere.py +21 -0
  68. wandb/integration/cohere/resolver.py +347 -0
  69. wandb/integration/diffusers/__init__.py +3 -0
  70. wandb/integration/diffusers/autologger.py +76 -0
  71. wandb/integration/diffusers/pipeline_resolver.py +50 -0
  72. wandb/integration/diffusers/resolvers/__init__.py +9 -0
  73. wandb/integration/diffusers/resolvers/multimodal.py +882 -0
  74. wandb/integration/diffusers/resolvers/utils.py +102 -0
  75. wandb/integration/fastai/__init__.py +249 -0
  76. wandb/integration/gym/__init__.py +105 -0
  77. wandb/integration/huggingface/__init__.py +3 -0
  78. wandb/integration/huggingface/huggingface.py +18 -0
  79. wandb/integration/huggingface/resolver.py +213 -0
  80. wandb/integration/keras/__init__.py +11 -0
  81. wandb/integration/keras/callbacks/__init__.py +5 -0
  82. wandb/integration/keras/callbacks/metrics_logger.py +136 -0
  83. wandb/integration/keras/callbacks/model_checkpoint.py +195 -0
  84. wandb/integration/keras/callbacks/tables_builder.py +226 -0
  85. wandb/integration/keras/keras.py +1091 -0
  86. wandb/integration/kfp/__init__.py +6 -0
  87. wandb/integration/kfp/helpers.py +28 -0
  88. wandb/integration/kfp/kfp_patch.py +324 -0
  89. wandb/integration/kfp/wandb_logging.py +182 -0
  90. wandb/integration/langchain/__init__.py +3 -0
  91. wandb/integration/langchain/wandb_tracer.py +48 -0
  92. wandb/integration/lightgbm/__init__.py +239 -0
  93. wandb/integration/lightning/__init__.py +0 -0
  94. wandb/integration/lightning/fabric/__init__.py +3 -0
  95. wandb/integration/lightning/fabric/logger.py +762 -0
  96. wandb/integration/magic.py +556 -0
  97. wandb/integration/metaflow/__init__.py +3 -0
  98. wandb/integration/metaflow/metaflow.py +383 -0
  99. wandb/integration/openai/__init__.py +3 -0
  100. wandb/integration/openai/fine_tuning.py +480 -0
  101. wandb/integration/openai/openai.py +22 -0
  102. wandb/integration/openai/resolver.py +240 -0
  103. wandb/integration/prodigy/__init__.py +3 -0
  104. wandb/integration/prodigy/prodigy.py +299 -0
  105. wandb/integration/sacred/__init__.py +117 -0
  106. wandb/integration/sagemaker/__init__.py +12 -0
  107. wandb/integration/sagemaker/auth.py +28 -0
  108. wandb/integration/sagemaker/config.py +49 -0
  109. wandb/integration/sagemaker/files.py +3 -0
  110. wandb/integration/sagemaker/resources.py +34 -0
  111. wandb/integration/sb3/__init__.py +3 -0
  112. wandb/integration/sb3/sb3.py +153 -0
  113. wandb/integration/sklearn/__init__.py +37 -0
  114. wandb/integration/sklearn/calculate/__init__.py +32 -0
  115. wandb/integration/sklearn/calculate/calibration_curves.py +125 -0
  116. wandb/integration/sklearn/calculate/class_proportions.py +68 -0
  117. wandb/integration/sklearn/calculate/confusion_matrix.py +93 -0
  118. wandb/integration/sklearn/calculate/decision_boundaries.py +40 -0
  119. wandb/integration/sklearn/calculate/elbow_curve.py +55 -0
  120. wandb/integration/sklearn/calculate/feature_importances.py +67 -0
  121. wandb/integration/sklearn/calculate/learning_curve.py +64 -0
  122. wandb/integration/sklearn/calculate/outlier_candidates.py +69 -0
  123. wandb/integration/sklearn/calculate/residuals.py +86 -0
  124. wandb/integration/sklearn/calculate/silhouette.py +118 -0
  125. wandb/integration/sklearn/calculate/summary_metrics.py +62 -0
  126. wandb/integration/sklearn/plot/__init__.py +35 -0
  127. wandb/integration/sklearn/plot/classifier.py +329 -0
  128. wandb/integration/sklearn/plot/clusterer.py +146 -0
  129. wandb/integration/sklearn/plot/regressor.py +121 -0
  130. wandb/integration/sklearn/plot/shared.py +91 -0
  131. wandb/integration/sklearn/utils.py +183 -0
  132. wandb/integration/tensorboard/__init__.py +10 -0
  133. wandb/integration/tensorboard/log.py +355 -0
  134. wandb/integration/tensorboard/monkeypatch.py +185 -0
  135. wandb/integration/tensorflow/__init__.py +5 -0
  136. wandb/integration/tensorflow/estimator_hook.py +54 -0
  137. wandb/integration/torch/__init__.py +0 -0
  138. wandb/integration/torch/wandb_torch.py +554 -0
  139. wandb/integration/ultralytics/__init__.py +11 -0
  140. wandb/integration/ultralytics/bbox_utils.py +208 -0
  141. wandb/integration/ultralytics/callback.py +524 -0
  142. wandb/integration/ultralytics/classification_utils.py +83 -0
  143. wandb/integration/ultralytics/mask_utils.py +202 -0
  144. wandb/integration/ultralytics/pose_utils.py +103 -0
  145. wandb/integration/xgboost/__init__.py +11 -0
  146. wandb/integration/xgboost/xgboost.py +189 -0
  147. wandb/integration/yolov8/__init__.py +0 -0
  148. wandb/integration/yolov8/yolov8.py +284 -0
  149. wandb/jupyter.py +515 -0
  150. wandb/magic.py +3 -0
  151. wandb/mpmain/__init__.py +0 -0
  152. wandb/mpmain/__main__.py +1 -0
  153. wandb/old/__init__.py +0 -0
  154. wandb/old/core.py +53 -0
  155. wandb/old/settings.py +173 -0
  156. wandb/old/summary.py +440 -0
  157. wandb/plot/__init__.py +19 -0
  158. wandb/plot/bar.py +45 -0
  159. wandb/plot/confusion_matrix.py +100 -0
  160. wandb/plot/histogram.py +39 -0
  161. wandb/plot/line.py +43 -0
  162. wandb/plot/line_series.py +88 -0
  163. wandb/plot/pr_curve.py +136 -0
  164. wandb/plot/roc_curve.py +118 -0
  165. wandb/plot/scatter.py +32 -0
  166. wandb/plot/utils.py +183 -0
  167. wandb/plot/viz.py +123 -0
  168. wandb/proto/__init__.py +0 -0
  169. wandb/proto/v3/__init__.py +0 -0
  170. wandb/proto/v3/wandb_base_pb2.py +55 -0
  171. wandb/proto/v3/wandb_internal_pb2.py +1608 -0
  172. wandb/proto/v3/wandb_server_pb2.py +208 -0
  173. wandb/proto/v3/wandb_settings_pb2.py +112 -0
  174. wandb/proto/v3/wandb_telemetry_pb2.py +106 -0
  175. wandb/proto/v4/__init__.py +0 -0
  176. wandb/proto/v4/wandb_base_pb2.py +30 -0
  177. wandb/proto/v4/wandb_internal_pb2.py +360 -0
  178. wandb/proto/v4/wandb_server_pb2.py +63 -0
  179. wandb/proto/v4/wandb_settings_pb2.py +45 -0
  180. wandb/proto/v4/wandb_telemetry_pb2.py +41 -0
  181. wandb/proto/v5/wandb_base_pb2.py +31 -0
  182. wandb/proto/v5/wandb_internal_pb2.py +361 -0
  183. wandb/proto/v5/wandb_server_pb2.py +64 -0
  184. wandb/proto/v5/wandb_settings_pb2.py +46 -0
  185. wandb/proto/v5/wandb_telemetry_pb2.py +42 -0
  186. wandb/proto/wandb_base_pb2.py +10 -0
  187. wandb/proto/wandb_deprecated.py +53 -0
  188. wandb/proto/wandb_generate_deprecated.py +34 -0
  189. wandb/proto/wandb_generate_proto.py +49 -0
  190. wandb/proto/wandb_internal_pb2.py +16 -0
  191. wandb/proto/wandb_server_pb2.py +10 -0
  192. wandb/proto/wandb_settings_pb2.py +10 -0
  193. wandb/proto/wandb_telemetry_pb2.py +10 -0
  194. wandb/py.typed +0 -0
  195. wandb/sdk/__init__.py +37 -0
  196. wandb/sdk/artifacts/__init__.py +0 -0
  197. wandb/sdk/artifacts/_validators.py +90 -0
  198. wandb/sdk/artifacts/artifact.py +2389 -0
  199. wandb/sdk/artifacts/artifact_download_logger.py +43 -0
  200. wandb/sdk/artifacts/artifact_file_cache.py +253 -0
  201. wandb/sdk/artifacts/artifact_instance_cache.py +17 -0
  202. wandb/sdk/artifacts/artifact_manifest.py +74 -0
  203. wandb/sdk/artifacts/artifact_manifest_entry.py +249 -0
  204. wandb/sdk/artifacts/artifact_manifests/__init__.py +0 -0
  205. wandb/sdk/artifacts/artifact_manifests/artifact_manifest_v1.py +92 -0
  206. wandb/sdk/artifacts/artifact_saver.py +269 -0
  207. wandb/sdk/artifacts/artifact_state.py +11 -0
  208. wandb/sdk/artifacts/artifact_ttl.py +7 -0
  209. wandb/sdk/artifacts/exceptions.py +57 -0
  210. wandb/sdk/artifacts/staging.py +25 -0
  211. wandb/sdk/artifacts/storage_handler.py +62 -0
  212. wandb/sdk/artifacts/storage_handlers/__init__.py +0 -0
  213. wandb/sdk/artifacts/storage_handlers/azure_handler.py +208 -0
  214. wandb/sdk/artifacts/storage_handlers/gcs_handler.py +228 -0
  215. wandb/sdk/artifacts/storage_handlers/http_handler.py +114 -0
  216. wandb/sdk/artifacts/storage_handlers/local_file_handler.py +141 -0
  217. wandb/sdk/artifacts/storage_handlers/multi_handler.py +56 -0
  218. wandb/sdk/artifacts/storage_handlers/s3_handler.py +300 -0
  219. wandb/sdk/artifacts/storage_handlers/tracking_handler.py +72 -0
  220. wandb/sdk/artifacts/storage_handlers/wb_artifact_handler.py +135 -0
  221. wandb/sdk/artifacts/storage_handlers/wb_local_artifact_handler.py +74 -0
  222. wandb/sdk/artifacts/storage_layout.py +6 -0
  223. wandb/sdk/artifacts/storage_policies/__init__.py +4 -0
  224. wandb/sdk/artifacts/storage_policies/register.py +1 -0
  225. wandb/sdk/artifacts/storage_policies/wandb_storage_policy.py +378 -0
  226. wandb/sdk/artifacts/storage_policy.py +72 -0
  227. wandb/sdk/backend/__init__.py +0 -0
  228. wandb/sdk/backend/backend.py +222 -0
  229. wandb/sdk/data_types/__init__.py +0 -0
  230. wandb/sdk/data_types/_dtypes.py +914 -0
  231. wandb/sdk/data_types/_private.py +10 -0
  232. wandb/sdk/data_types/audio.py +165 -0
  233. wandb/sdk/data_types/base_types/__init__.py +0 -0
  234. wandb/sdk/data_types/base_types/json_metadata.py +55 -0
  235. wandb/sdk/data_types/base_types/media.py +315 -0
  236. wandb/sdk/data_types/base_types/wb_value.py +272 -0
  237. wandb/sdk/data_types/bokeh.py +70 -0
  238. wandb/sdk/data_types/graph.py +405 -0
  239. wandb/sdk/data_types/helper_types/__init__.py +0 -0
  240. wandb/sdk/data_types/helper_types/bounding_boxes_2d.py +295 -0
  241. wandb/sdk/data_types/helper_types/classes.py +159 -0
  242. wandb/sdk/data_types/helper_types/image_mask.py +235 -0
  243. wandb/sdk/data_types/histogram.py +96 -0
  244. wandb/sdk/data_types/html.py +115 -0
  245. wandb/sdk/data_types/image.py +845 -0
  246. wandb/sdk/data_types/molecule.py +241 -0
  247. wandb/sdk/data_types/object_3d.py +474 -0
  248. wandb/sdk/data_types/plotly.py +82 -0
  249. wandb/sdk/data_types/saved_model.py +446 -0
  250. wandb/sdk/data_types/table.py +1204 -0
  251. wandb/sdk/data_types/trace_tree.py +438 -0
  252. wandb/sdk/data_types/utils.py +229 -0
  253. wandb/sdk/data_types/video.py +247 -0
  254. wandb/sdk/integration_utils/__init__.py +0 -0
  255. wandb/sdk/integration_utils/auto_logging.py +239 -0
  256. wandb/sdk/integration_utils/data_logging.py +475 -0
  257. wandb/sdk/interface/__init__.py +0 -0
  258. wandb/sdk/interface/constants.py +4 -0
  259. wandb/sdk/interface/interface.py +972 -0
  260. wandb/sdk/interface/interface_queue.py +59 -0
  261. wandb/sdk/interface/interface_relay.py +53 -0
  262. wandb/sdk/interface/interface_shared.py +537 -0
  263. wandb/sdk/interface/interface_sock.py +61 -0
  264. wandb/sdk/interface/message_future.py +27 -0
  265. wandb/sdk/interface/message_future_poll.py +50 -0
  266. wandb/sdk/interface/router.py +118 -0
  267. wandb/sdk/interface/router_queue.py +44 -0
  268. wandb/sdk/interface/router_relay.py +39 -0
  269. wandb/sdk/interface/router_sock.py +36 -0
  270. wandb/sdk/interface/summary_record.py +67 -0
  271. wandb/sdk/internal/__init__.py +0 -0
  272. wandb/sdk/internal/context.py +89 -0
  273. wandb/sdk/internal/datastore.py +297 -0
  274. wandb/sdk/internal/file_pusher.py +181 -0
  275. wandb/sdk/internal/file_stream.py +695 -0
  276. wandb/sdk/internal/flow_control.py +263 -0
  277. wandb/sdk/internal/handler.py +901 -0
  278. wandb/sdk/internal/internal.py +417 -0
  279. wandb/sdk/internal/internal_api.py +4358 -0
  280. wandb/sdk/internal/internal_util.py +100 -0
  281. wandb/sdk/internal/job_builder.py +629 -0
  282. wandb/sdk/internal/profiler.py +78 -0
  283. wandb/sdk/internal/progress.py +83 -0
  284. wandb/sdk/internal/run.py +25 -0
  285. wandb/sdk/internal/sample.py +70 -0
  286. wandb/sdk/internal/sender.py +1686 -0
  287. wandb/sdk/internal/sender_config.py +197 -0
  288. wandb/sdk/internal/settings_static.py +90 -0
  289. wandb/sdk/internal/system/__init__.py +0 -0
  290. wandb/sdk/internal/system/assets/__init__.py +27 -0
  291. wandb/sdk/internal/system/assets/aggregators.py +37 -0
  292. wandb/sdk/internal/system/assets/asset_registry.py +20 -0
  293. wandb/sdk/internal/system/assets/cpu.py +163 -0
  294. wandb/sdk/internal/system/assets/disk.py +210 -0
  295. wandb/sdk/internal/system/assets/gpu.py +416 -0
  296. wandb/sdk/internal/system/assets/gpu_amd.py +239 -0
  297. wandb/sdk/internal/system/assets/gpu_apple.py +177 -0
  298. wandb/sdk/internal/system/assets/interfaces.py +207 -0
  299. wandb/sdk/internal/system/assets/ipu.py +177 -0
  300. wandb/sdk/internal/system/assets/memory.py +166 -0
  301. wandb/sdk/internal/system/assets/network.py +125 -0
  302. wandb/sdk/internal/system/assets/open_metrics.py +299 -0
  303. wandb/sdk/internal/system/assets/tpu.py +154 -0
  304. wandb/sdk/internal/system/assets/trainium.py +399 -0
  305. wandb/sdk/internal/system/env_probe_helpers.py +13 -0
  306. wandb/sdk/internal/system/system_info.py +249 -0
  307. wandb/sdk/internal/system/system_monitor.py +229 -0
  308. wandb/sdk/internal/tb_watcher.py +518 -0
  309. wandb/sdk/internal/thread_local_settings.py +18 -0
  310. wandb/sdk/internal/writer.py +206 -0
  311. wandb/sdk/launch/__init__.py +14 -0
  312. wandb/sdk/launch/_launch.py +330 -0
  313. wandb/sdk/launch/_launch_add.py +255 -0
  314. wandb/sdk/launch/_project_spec.py +566 -0
  315. wandb/sdk/launch/agent/__init__.py +5 -0
  316. wandb/sdk/launch/agent/agent.py +924 -0
  317. wandb/sdk/launch/agent/config.py +296 -0
  318. wandb/sdk/launch/agent/job_status_tracker.py +53 -0
  319. wandb/sdk/launch/agent/run_queue_item_file_saver.py +45 -0
  320. wandb/sdk/launch/builder/__init__.py +0 -0
  321. wandb/sdk/launch/builder/abstract.py +156 -0
  322. wandb/sdk/launch/builder/build.py +297 -0
  323. wandb/sdk/launch/builder/context_manager.py +235 -0
  324. wandb/sdk/launch/builder/docker_builder.py +177 -0
  325. wandb/sdk/launch/builder/kaniko_builder.py +595 -0
  326. wandb/sdk/launch/builder/noop.py +58 -0
  327. wandb/sdk/launch/builder/templates/_wandb_bootstrap.py +188 -0
  328. wandb/sdk/launch/builder/templates/dockerfile.py +92 -0
  329. wandb/sdk/launch/create_job.py +528 -0
  330. wandb/sdk/launch/environment/abstract.py +29 -0
  331. wandb/sdk/launch/environment/aws_environment.py +322 -0
  332. wandb/sdk/launch/environment/azure_environment.py +105 -0
  333. wandb/sdk/launch/environment/gcp_environment.py +335 -0
  334. wandb/sdk/launch/environment/local_environment.py +66 -0
  335. wandb/sdk/launch/errors.py +19 -0
  336. wandb/sdk/launch/git_reference.py +109 -0
  337. wandb/sdk/launch/inputs/files.py +148 -0
  338. wandb/sdk/launch/inputs/internal.py +315 -0
  339. wandb/sdk/launch/inputs/manage.py +113 -0
  340. wandb/sdk/launch/inputs/schema.py +39 -0
  341. wandb/sdk/launch/loader.py +249 -0
  342. wandb/sdk/launch/registry/abstract.py +48 -0
  343. wandb/sdk/launch/registry/anon.py +29 -0
  344. wandb/sdk/launch/registry/azure_container_registry.py +124 -0
  345. wandb/sdk/launch/registry/elastic_container_registry.py +192 -0
  346. wandb/sdk/launch/registry/google_artifact_registry.py +219 -0
  347. wandb/sdk/launch/registry/local_registry.py +67 -0
  348. wandb/sdk/launch/runner/__init__.py +0 -0
  349. wandb/sdk/launch/runner/abstract.py +195 -0
  350. wandb/sdk/launch/runner/kubernetes_monitor.py +474 -0
  351. wandb/sdk/launch/runner/kubernetes_runner.py +963 -0
  352. wandb/sdk/launch/runner/local_container.py +301 -0
  353. wandb/sdk/launch/runner/local_process.py +78 -0
  354. wandb/sdk/launch/runner/sagemaker_runner.py +426 -0
  355. wandb/sdk/launch/runner/vertex_runner.py +230 -0
  356. wandb/sdk/launch/sweeps/__init__.py +39 -0
  357. wandb/sdk/launch/sweeps/scheduler.py +742 -0
  358. wandb/sdk/launch/sweeps/scheduler_sweep.py +91 -0
  359. wandb/sdk/launch/sweeps/utils.py +316 -0
  360. wandb/sdk/launch/utils.py +746 -0
  361. wandb/sdk/launch/wandb_reference.py +138 -0
  362. wandb/sdk/lib/__init__.py +5 -0
  363. wandb/sdk/lib/_settings_toposort_generate.py +159 -0
  364. wandb/sdk/lib/_settings_toposort_generated.py +250 -0
  365. wandb/sdk/lib/_wburls_generate.py +25 -0
  366. wandb/sdk/lib/_wburls_generated.py +22 -0
  367. wandb/sdk/lib/apikey.py +273 -0
  368. wandb/sdk/lib/capped_dict.py +26 -0
  369. wandb/sdk/lib/config_util.py +101 -0
  370. wandb/sdk/lib/credentials.py +141 -0
  371. wandb/sdk/lib/deprecate.py +42 -0
  372. wandb/sdk/lib/disabled.py +29 -0
  373. wandb/sdk/lib/exit_hooks.py +54 -0
  374. wandb/sdk/lib/file_stream_utils.py +118 -0
  375. wandb/sdk/lib/filenames.py +64 -0
  376. wandb/sdk/lib/filesystem.py +372 -0
  377. wandb/sdk/lib/fsm.py +174 -0
  378. wandb/sdk/lib/gitlib.py +239 -0
  379. wandb/sdk/lib/gql_request.py +65 -0
  380. wandb/sdk/lib/handler_util.py +21 -0
  381. wandb/sdk/lib/hashutil.py +84 -0
  382. wandb/sdk/lib/import_hooks.py +275 -0
  383. wandb/sdk/lib/ipython.py +146 -0
  384. wandb/sdk/lib/json_util.py +80 -0
  385. wandb/sdk/lib/lazyloader.py +63 -0
  386. wandb/sdk/lib/mailbox.py +460 -0
  387. wandb/sdk/lib/module.py +69 -0
  388. wandb/sdk/lib/paths.py +106 -0
  389. wandb/sdk/lib/preinit.py +42 -0
  390. wandb/sdk/lib/printer.py +313 -0
  391. wandb/sdk/lib/proto_util.py +90 -0
  392. wandb/sdk/lib/redirect.py +845 -0
  393. wandb/sdk/lib/reporting.py +99 -0
  394. wandb/sdk/lib/retry.py +289 -0
  395. wandb/sdk/lib/run_moment.py +78 -0
  396. wandb/sdk/lib/runid.py +12 -0
  397. wandb/sdk/lib/server.py +52 -0
  398. wandb/sdk/lib/service_connection.py +216 -0
  399. wandb/sdk/lib/service_token.py +94 -0
  400. wandb/sdk/lib/sock_client.py +295 -0
  401. wandb/sdk/lib/sparkline.py +45 -0
  402. wandb/sdk/lib/telemetry.py +100 -0
  403. wandb/sdk/lib/timed_input.py +133 -0
  404. wandb/sdk/lib/timer.py +19 -0
  405. wandb/sdk/lib/tracelog.py +255 -0
  406. wandb/sdk/lib/wburls.py +46 -0
  407. wandb/sdk/service/__init__.py +0 -0
  408. wandb/sdk/service/_startup_debug.py +22 -0
  409. wandb/sdk/service/port_file.py +53 -0
  410. wandb/sdk/service/server.py +116 -0
  411. wandb/sdk/service/server_sock.py +276 -0
  412. wandb/sdk/service/service.py +242 -0
  413. wandb/sdk/service/streams.py +417 -0
  414. wandb/sdk/verify/__init__.py +0 -0
  415. wandb/sdk/verify/verify.py +501 -0
  416. wandb/sdk/wandb_alerts.py +12 -0
  417. wandb/sdk/wandb_config.py +322 -0
  418. wandb/sdk/wandb_helper.py +54 -0
  419. wandb/sdk/wandb_init.py +1266 -0
  420. wandb/sdk/wandb_login.py +349 -0
  421. wandb/sdk/wandb_metric.py +110 -0
  422. wandb/sdk/wandb_require.py +97 -0
  423. wandb/sdk/wandb_require_helpers.py +44 -0
  424. wandb/sdk/wandb_run.py +4236 -0
  425. wandb/sdk/wandb_settings.py +2001 -0
  426. wandb/sdk/wandb_setup.py +409 -0
  427. wandb/sdk/wandb_summary.py +150 -0
  428. wandb/sdk/wandb_sweep.py +119 -0
  429. wandb/sdk/wandb_sync.py +81 -0
  430. wandb/sdk/wandb_watch.py +144 -0
  431. wandb/sklearn.py +35 -0
  432. wandb/sync/__init__.py +3 -0
  433. wandb/sync/sync.py +443 -0
  434. wandb/trigger.py +29 -0
  435. wandb/util.py +1956 -0
  436. wandb/vendor/__init__.py +0 -0
  437. wandb/vendor/gql-0.2.0/setup.py +40 -0
  438. wandb/vendor/gql-0.2.0/tests/__init__.py +0 -0
  439. wandb/vendor/gql-0.2.0/tests/starwars/__init__.py +0 -0
  440. wandb/vendor/gql-0.2.0/tests/starwars/fixtures.py +96 -0
  441. wandb/vendor/gql-0.2.0/tests/starwars/schema.py +146 -0
  442. wandb/vendor/gql-0.2.0/tests/starwars/test_dsl.py +293 -0
  443. wandb/vendor/gql-0.2.0/tests/starwars/test_query.py +355 -0
  444. wandb/vendor/gql-0.2.0/tests/starwars/test_validation.py +171 -0
  445. wandb/vendor/gql-0.2.0/tests/test_client.py +31 -0
  446. wandb/vendor/gql-0.2.0/tests/test_transport.py +89 -0
  447. wandb/vendor/gql-0.2.0/wandb_gql/__init__.py +4 -0
  448. wandb/vendor/gql-0.2.0/wandb_gql/client.py +75 -0
  449. wandb/vendor/gql-0.2.0/wandb_gql/dsl.py +152 -0
  450. wandb/vendor/gql-0.2.0/wandb_gql/gql.py +10 -0
  451. wandb/vendor/gql-0.2.0/wandb_gql/transport/__init__.py +0 -0
  452. wandb/vendor/gql-0.2.0/wandb_gql/transport/http.py +6 -0
  453. wandb/vendor/gql-0.2.0/wandb_gql/transport/local_schema.py +15 -0
  454. wandb/vendor/gql-0.2.0/wandb_gql/transport/requests.py +46 -0
  455. wandb/vendor/gql-0.2.0/wandb_gql/utils.py +21 -0
  456. wandb/vendor/graphql-core-1.1/setup.py +86 -0
  457. wandb/vendor/graphql-core-1.1/wandb_graphql/__init__.py +287 -0
  458. wandb/vendor/graphql-core-1.1/wandb_graphql/error/__init__.py +6 -0
  459. wandb/vendor/graphql-core-1.1/wandb_graphql/error/base.py +42 -0
  460. wandb/vendor/graphql-core-1.1/wandb_graphql/error/format_error.py +11 -0
  461. wandb/vendor/graphql-core-1.1/wandb_graphql/error/located_error.py +29 -0
  462. wandb/vendor/graphql-core-1.1/wandb_graphql/error/syntax_error.py +36 -0
  463. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/__init__.py +26 -0
  464. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/base.py +311 -0
  465. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executor.py +398 -0
  466. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/__init__.py +0 -0
  467. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/asyncio.py +53 -0
  468. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/gevent.py +22 -0
  469. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/process.py +32 -0
  470. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/sync.py +7 -0
  471. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/thread.py +35 -0
  472. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/executors/utils.py +6 -0
  473. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/__init__.py +0 -0
  474. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/executor.py +66 -0
  475. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/fragment.py +252 -0
  476. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/resolver.py +151 -0
  477. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/experimental/utils.py +7 -0
  478. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/middleware.py +57 -0
  479. wandb/vendor/graphql-core-1.1/wandb_graphql/execution/values.py +145 -0
  480. wandb/vendor/graphql-core-1.1/wandb_graphql/graphql.py +60 -0
  481. wandb/vendor/graphql-core-1.1/wandb_graphql/language/__init__.py +0 -0
  482. wandb/vendor/graphql-core-1.1/wandb_graphql/language/ast.py +1349 -0
  483. wandb/vendor/graphql-core-1.1/wandb_graphql/language/base.py +19 -0
  484. wandb/vendor/graphql-core-1.1/wandb_graphql/language/lexer.py +435 -0
  485. wandb/vendor/graphql-core-1.1/wandb_graphql/language/location.py +30 -0
  486. wandb/vendor/graphql-core-1.1/wandb_graphql/language/parser.py +779 -0
  487. wandb/vendor/graphql-core-1.1/wandb_graphql/language/printer.py +193 -0
  488. wandb/vendor/graphql-core-1.1/wandb_graphql/language/source.py +18 -0
  489. wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor.py +222 -0
  490. wandb/vendor/graphql-core-1.1/wandb_graphql/language/visitor_meta.py +82 -0
  491. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/__init__.py +0 -0
  492. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/cached_property.py +17 -0
  493. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/contain_subset.py +28 -0
  494. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/default_ordered_dict.py +40 -0
  495. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/ordereddict.py +8 -0
  496. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/pair_set.py +43 -0
  497. wandb/vendor/graphql-core-1.1/wandb_graphql/pyutils/version.py +78 -0
  498. wandb/vendor/graphql-core-1.1/wandb_graphql/type/__init__.py +67 -0
  499. wandb/vendor/graphql-core-1.1/wandb_graphql/type/definition.py +619 -0
  500. wandb/vendor/graphql-core-1.1/wandb_graphql/type/directives.py +132 -0
  501. wandb/vendor/graphql-core-1.1/wandb_graphql/type/introspection.py +440 -0
  502. wandb/vendor/graphql-core-1.1/wandb_graphql/type/scalars.py +131 -0
  503. wandb/vendor/graphql-core-1.1/wandb_graphql/type/schema.py +100 -0
  504. wandb/vendor/graphql-core-1.1/wandb_graphql/type/typemap.py +145 -0
  505. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/__init__.py +0 -0
  506. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/assert_valid_name.py +9 -0
  507. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_from_value.py +65 -0
  508. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_code.py +49 -0
  509. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/ast_to_dict.py +24 -0
  510. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/base.py +75 -0
  511. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_ast_schema.py +291 -0
  512. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/build_client_schema.py +250 -0
  513. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/concat_ast.py +9 -0
  514. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/extend_schema.py +357 -0
  515. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_field_def.py +27 -0
  516. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/get_operation_ast.py +21 -0
  517. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/introspection_query.py +90 -0
  518. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_literal_value.py +67 -0
  519. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/is_valid_value.py +66 -0
  520. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/quoted_or_list.py +21 -0
  521. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/schema_printer.py +168 -0
  522. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/suggestion_list.py +56 -0
  523. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_comparators.py +69 -0
  524. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_from_ast.py +21 -0
  525. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/type_info.py +149 -0
  526. wandb/vendor/graphql-core-1.1/wandb_graphql/utils/value_from_ast.py +69 -0
  527. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/__init__.py +4 -0
  528. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/__init__.py +79 -0
  529. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/arguments_of_correct_type.py +24 -0
  530. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/base.py +8 -0
  531. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/default_values_of_correct_type.py +44 -0
  532. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fields_on_correct_type.py +113 -0
  533. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/fragments_on_composite_types.py +33 -0
  534. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_argument_names.py +70 -0
  535. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_directives.py +97 -0
  536. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_fragment_names.py +19 -0
  537. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/known_type_names.py +43 -0
  538. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/lone_anonymous_operation.py +23 -0
  539. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_fragment_cycles.py +59 -0
  540. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_undefined_variables.py +36 -0
  541. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_fragments.py +38 -0
  542. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/no_unused_variables.py +37 -0
  543. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/overlapping_fields_can_be_merged.py +529 -0
  544. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/possible_fragment_spreads.py +44 -0
  545. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/provided_non_null_arguments.py +46 -0
  546. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/scalar_leafs.py +33 -0
  547. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_argument_names.py +32 -0
  548. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_fragment_names.py +28 -0
  549. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_input_field_names.py +33 -0
  550. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_operation_names.py +31 -0
  551. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/unique_variable_names.py +27 -0
  552. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_are_input_types.py +21 -0
  553. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/rules/variables_in_allowed_position.py +53 -0
  554. wandb/vendor/graphql-core-1.1/wandb_graphql/validation/validation.py +158 -0
  555. wandb/vendor/promise-2.3.0/conftest.py +30 -0
  556. wandb/vendor/promise-2.3.0/setup.py +64 -0
  557. wandb/vendor/promise-2.3.0/tests/__init__.py +0 -0
  558. wandb/vendor/promise-2.3.0/tests/conftest.py +8 -0
  559. wandb/vendor/promise-2.3.0/tests/test_awaitable.py +32 -0
  560. wandb/vendor/promise-2.3.0/tests/test_awaitable_35.py +47 -0
  561. wandb/vendor/promise-2.3.0/tests/test_benchmark.py +116 -0
  562. wandb/vendor/promise-2.3.0/tests/test_complex_threads.py +23 -0
  563. wandb/vendor/promise-2.3.0/tests/test_dataloader.py +452 -0
  564. wandb/vendor/promise-2.3.0/tests/test_dataloader_awaitable_35.py +99 -0
  565. wandb/vendor/promise-2.3.0/tests/test_dataloader_extra.py +65 -0
  566. wandb/vendor/promise-2.3.0/tests/test_extra.py +670 -0
  567. wandb/vendor/promise-2.3.0/tests/test_issues.py +132 -0
  568. wandb/vendor/promise-2.3.0/tests/test_promise_list.py +70 -0
  569. wandb/vendor/promise-2.3.0/tests/test_spec.py +584 -0
  570. wandb/vendor/promise-2.3.0/tests/test_thread_safety.py +115 -0
  571. wandb/vendor/promise-2.3.0/tests/utils.py +3 -0
  572. wandb/vendor/promise-2.3.0/wandb_promise/__init__.py +38 -0
  573. wandb/vendor/promise-2.3.0/wandb_promise/async_.py +135 -0
  574. wandb/vendor/promise-2.3.0/wandb_promise/compat.py +32 -0
  575. wandb/vendor/promise-2.3.0/wandb_promise/dataloader.py +326 -0
  576. wandb/vendor/promise-2.3.0/wandb_promise/iterate_promise.py +12 -0
  577. wandb/vendor/promise-2.3.0/wandb_promise/promise.py +848 -0
  578. wandb/vendor/promise-2.3.0/wandb_promise/promise_list.py +151 -0
  579. wandb/vendor/promise-2.3.0/wandb_promise/pyutils/__init__.py +0 -0
  580. wandb/vendor/promise-2.3.0/wandb_promise/pyutils/version.py +83 -0
  581. wandb/vendor/promise-2.3.0/wandb_promise/schedulers/__init__.py +0 -0
  582. wandb/vendor/promise-2.3.0/wandb_promise/schedulers/asyncio.py +22 -0
  583. wandb/vendor/promise-2.3.0/wandb_promise/schedulers/gevent.py +21 -0
  584. wandb/vendor/promise-2.3.0/wandb_promise/schedulers/immediate.py +27 -0
  585. wandb/vendor/promise-2.3.0/wandb_promise/schedulers/thread.py +18 -0
  586. wandb/vendor/promise-2.3.0/wandb_promise/utils.py +56 -0
  587. wandb/vendor/pygments/__init__.py +90 -0
  588. wandb/vendor/pygments/cmdline.py +568 -0
  589. wandb/vendor/pygments/console.py +74 -0
  590. wandb/vendor/pygments/filter.py +74 -0
  591. wandb/vendor/pygments/filters/__init__.py +350 -0
  592. wandb/vendor/pygments/formatter.py +95 -0
  593. wandb/vendor/pygments/formatters/__init__.py +153 -0
  594. wandb/vendor/pygments/formatters/_mapping.py +85 -0
  595. wandb/vendor/pygments/formatters/bbcode.py +109 -0
  596. wandb/vendor/pygments/formatters/html.py +851 -0
  597. wandb/vendor/pygments/formatters/img.py +600 -0
  598. wandb/vendor/pygments/formatters/irc.py +182 -0
  599. wandb/vendor/pygments/formatters/latex.py +482 -0
  600. wandb/vendor/pygments/formatters/other.py +160 -0
  601. wandb/vendor/pygments/formatters/rtf.py +147 -0
  602. wandb/vendor/pygments/formatters/svg.py +153 -0
  603. wandb/vendor/pygments/formatters/terminal.py +136 -0
  604. wandb/vendor/pygments/formatters/terminal256.py +309 -0
  605. wandb/vendor/pygments/lexer.py +871 -0
  606. wandb/vendor/pygments/lexers/__init__.py +329 -0
  607. wandb/vendor/pygments/lexers/_asy_builtins.py +1645 -0
  608. wandb/vendor/pygments/lexers/_cl_builtins.py +232 -0
  609. wandb/vendor/pygments/lexers/_cocoa_builtins.py +72 -0
  610. wandb/vendor/pygments/lexers/_csound_builtins.py +1346 -0
  611. wandb/vendor/pygments/lexers/_lasso_builtins.py +5327 -0
  612. wandb/vendor/pygments/lexers/_lua_builtins.py +295 -0
  613. wandb/vendor/pygments/lexers/_mapping.py +500 -0
  614. wandb/vendor/pygments/lexers/_mql_builtins.py +1172 -0
  615. wandb/vendor/pygments/lexers/_openedge_builtins.py +2547 -0
  616. wandb/vendor/pygments/lexers/_php_builtins.py +4756 -0
  617. wandb/vendor/pygments/lexers/_postgres_builtins.py +621 -0
  618. wandb/vendor/pygments/lexers/_scilab_builtins.py +3094 -0
  619. wandb/vendor/pygments/lexers/_sourcemod_builtins.py +1163 -0
  620. wandb/vendor/pygments/lexers/_stan_builtins.py +532 -0
  621. wandb/vendor/pygments/lexers/_stata_builtins.py +419 -0
  622. wandb/vendor/pygments/lexers/_tsql_builtins.py +1004 -0
  623. wandb/vendor/pygments/lexers/_vim_builtins.py +1939 -0
  624. wandb/vendor/pygments/lexers/actionscript.py +240 -0
  625. wandb/vendor/pygments/lexers/agile.py +24 -0
  626. wandb/vendor/pygments/lexers/algebra.py +221 -0
  627. wandb/vendor/pygments/lexers/ambient.py +76 -0
  628. wandb/vendor/pygments/lexers/ampl.py +87 -0
  629. wandb/vendor/pygments/lexers/apl.py +101 -0
  630. wandb/vendor/pygments/lexers/archetype.py +318 -0
  631. wandb/vendor/pygments/lexers/asm.py +641 -0
  632. wandb/vendor/pygments/lexers/automation.py +374 -0
  633. wandb/vendor/pygments/lexers/basic.py +500 -0
  634. wandb/vendor/pygments/lexers/bibtex.py +160 -0
  635. wandb/vendor/pygments/lexers/business.py +612 -0
  636. wandb/vendor/pygments/lexers/c_cpp.py +252 -0
  637. wandb/vendor/pygments/lexers/c_like.py +541 -0
  638. wandb/vendor/pygments/lexers/capnproto.py +78 -0
  639. wandb/vendor/pygments/lexers/chapel.py +102 -0
  640. wandb/vendor/pygments/lexers/clean.py +288 -0
  641. wandb/vendor/pygments/lexers/compiled.py +34 -0
  642. wandb/vendor/pygments/lexers/configs.py +833 -0
  643. wandb/vendor/pygments/lexers/console.py +114 -0
  644. wandb/vendor/pygments/lexers/crystal.py +393 -0
  645. wandb/vendor/pygments/lexers/csound.py +366 -0
  646. wandb/vendor/pygments/lexers/css.py +689 -0
  647. wandb/vendor/pygments/lexers/d.py +251 -0
  648. wandb/vendor/pygments/lexers/dalvik.py +125 -0
  649. wandb/vendor/pygments/lexers/data.py +555 -0
  650. wandb/vendor/pygments/lexers/diff.py +165 -0
  651. wandb/vendor/pygments/lexers/dotnet.py +691 -0
  652. wandb/vendor/pygments/lexers/dsls.py +878 -0
  653. wandb/vendor/pygments/lexers/dylan.py +289 -0
  654. wandb/vendor/pygments/lexers/ecl.py +125 -0
  655. wandb/vendor/pygments/lexers/eiffel.py +65 -0
  656. wandb/vendor/pygments/lexers/elm.py +121 -0
  657. wandb/vendor/pygments/lexers/erlang.py +533 -0
  658. wandb/vendor/pygments/lexers/esoteric.py +277 -0
  659. wandb/vendor/pygments/lexers/ezhil.py +69 -0
  660. wandb/vendor/pygments/lexers/factor.py +344 -0
  661. wandb/vendor/pygments/lexers/fantom.py +250 -0
  662. wandb/vendor/pygments/lexers/felix.py +273 -0
  663. wandb/vendor/pygments/lexers/forth.py +177 -0
  664. wandb/vendor/pygments/lexers/fortran.py +205 -0
  665. wandb/vendor/pygments/lexers/foxpro.py +428 -0
  666. wandb/vendor/pygments/lexers/functional.py +21 -0
  667. wandb/vendor/pygments/lexers/go.py +101 -0
  668. wandb/vendor/pygments/lexers/grammar_notation.py +213 -0
  669. wandb/vendor/pygments/lexers/graph.py +80 -0
  670. wandb/vendor/pygments/lexers/graphics.py +553 -0
  671. wandb/vendor/pygments/lexers/haskell.py +843 -0
  672. wandb/vendor/pygments/lexers/haxe.py +936 -0
  673. wandb/vendor/pygments/lexers/hdl.py +382 -0
  674. wandb/vendor/pygments/lexers/hexdump.py +103 -0
  675. wandb/vendor/pygments/lexers/html.py +602 -0
  676. wandb/vendor/pygments/lexers/idl.py +270 -0
  677. wandb/vendor/pygments/lexers/igor.py +288 -0
  678. wandb/vendor/pygments/lexers/inferno.py +96 -0
  679. wandb/vendor/pygments/lexers/installers.py +322 -0
  680. wandb/vendor/pygments/lexers/int_fiction.py +1343 -0
  681. wandb/vendor/pygments/lexers/iolang.py +63 -0
  682. wandb/vendor/pygments/lexers/j.py +146 -0
  683. wandb/vendor/pygments/lexers/javascript.py +1525 -0
  684. wandb/vendor/pygments/lexers/julia.py +333 -0
  685. wandb/vendor/pygments/lexers/jvm.py +1573 -0
  686. wandb/vendor/pygments/lexers/lisp.py +2621 -0
  687. wandb/vendor/pygments/lexers/make.py +202 -0
  688. wandb/vendor/pygments/lexers/markup.py +595 -0
  689. wandb/vendor/pygments/lexers/math.py +21 -0
  690. wandb/vendor/pygments/lexers/matlab.py +663 -0
  691. wandb/vendor/pygments/lexers/ml.py +769 -0
  692. wandb/vendor/pygments/lexers/modeling.py +358 -0
  693. wandb/vendor/pygments/lexers/modula2.py +1561 -0
  694. wandb/vendor/pygments/lexers/monte.py +204 -0
  695. wandb/vendor/pygments/lexers/ncl.py +894 -0
  696. wandb/vendor/pygments/lexers/nimrod.py +159 -0
  697. wandb/vendor/pygments/lexers/nit.py +64 -0
  698. wandb/vendor/pygments/lexers/nix.py +136 -0
  699. wandb/vendor/pygments/lexers/oberon.py +105 -0
  700. wandb/vendor/pygments/lexers/objective.py +504 -0
  701. wandb/vendor/pygments/lexers/ooc.py +85 -0
  702. wandb/vendor/pygments/lexers/other.py +41 -0
  703. wandb/vendor/pygments/lexers/parasail.py +79 -0
  704. wandb/vendor/pygments/lexers/parsers.py +835 -0
  705. wandb/vendor/pygments/lexers/pascal.py +644 -0
  706. wandb/vendor/pygments/lexers/pawn.py +199 -0
  707. wandb/vendor/pygments/lexers/perl.py +620 -0
  708. wandb/vendor/pygments/lexers/php.py +267 -0
  709. wandb/vendor/pygments/lexers/praat.py +294 -0
  710. wandb/vendor/pygments/lexers/prolog.py +306 -0
  711. wandb/vendor/pygments/lexers/python.py +939 -0
  712. wandb/vendor/pygments/lexers/qvt.py +152 -0
  713. wandb/vendor/pygments/lexers/r.py +453 -0
  714. wandb/vendor/pygments/lexers/rdf.py +270 -0
  715. wandb/vendor/pygments/lexers/rebol.py +431 -0
  716. wandb/vendor/pygments/lexers/resource.py +85 -0
  717. wandb/vendor/pygments/lexers/rnc.py +67 -0
  718. wandb/vendor/pygments/lexers/roboconf.py +82 -0
  719. wandb/vendor/pygments/lexers/robotframework.py +560 -0
  720. wandb/vendor/pygments/lexers/ruby.py +519 -0
  721. wandb/vendor/pygments/lexers/rust.py +220 -0
  722. wandb/vendor/pygments/lexers/sas.py +228 -0
  723. wandb/vendor/pygments/lexers/scripting.py +1222 -0
  724. wandb/vendor/pygments/lexers/shell.py +794 -0
  725. wandb/vendor/pygments/lexers/smalltalk.py +195 -0
  726. wandb/vendor/pygments/lexers/smv.py +79 -0
  727. wandb/vendor/pygments/lexers/snobol.py +83 -0
  728. wandb/vendor/pygments/lexers/special.py +103 -0
  729. wandb/vendor/pygments/lexers/sql.py +681 -0
  730. wandb/vendor/pygments/lexers/stata.py +108 -0
  731. wandb/vendor/pygments/lexers/supercollider.py +90 -0
  732. wandb/vendor/pygments/lexers/tcl.py +145 -0
  733. wandb/vendor/pygments/lexers/templates.py +2283 -0
  734. wandb/vendor/pygments/lexers/testing.py +207 -0
  735. wandb/vendor/pygments/lexers/text.py +25 -0
  736. wandb/vendor/pygments/lexers/textedit.py +169 -0
  737. wandb/vendor/pygments/lexers/textfmts.py +297 -0
  738. wandb/vendor/pygments/lexers/theorem.py +458 -0
  739. wandb/vendor/pygments/lexers/trafficscript.py +54 -0
  740. wandb/vendor/pygments/lexers/typoscript.py +226 -0
  741. wandb/vendor/pygments/lexers/urbi.py +133 -0
  742. wandb/vendor/pygments/lexers/varnish.py +190 -0
  743. wandb/vendor/pygments/lexers/verification.py +111 -0
  744. wandb/vendor/pygments/lexers/web.py +24 -0
  745. wandb/vendor/pygments/lexers/webmisc.py +988 -0
  746. wandb/vendor/pygments/lexers/whiley.py +116 -0
  747. wandb/vendor/pygments/lexers/x10.py +69 -0
  748. wandb/vendor/pygments/modeline.py +44 -0
  749. wandb/vendor/pygments/plugin.py +68 -0
  750. wandb/vendor/pygments/regexopt.py +92 -0
  751. wandb/vendor/pygments/scanner.py +105 -0
  752. wandb/vendor/pygments/sphinxext.py +158 -0
  753. wandb/vendor/pygments/style.py +155 -0
  754. wandb/vendor/pygments/styles/__init__.py +80 -0
  755. wandb/vendor/pygments/styles/abap.py +29 -0
  756. wandb/vendor/pygments/styles/algol.py +63 -0
  757. wandb/vendor/pygments/styles/algol_nu.py +63 -0
  758. wandb/vendor/pygments/styles/arduino.py +98 -0
  759. wandb/vendor/pygments/styles/autumn.py +65 -0
  760. wandb/vendor/pygments/styles/borland.py +51 -0
  761. wandb/vendor/pygments/styles/bw.py +49 -0
  762. wandb/vendor/pygments/styles/colorful.py +81 -0
  763. wandb/vendor/pygments/styles/default.py +73 -0
  764. wandb/vendor/pygments/styles/emacs.py +72 -0
  765. wandb/vendor/pygments/styles/friendly.py +72 -0
  766. wandb/vendor/pygments/styles/fruity.py +42 -0
  767. wandb/vendor/pygments/styles/igor.py +29 -0
  768. wandb/vendor/pygments/styles/lovelace.py +97 -0
  769. wandb/vendor/pygments/styles/manni.py +75 -0
  770. wandb/vendor/pygments/styles/monokai.py +106 -0
  771. wandb/vendor/pygments/styles/murphy.py +80 -0
  772. wandb/vendor/pygments/styles/native.py +65 -0
  773. wandb/vendor/pygments/styles/paraiso_dark.py +125 -0
  774. wandb/vendor/pygments/styles/paraiso_light.py +125 -0
  775. wandb/vendor/pygments/styles/pastie.py +75 -0
  776. wandb/vendor/pygments/styles/perldoc.py +69 -0
  777. wandb/vendor/pygments/styles/rainbow_dash.py +89 -0
  778. wandb/vendor/pygments/styles/rrt.py +33 -0
  779. wandb/vendor/pygments/styles/sas.py +44 -0
  780. wandb/vendor/pygments/styles/stata.py +40 -0
  781. wandb/vendor/pygments/styles/tango.py +141 -0
  782. wandb/vendor/pygments/styles/trac.py +63 -0
  783. wandb/vendor/pygments/styles/vim.py +63 -0
  784. wandb/vendor/pygments/styles/vs.py +38 -0
  785. wandb/vendor/pygments/styles/xcode.py +51 -0
  786. wandb/vendor/pygments/token.py +213 -0
  787. wandb/vendor/pygments/unistring.py +217 -0
  788. wandb/vendor/pygments/util.py +388 -0
  789. wandb/vendor/pynvml/__init__.py +0 -0
  790. wandb/vendor/pynvml/pynvml.py +4779 -0
  791. wandb/vendor/watchdog_0_9_0/wandb_watchdog/__init__.py +17 -0
  792. wandb/vendor/watchdog_0_9_0/wandb_watchdog/events.py +615 -0
  793. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/__init__.py +98 -0
  794. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/api.py +369 -0
  795. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents.py +172 -0
  796. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/fsevents2.py +239 -0
  797. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify.py +218 -0
  798. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_buffer.py +81 -0
  799. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/inotify_c.py +575 -0
  800. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/kqueue.py +730 -0
  801. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/polling.py +145 -0
  802. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/read_directory_changes.py +133 -0
  803. wandb/vendor/watchdog_0_9_0/wandb_watchdog/observers/winapi.py +348 -0
  804. wandb/vendor/watchdog_0_9_0/wandb_watchdog/patterns.py +265 -0
  805. wandb/vendor/watchdog_0_9_0/wandb_watchdog/tricks/__init__.py +174 -0
  806. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/__init__.py +151 -0
  807. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/bricks.py +249 -0
  808. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/compat.py +29 -0
  809. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/decorators.py +198 -0
  810. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/delayed_queue.py +88 -0
  811. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/dirsnapshot.py +293 -0
  812. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/echo.py +157 -0
  813. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/event_backport.py +41 -0
  814. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/importlib2.py +40 -0
  815. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/platform.py +57 -0
  816. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/unicode_paths.py +64 -0
  817. wandb/vendor/watchdog_0_9_0/wandb_watchdog/utils/win32stat.py +123 -0
  818. wandb/vendor/watchdog_0_9_0/wandb_watchdog/version.py +28 -0
  819. wandb/vendor/watchdog_0_9_0/wandb_watchdog/watchmedo.py +577 -0
  820. wandb/wandb_agent.py +588 -0
  821. wandb/wandb_controller.py +721 -0
  822. wandb/wandb_run.py +9 -0
  823. wandb-0.18.2.dist-info/METADATA +213 -0
  824. wandb-0.18.2.dist-info/RECORD +827 -0
  825. wandb-0.18.2.dist-info/WHEEL +5 -0
  826. wandb-0.18.2.dist-info/entry_points.txt +3 -0
  827. wandb-0.18.2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,848 @@
1
+ from collections import namedtuple
2
+ from functools import partial, wraps
3
+ from sys import version_info, exc_info
4
+ from threading import RLock
5
+ from types import TracebackType
6
+ from weakref import WeakKeyDictionary
7
+
8
+ from .async_ import Async
9
+ from .compat import (
10
+ Future,
11
+ ensure_future,
12
+ iscoroutine, # type: ignore
13
+ iterate_promise,
14
+ ) # type: ignore
15
+ from .utils import deprecated, integer_types, string_types, text_type, binary_type, warn
16
+ from .promise_list import PromiseList
17
+ from .schedulers.immediate import ImmediateScheduler
18
+ from typing import TypeVar, Generic
19
+
20
+ # from .schedulers.gevent import GeventScheduler
21
+ # from .schedulers.asyncio import AsyncioScheduler
22
+ # from .schedulers.thread import ThreadScheduler
23
+
24
+ if False:
25
+ from typing import (
26
+ Type,
27
+ List,
28
+ Any,
29
+ Callable,
30
+ Dict,
31
+ Iterator,
32
+ Optional, # flake8: noqa
33
+ Tuple,
34
+ Union,
35
+ Generic,
36
+ Hashable,
37
+ MutableMapping,
38
+ )
39
+
40
+
41
+ default_scheduler = ImmediateScheduler()
42
+
43
+ async_instance = Async()
44
+
45
+
46
+ def get_default_scheduler():
47
+ # type: () -> ImmediateScheduler
48
+ return default_scheduler
49
+
50
+
51
+ def set_default_scheduler(scheduler):
52
+ global default_scheduler
53
+ default_scheduler = scheduler
54
+
55
+
56
+ IS_PYTHON2 = version_info[0] == 2
57
+ DEFAULT_TIMEOUT = None # type: Optional[float]
58
+
59
+ MAX_LENGTH = 0xFFFF | 0
60
+ CALLBACK_SIZE = 3
61
+
62
+ CALLBACK_FULFILL_OFFSET = 0
63
+ CALLBACK_REJECT_OFFSET = 1
64
+ CALLBACK_PROMISE_OFFSET = 2
65
+
66
+ BASE_TYPES = set(
67
+ integer_types
68
+ + string_types
69
+ + (bool, float, complex, tuple, list, dict, text_type, binary_type)
70
+ )
71
+
72
+ # These are the potential states of a promise
73
+ STATE_PENDING = -1
74
+ STATE_REJECTED = 0
75
+ STATE_FULFILLED = 1
76
+
77
+
78
+ def make_self_resolution_error():
79
+ # type: () -> TypeError
80
+ return TypeError("Promise is self")
81
+
82
+
83
+ def try_catch(handler, *args, **kwargs):
84
+ # type: (Callable, Any, Any) -> Union[Tuple[Any, None], Tuple[None, Tuple[Exception, Optional[TracebackType]]]]
85
+ try:
86
+ return (handler(*args, **kwargs), None)
87
+ except Exception as e:
88
+ tb = exc_info()[2]
89
+ return (None, (e, tb))
90
+
91
+
92
+ T = TypeVar("T")
93
+ S = TypeVar("S", contravariant=True)
94
+
95
+
96
+ class Promise(Generic[T]):
97
+ """
98
+ This is the Promise class that complies
99
+ Promises/A+ specification.
100
+ """
101
+
102
+ # __slots__ = ('_state', '_is_final', '_is_bound', '_is_following', '_is_async_guaranteed',
103
+ # '_length', '_handlers', '_fulfillment_handler0', '_rejection_handler0', '_promise0',
104
+ # '_is_waiting', '_future', '_trace', '_event_instance'
105
+ # )
106
+
107
+ _state = STATE_PENDING # type: int
108
+ _is_final = False
109
+ _is_bound = False
110
+ _is_following = False
111
+ _is_async_guaranteed = False
112
+ _length = 0
113
+ _handlers = None # type: Dict[int, Union[Callable, Promise, None]]
114
+ _fulfillment_handler0 = None # type: Any
115
+ _rejection_handler0 = None # type: Any
116
+ _promise0 = None # type: Optional[Promise]
117
+ _future = None # type: Future
118
+ _traceback = None # type: Optional[TracebackType]
119
+ # _trace = None
120
+ _is_waiting = False
121
+ _scheduler = None
122
+
123
+ def __init__(self, executor=None, scheduler=None):
124
+ # type: (Optional[Callable[[Callable[[T], None], Callable[[Exception], None]], None]], Any) -> None
125
+ """
126
+ Initialize the Promise into a pending state.
127
+ """
128
+ # self._state = STATE_PENDING # type: int
129
+ # self._is_final = False
130
+ # self._is_bound = False
131
+ # self._is_following = False
132
+ # self._is_async_guaranteed = False
133
+ # self._length = 0
134
+ # self._handlers = None # type: Dict[int, Union[Callable, None]]
135
+ # self._fulfillment_handler0 = None # type: Union[Callable, partial]
136
+ # self._rejection_handler0 = None # type: Union[Callable, partial]
137
+ # self._promise0 = None # type: Promise
138
+ # self._future = None # type: Future
139
+ # self._event_instance = None # type: Event
140
+
141
+ # self._is_waiting = False
142
+ self._scheduler = scheduler
143
+
144
+ if executor is not None:
145
+ self._resolve_from_executor(executor)
146
+
147
+ # For compatibility reasons
148
+ # self.reject = self._deprecated_reject
149
+ # self.resolve = self._deprecated_resolve
150
+
151
+ @property
152
+ def scheduler(self):
153
+ # type: () -> ImmediateScheduler
154
+ return self._scheduler or default_scheduler
155
+
156
+ @property
157
+ def future(self):
158
+ # type: (Promise) -> Future
159
+ if not self._future:
160
+ self._future = Future() # type: ignore
161
+ self._then( # type: ignore
162
+ self._future.set_result, self._future.set_exception
163
+ )
164
+ return self._future
165
+
166
+ def __iter__(self):
167
+ # type: () -> Iterator
168
+ return iterate_promise(self._target()) # type: ignore
169
+
170
+ __await__ = __iter__
171
+
172
+ @deprecated(
173
+ "Rejecting directly in a Promise instance is deprecated, as Promise.reject() is now a class method. "
174
+ "Please use promise.do_reject() instead.",
175
+ name="reject",
176
+ )
177
+ def _deprecated_reject(self, e):
178
+ self.do_reject(e)
179
+
180
+ @deprecated(
181
+ "Resolving directly in a Promise instance is deprecated, as Promise.resolve() is now a class method. "
182
+ "Please use promise.do_resolve() instead.",
183
+ name="resolve",
184
+ )
185
+ def _deprecated_resolve(self, value):
186
+ self.do_resolve(value)
187
+
188
+ def _resolve_callback(self, value):
189
+ # type: (T) -> None
190
+ if value is self:
191
+ return self._reject_callback(make_self_resolution_error(), False)
192
+
193
+ if not self.is_thenable(value):
194
+ return self._fulfill(value)
195
+
196
+ promise = self._try_convert_to_promise(value)._target()
197
+ if promise == self:
198
+ self._reject(make_self_resolution_error())
199
+ return
200
+
201
+ if promise._state == STATE_PENDING:
202
+ len = self._length
203
+ if len > 0:
204
+ promise._migrate_callback0(self)
205
+ for i in range(1, len):
206
+ promise._migrate_callback_at(self, i)
207
+
208
+ self._is_following = True
209
+ self._length = 0
210
+ self._set_followee(promise)
211
+ elif promise._state == STATE_FULFILLED:
212
+ self._fulfill(promise._value())
213
+ elif promise._state == STATE_REJECTED:
214
+ self._reject(promise._reason(), promise._target()._traceback)
215
+
216
+ def _settled_value(self, _raise=False):
217
+ # type: (bool) -> Any
218
+ assert not self._is_following
219
+
220
+ if self._state == STATE_FULFILLED:
221
+ return self._rejection_handler0
222
+ elif self._state == STATE_REJECTED:
223
+ if _raise:
224
+ raise_val = self._fulfillment_handler0
225
+ raise raise_val.with_traceback(self._traceback)
226
+ return self._fulfillment_handler0
227
+
228
+ def _fulfill(self, value):
229
+ # type: (T) -> None
230
+ if value is self:
231
+ err = make_self_resolution_error()
232
+ # self._attach_extratrace(err)
233
+ return self._reject(err)
234
+ self._state = STATE_FULFILLED
235
+ self._rejection_handler0 = value
236
+
237
+ if self._length > 0:
238
+ if self._is_async_guaranteed:
239
+ self._settle_promises()
240
+ else:
241
+ async_instance.settle_promises(self)
242
+
243
+ def _reject(self, reason, traceback=None):
244
+ # type: (Exception, Optional[TracebackType]) -> None
245
+ self._state = STATE_REJECTED
246
+ self._fulfillment_handler0 = reason
247
+ self._traceback = traceback
248
+
249
+ if self._is_final:
250
+ assert self._length == 0
251
+ async_instance.fatal_error(reason, self.scheduler)
252
+ return
253
+
254
+ if self._length > 0:
255
+ async_instance.settle_promises(self)
256
+ else:
257
+ self._ensure_possible_rejection_handled()
258
+
259
+ if self._is_async_guaranteed:
260
+ self._settle_promises()
261
+ else:
262
+ async_instance.settle_promises(self)
263
+
264
+ def _ensure_possible_rejection_handled(self):
265
+ # type: () -> None
266
+ # self._rejection_is_unhandled = True
267
+ # async_instance.invoke_later(self._notify_unhandled_rejection, self)
268
+ pass
269
+
270
+ def _reject_callback(self, reason, synchronous=False, traceback=None):
271
+ # type: (Exception, bool, Optional[TracebackType]) -> None
272
+ assert isinstance(
273
+ reason, Exception
274
+ ), "A promise was rejected with a non-error: {}".format(reason)
275
+ # trace = ensure_error_object(reason)
276
+ # has_stack = trace is reason
277
+ # self._attach_extratrace(trace, synchronous and has_stack)
278
+ self._reject(reason, traceback)
279
+
280
+ def _clear_callback_data_index_at(self, index):
281
+ # type: (int) -> None
282
+ assert not self._is_following
283
+ assert index > 0
284
+ base = index * CALLBACK_SIZE - CALLBACK_SIZE
285
+ self._handlers[base + CALLBACK_PROMISE_OFFSET] = None
286
+ self._handlers[base + CALLBACK_FULFILL_OFFSET] = None
287
+ self._handlers[base + CALLBACK_REJECT_OFFSET] = None
288
+
289
+ def _fulfill_promises(self, length, value):
290
+ # type: (int, T) -> None
291
+ for i in range(1, length):
292
+ handler = self._fulfillment_handler_at(i)
293
+ promise = self._promise_at(i)
294
+ self._clear_callback_data_index_at(i)
295
+ self._settle_promise(promise, handler, value, None)
296
+
297
+ def _reject_promises(self, length, reason):
298
+ # type: (int, Exception) -> None
299
+ for i in range(1, length):
300
+ handler = self._rejection_handler_at(i)
301
+ promise = self._promise_at(i)
302
+ self._clear_callback_data_index_at(i)
303
+ self._settle_promise(promise, handler, reason, None)
304
+
305
+ def _settle_promise(
306
+ self,
307
+ promise, # type: Optional[Promise]
308
+ handler, # type: Optional[Callable]
309
+ value, # type: Union[T, Exception]
310
+ traceback, # type: Optional[TracebackType]
311
+ ):
312
+ # type: (...) -> None
313
+ assert not self._is_following
314
+ is_promise = isinstance(promise, self.__class__)
315
+ async_guaranteed = self._is_async_guaranteed
316
+ if callable(handler):
317
+ if not is_promise:
318
+ handler(value) # , promise
319
+ else:
320
+ if async_guaranteed:
321
+ promise._is_async_guaranteed = True # type: ignore
322
+ self._settle_promise_from_handler( # type: ignore
323
+ handler, value, promise # type: ignore
324
+ ) # type: ignore
325
+ elif is_promise:
326
+ if async_guaranteed:
327
+ promise._is_async_guaranteed = True # type: ignore
328
+ if self._state == STATE_FULFILLED:
329
+ promise._fulfill(value) # type: ignore
330
+ else:
331
+ promise._reject(value, self._traceback) # type: ignore
332
+
333
+ def _settle_promise0(
334
+ self,
335
+ handler, # type: Optional[Callable]
336
+ value, # type: Any
337
+ traceback, # type: Optional[TracebackType]
338
+ ):
339
+ # type: (...) -> None
340
+ promise = self._promise0
341
+ self._promise0 = None
342
+ self._settle_promise(promise, handler, value, traceback) # type: ignore
343
+
344
+ def _settle_promise_from_handler(self, handler, value, promise):
345
+ # type: (Callable, Any, Promise) -> None
346
+ value, error_with_tb = try_catch(handler, value) # , promise
347
+
348
+ if error_with_tb:
349
+ error, tb = error_with_tb
350
+ promise._reject_callback(error, False, tb)
351
+ else:
352
+ promise._resolve_callback(value)
353
+
354
+ def _promise_at(self, index):
355
+ # type: (int) -> Optional[Promise]
356
+ assert index > 0
357
+ assert not self._is_following
358
+ return self._handlers.get( # type: ignore
359
+ index * CALLBACK_SIZE - CALLBACK_SIZE + CALLBACK_PROMISE_OFFSET
360
+ )
361
+
362
+ def _fulfillment_handler_at(self, index):
363
+ # type: (int) -> Optional[Callable]
364
+ assert not self._is_following
365
+ assert index > 0
366
+ return self._handlers.get( # type: ignore
367
+ index * CALLBACK_SIZE - CALLBACK_SIZE + CALLBACK_FULFILL_OFFSET
368
+ )
369
+
370
+ def _rejection_handler_at(self, index):
371
+ # type: (int) -> Optional[Callable]
372
+ assert not self._is_following
373
+ assert index > 0
374
+ return self._handlers.get( # type: ignore
375
+ index * CALLBACK_SIZE - CALLBACK_SIZE + CALLBACK_REJECT_OFFSET
376
+ )
377
+
378
+ def _migrate_callback0(self, follower):
379
+ # type: (Promise) -> None
380
+ self._add_callbacks(
381
+ follower._fulfillment_handler0,
382
+ follower._rejection_handler0,
383
+ follower._promise0,
384
+ )
385
+
386
+ def _migrate_callback_at(self, follower, index):
387
+ self._add_callbacks(
388
+ follower._fulfillment_handler_at(index),
389
+ follower._rejection_handler_at(index),
390
+ follower._promise_at(index),
391
+ )
392
+
393
+ def _add_callbacks(
394
+ self,
395
+ fulfill, # type: Optional[Callable]
396
+ reject, # type: Optional[Callable]
397
+ promise, # type: Optional[Promise]
398
+ ):
399
+ # type: (...) -> int
400
+ assert not self._is_following
401
+
402
+ if self._handlers is None:
403
+ self._handlers = {}
404
+
405
+ index = self._length
406
+ if index > MAX_LENGTH - CALLBACK_SIZE:
407
+ index = 0
408
+ self._length = 0
409
+
410
+ if index == 0:
411
+ assert not self._promise0
412
+ assert not self._fulfillment_handler0
413
+ assert not self._rejection_handler0
414
+
415
+ self._promise0 = promise
416
+ if callable(fulfill):
417
+ self._fulfillment_handler0 = fulfill
418
+ if callable(reject):
419
+ self._rejection_handler0 = reject
420
+
421
+ else:
422
+ base = index * CALLBACK_SIZE - CALLBACK_SIZE
423
+
424
+ assert (base + CALLBACK_PROMISE_OFFSET) not in self._handlers
425
+ assert (base + CALLBACK_FULFILL_OFFSET) not in self._handlers
426
+ assert (base + CALLBACK_REJECT_OFFSET) not in self._handlers
427
+
428
+ self._handlers[base + CALLBACK_PROMISE_OFFSET] = promise
429
+ if callable(fulfill):
430
+ self._handlers[base + CALLBACK_FULFILL_OFFSET] = fulfill
431
+ if callable(reject):
432
+ self._handlers[base + CALLBACK_REJECT_OFFSET] = reject
433
+
434
+ self._length = index + 1
435
+ return index
436
+
437
+ def _target(self):
438
+ # type: () -> Promise
439
+ ret = self
440
+ while ret._is_following:
441
+ ret = ret._followee()
442
+ return ret
443
+
444
+ def _followee(self):
445
+ # type: () -> Promise
446
+ assert self._is_following
447
+ assert isinstance(self._rejection_handler0, Promise)
448
+ return self._rejection_handler0
449
+
450
+ def _set_followee(self, promise):
451
+ # type: (Promise) -> None
452
+ assert self._is_following
453
+ assert not isinstance(self._rejection_handler0, Promise)
454
+ self._rejection_handler0 = promise
455
+
456
+ def _settle_promises(self):
457
+ # type: () -> None
458
+ length = self._length
459
+ if length > 0:
460
+ if self._state == STATE_REJECTED:
461
+ reason = self._fulfillment_handler0
462
+ traceback = self._traceback
463
+ self._settle_promise0(self._rejection_handler0, reason, traceback)
464
+ self._reject_promises(length, reason)
465
+ else:
466
+ value = self._rejection_handler0
467
+ self._settle_promise0(self._fulfillment_handler0, value, None)
468
+ self._fulfill_promises(length, value)
469
+
470
+ self._length = 0
471
+
472
+ def _resolve_from_executor(self, executor):
473
+ # type: (Callable[[Callable[[T], None], Callable[[Exception], None]], None]) -> None
474
+ # self._capture_stacktrace()
475
+ synchronous = True
476
+
477
+ def resolve(value):
478
+ # type: (T) -> None
479
+ self._resolve_callback(value)
480
+
481
+ def reject(reason, traceback=None):
482
+ # type: (Exception, TracebackType) -> None
483
+ self._reject_callback(reason, synchronous, traceback)
484
+
485
+ error = None
486
+ traceback = None
487
+ try:
488
+ executor(resolve, reject)
489
+ except Exception as e:
490
+ traceback = exc_info()[2]
491
+ error = e
492
+
493
+ synchronous = False
494
+
495
+ if error is not None:
496
+ self._reject_callback(error, True, traceback)
497
+
498
+ @classmethod
499
+ def wait(cls, promise, timeout=None):
500
+ # type: (Promise, Optional[float]) -> None
501
+ async_instance.wait(promise, timeout)
502
+
503
+ def _wait(self, timeout=None):
504
+ # type: (Optional[float]) -> None
505
+ self.wait(self, timeout)
506
+
507
+ def get(self, timeout=None):
508
+ # type: (Optional[float]) -> T
509
+ target = self._target()
510
+ self._wait(timeout or DEFAULT_TIMEOUT)
511
+ return self._target_settled_value(_raise=True)
512
+
513
+ def _target_settled_value(self, _raise=False):
514
+ # type: (bool) -> Any
515
+ return self._target()._settled_value(_raise)
516
+
517
+ _value = _reason = _target_settled_value
518
+ value = reason = property(_target_settled_value)
519
+
520
+ def __repr__(self):
521
+ # type: () -> str
522
+ hex_id = hex(id(self))
523
+ if self._is_following:
524
+ return "<Promise at {} following {}>".format(hex_id, self._target())
525
+ state = self._state
526
+ if state == STATE_PENDING:
527
+ return "<Promise at {} pending>".format(hex_id)
528
+ elif state == STATE_FULFILLED:
529
+ return "<Promise at {} fulfilled with {}>".format(
530
+ hex_id, repr(self._rejection_handler0)
531
+ )
532
+ elif state == STATE_REJECTED:
533
+ return "<Promise at {} rejected with {}>".format(
534
+ hex_id, repr(self._fulfillment_handler0)
535
+ )
536
+
537
+ return "<Promise unknown>"
538
+
539
+ @property
540
+ def is_pending(self):
541
+ # type: (Promise) -> bool
542
+ """Indicate whether the Promise is still pending. Could be wrong the moment the function returns."""
543
+ return self._target()._state == STATE_PENDING
544
+
545
+ @property
546
+ def is_fulfilled(self):
547
+ # type: (Promise) -> bool
548
+ """Indicate whether the Promise has been fulfilled. Could be wrong the moment the function returns."""
549
+ return self._target()._state == STATE_FULFILLED
550
+
551
+ @property
552
+ def is_rejected(self):
553
+ # type: (Promise) -> bool
554
+ """Indicate whether the Promise has been rejected. Could be wrong the moment the function returns."""
555
+ return self._target()._state == STATE_REJECTED
556
+
557
+ def catch(self, on_rejection):
558
+ # type: (Promise, Callable[[Exception], Any]) -> Promise
559
+ """
560
+ This method returns a Promise and deals with rejected cases only.
561
+ It behaves the same as calling Promise.then(None, on_rejection).
562
+ """
563
+ return self.then(None, on_rejection)
564
+
565
+ def _then(
566
+ self,
567
+ did_fulfill=None, # type: Optional[Callable[[T], S]]
568
+ did_reject=None, # type: Optional[Callable[[Exception], S]]
569
+ ):
570
+ # type: (...) -> Promise[S]
571
+ promise = self.__class__() # type: Promise
572
+ target = self._target()
573
+
574
+ state = target._state
575
+ if state == STATE_PENDING:
576
+ target._add_callbacks(did_fulfill, did_reject, promise)
577
+ else:
578
+ traceback = None
579
+ if state == STATE_FULFILLED:
580
+ value = target._rejection_handler0
581
+ handler = did_fulfill
582
+ elif state == STATE_REJECTED:
583
+ value = target._fulfillment_handler0
584
+ traceback = target._traceback
585
+ handler = did_reject # type: ignore
586
+ # target._rejection_is_unhandled = False
587
+ async_instance.invoke(
588
+ partial(target._settle_promise, promise, handler, value, traceback),
589
+ promise.scheduler
590
+ # target._settle_promise instead?
591
+ # settler,
592
+ # target,
593
+ )
594
+
595
+ return promise
596
+
597
+ fulfill = _resolve_callback
598
+ do_resolve = _resolve_callback
599
+ do_reject = _reject_callback
600
+
601
+ def then(self, did_fulfill=None, did_reject=None):
602
+ # type: (Promise, Callable[[T], S], Optional[Callable[[Exception], S]]) -> Promise[S]
603
+ """
604
+ This method takes two optional arguments. The first argument
605
+ is used if the "self promise" is fulfilled and the other is
606
+ used if the "self promise" is rejected. In either case, this
607
+ method returns another promise that effectively represents
608
+ the result of either the first of the second argument (in the
609
+ case that the "self promise" is fulfilled or rejected,
610
+ respectively).
611
+ Each argument can be either:
612
+ * None - Meaning no action is taken
613
+ * A function - which will be called with either the value
614
+ of the "self promise" or the reason for rejection of
615
+ the "self promise". The function may return:
616
+ * A value - which will be used to fulfill the promise
617
+ returned by this method.
618
+ * A promise - which, when fulfilled or rejected, will
619
+ cascade its value or reason to the promise returned
620
+ by this method.
621
+ * A value - which will be assigned as either the value
622
+ or the reason for the promise returned by this method
623
+ when the "self promise" is either fulfilled or rejected,
624
+ respectively.
625
+ :type success: (Any) -> object
626
+ :type failure: (Any) -> object
627
+ :rtype : Promise
628
+ """
629
+ return self._then(did_fulfill, did_reject)
630
+
631
+ def done(self, did_fulfill=None, did_reject=None):
632
+ # type: (Optional[Callable], Optional[Callable]) -> None
633
+ promise = self._then(did_fulfill, did_reject)
634
+ promise._is_final = True
635
+
636
+ def done_all(self, handlers=None):
637
+ # type: (Promise, Optional[List[Union[Dict[str, Optional[Callable]], Tuple[Callable, Callable], Callable]]]) -> None
638
+ """
639
+ :type handlers: list[(Any) -> object] | list[((Any) -> object, (Any) -> object)]
640
+ """
641
+ if not handlers:
642
+ return
643
+
644
+ for handler in handlers:
645
+ if isinstance(handler, tuple):
646
+ s, f = handler
647
+ self.done(s, f)
648
+ elif isinstance(handler, dict):
649
+ s = handler.get("success") # type: ignore
650
+ f = handler.get("failure") # type: ignore
651
+
652
+ self.done(s, f)
653
+ else:
654
+ self.done(handler)
655
+
656
+ def then_all(self, handlers=None):
657
+ # type: (Promise, List[Callable]) -> List[Promise]
658
+ """
659
+ Utility function which calls 'then' for each handler provided. Handler can either
660
+ be a function in which case it is used as success handler, or a tuple containing
661
+ the success and the failure handler, where each of them could be None.
662
+ :type handlers: list[(Any) -> object] | list[((Any) -> object, (Any) -> object)]
663
+ :param handlers
664
+ :rtype : list[Promise]
665
+ """
666
+ if not handlers:
667
+ return []
668
+
669
+ promises = [] # type: List[Promise]
670
+
671
+ for handler in handlers:
672
+ if isinstance(handler, tuple):
673
+ s, f = handler
674
+
675
+ promises.append(self.then(s, f))
676
+ elif isinstance(handler, dict):
677
+ s = handler.get("success")
678
+ f = handler.get("failure")
679
+
680
+ promises.append(self.then(s, f))
681
+ else:
682
+ promises.append(self.then(handler))
683
+
684
+ return promises
685
+
686
+ @classmethod
687
+ def _try_convert_to_promise(cls, obj):
688
+ # type: (Any) -> Promise
689
+ _type = obj.__class__
690
+ if issubclass(_type, Promise):
691
+ if cls is not Promise:
692
+ return cls(obj.then, obj._scheduler)
693
+ return obj
694
+
695
+ if iscoroutine(obj): # type: ignore
696
+ obj = ensure_future(obj) # type: ignore
697
+ _type = obj.__class__
698
+
699
+ if is_future_like(_type):
700
+
701
+ def executor(resolve, reject):
702
+ # type: (Callable, Callable) -> None
703
+ if obj.done():
704
+ _process_future_result(resolve, reject)(obj)
705
+ else:
706
+ obj.add_done_callback(_process_future_result(resolve, reject))
707
+ # _process_future_result(resolve, reject)(obj)
708
+
709
+ promise = cls(executor) # type: Promise
710
+ promise._future = obj
711
+ return promise
712
+
713
+ return obj
714
+
715
+ @classmethod
716
+ def reject(cls, reason):
717
+ # type: (Exception) -> Promise
718
+ ret = cls() # type: Promise
719
+ # ret._capture_stacktrace();
720
+ # ret._rejectCallback(reason, true);
721
+ ret._reject_callback(reason, True)
722
+ return ret
723
+
724
+ rejected = reject
725
+
726
+ @classmethod
727
+ def resolve(cls, obj):
728
+ # type: (T) -> Promise[T]
729
+ if not cls.is_thenable(obj):
730
+ ret = cls() # type: Promise
731
+ # ret._capture_stacktrace()
732
+ ret._state = STATE_FULFILLED
733
+ ret._rejection_handler0 = obj
734
+ return ret
735
+
736
+ return cls._try_convert_to_promise(obj)
737
+
738
+ cast = resolve
739
+ fulfilled = cast
740
+
741
+ @classmethod
742
+ def promisify(cls, f):
743
+ # type: (Callable) -> Callable[..., Promise]
744
+ if not callable(f):
745
+ warn(
746
+ "Promise.promisify is now a function decorator, please use Promise.resolve instead."
747
+ )
748
+ return cls.resolve(f)
749
+
750
+ @wraps(f)
751
+ def wrapper(*args, **kwargs):
752
+ # type: (*Any, **Any) -> Promise
753
+ def executor(resolve, reject):
754
+ # type: (Callable, Callable) -> Optional[Any]
755
+ return resolve(f(*args, **kwargs))
756
+
757
+ return cls(executor)
758
+
759
+ return wrapper
760
+
761
+ _safe_resolved_promise = None # type: Promise
762
+
763
+ @classmethod
764
+ def safe(cls, fn):
765
+ # type: (Callable) -> Callable
766
+ from functools import wraps
767
+
768
+ if not cls._safe_resolved_promise:
769
+ cls._safe_resolved_promise = Promise.resolve(None)
770
+
771
+ @wraps(fn)
772
+ def wrapper(*args, **kwargs):
773
+ # type: (*Any, **Any) -> Promise
774
+ return cls._safe_resolved_promise.then(lambda v: fn(*args, **kwargs))
775
+
776
+ return wrapper
777
+
778
+ @classmethod
779
+ def all(cls, promises):
780
+ # type: (Any) -> Promise
781
+ return PromiseList(promises, promise_class=cls).promise
782
+
783
+ @classmethod
784
+ def for_dict(cls, m):
785
+ # type: (Dict[Hashable, Promise[S]]) -> Promise[Dict[Hashable, S]]
786
+ """
787
+ A special function that takes a dictionary of promises
788
+ and turns them into a promise for a dictionary of values.
789
+ In other words, this turns an dictionary of promises for values
790
+ into a promise for a dictionary of values.
791
+ """
792
+ dict_type = type(m) # type: Type[Dict]
793
+
794
+ if not m:
795
+ return cls.resolve(dict_type()) # type: ignore
796
+
797
+ def handle_success(resolved_values):
798
+ # type: (List[S]) -> Dict[Hashable, S]
799
+ return dict_type(zip(m.keys(), resolved_values))
800
+
801
+ return cls.all(m.values()).then(handle_success)
802
+
803
+ @classmethod
804
+ def is_thenable(cls, obj):
805
+ # type: (Any) -> bool
806
+ """
807
+ A utility function to determine if the specified
808
+ object is a promise using "duck typing".
809
+ """
810
+ _type = obj.__class__
811
+ if obj is None or _type in BASE_TYPES:
812
+ return False
813
+
814
+ return (
815
+ issubclass(_type, Promise)
816
+ or iscoroutine(obj) # type: ignore
817
+ or is_future_like(_type)
818
+ )
819
+
820
+
821
+ _type_done_callbacks = WeakKeyDictionary() # type: MutableMapping[type, bool]
822
+
823
+
824
+ def is_future_like(_type):
825
+ # type: (type) -> bool
826
+ if _type not in _type_done_callbacks:
827
+ _type_done_callbacks[_type] = callable(
828
+ getattr(_type, "add_done_callback", None)
829
+ )
830
+ return _type_done_callbacks[_type]
831
+
832
+
833
+ promisify = Promise.promisify
834
+ promise_for_dict = Promise.for_dict
835
+ is_thenable = Promise.is_thenable
836
+
837
+
838
+ def _process_future_result(resolve, reject):
839
+ # type: (Callable, Callable) -> Callable
840
+ def handle_future_result(future):
841
+ # type: (Any) -> None
842
+ try:
843
+ resolve(future.result())
844
+ except Exception as e:
845
+ tb = exc_info()[2]
846
+ reject(e, tb)
847
+
848
+ return handle_future_result