internal.py 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. from __future__ import annotations
  2. from typing import Any
  3. from wandb.sdk.internal.internal_api import Api as InternalApi
  4. class Api:
  5. """Internal proxy to the official internal API."""
  6. # TODO: Move these methods to PublicApi.
  7. def __init__(self, *args: Any, **kwargs: Any) -> None:
  8. self._api_args = args
  9. self._api_kwargs = kwargs
  10. self._api = None
  11. def __getstate__(self):
  12. """Use for serializing.
  13. self._api is not serializable, so it's dropped
  14. """
  15. state = self.__dict__.copy()
  16. del state["_api"]
  17. return state
  18. def __setstate__(self, state):
  19. """Used for deserializing.
  20. Don't need to set self._api because it's constructed when needed.
  21. """
  22. self.__dict__.update(state)
  23. self._api = None
  24. @property
  25. def api(self) -> InternalApi:
  26. # This is a property in order to delay construction of Internal API
  27. # for as long as possible. If constructed in constructor, then the
  28. # whole InternalAPI is started when simply importing wandb.
  29. if self._api is None:
  30. self._api = InternalApi(*self._api_args, **self._api_kwargs)
  31. return self._api
  32. @property
  33. def api_key(self):
  34. return self.api.api_key
  35. @property
  36. def is_authenticated(self):
  37. return self.api.access_token is not None or self.api.api_key is not None
  38. @property
  39. def api_url(self):
  40. return self.api.api_url
  41. @property
  42. def app_url(self):
  43. return self.api.app_url
  44. @property
  45. def default_entity(self):
  46. return self.api.default_entity
  47. def validate_api_key(self) -> bool:
  48. """Returns whether the API key stored on initialization is valid."""
  49. return self.api.validate_api_key()
  50. def file_current(self, *args):
  51. return self.api.file_current(*args)
  52. def download_file(self, *args, **kwargs):
  53. return self.api.download_file(*args, **kwargs)
  54. def download_write_file(self, *args, **kwargs):
  55. return self.api.download_write_file(*args, **kwargs)
  56. def set_current_run_id(self, run_id):
  57. return self.api.set_current_run_id(run_id)
  58. def viewer(self):
  59. return self.api.viewer()
  60. def max_cli_version(self):
  61. return self.api.max_cli_version()
  62. def viewer_server_info(self):
  63. return self.api.viewer_server_info()
  64. def list_projects(self, entity=None):
  65. return self.api.list_projects(entity=entity)
  66. def format_project(self, project):
  67. return self.api.format_project(project)
  68. def upsert_project(self, project, id=None, description=None, entity=None):
  69. return self.api.upsert_project(
  70. project, id=id, description=description, entity=entity
  71. )
  72. def upsert_run(self, *args, **kwargs):
  73. return self.api.upsert_run(*args, **kwargs)
  74. def settings(self, *args, **kwargs):
  75. return self.api.settings(*args, **kwargs)
  76. def clear_setting(self, key: str) -> None:
  77. return self.api.clear_setting(key)
  78. def set_setting(self, key: str, value: Any) -> None:
  79. return self.api.set_setting(key, value)
  80. def parse_slug(self, *args, **kwargs):
  81. return self.api.parse_slug(*args, **kwargs)
  82. def download_url(self, *args, **kwargs):
  83. return self.api.download_url(*args, **kwargs)
  84. def download_urls(self, *args, **kwargs):
  85. return self.api.download_urls(*args, **kwargs)
  86. def push(self, *args, **kwargs):
  87. return self.api.push(*args, **kwargs)
  88. def sweep(self, *args, **kwargs):
  89. return self.api.sweep(*args, **kwargs)
  90. def upsert_sweep(self, *args, **kwargs):
  91. return self.api.upsert_sweep(*args, **kwargs)
  92. def set_sweep_state(self, *args, **kwargs):
  93. return self.api.set_sweep_state(*args, **kwargs)
  94. def get_sweep_state(self, *args, **kwargs):
  95. return self.api.get_sweep_state(*args, **kwargs)
  96. def stop_sweep(self, *args, **kwargs):
  97. return self.api.stop_sweep(*args, **kwargs)
  98. def cancel_sweep(self, *args, **kwargs):
  99. return self.api.cancel_sweep(*args, **kwargs)
  100. def pause_sweep(self, *args, **kwargs):
  101. return self.api.pause_sweep(*args, **kwargs)
  102. def resume_sweep(self, *args, **kwargs):
  103. return self.api.resume_sweep(*args, **kwargs)
  104. def register_agent(self, *args, **kwargs):
  105. return self.api.register_agent(*args, **kwargs)
  106. def agent_heartbeat(self, *args, **kwargs):
  107. return self.api.agent_heartbeat(*args, **kwargs)
  108. def use_artifact(self, *args, **kwargs):
  109. return self.api.use_artifact(*args, **kwargs)
  110. def create_artifact(self, *args, **kwargs):
  111. return self.api.create_artifact(*args, **kwargs)
  112. def complete_multipart_upload_artifact(self, *args, **kwargs):
  113. return self.api.complete_multipart_upload_artifact(*args, **kwargs)
  114. def run_config(self, *args, **kwargs):
  115. return self.api.run_config(*args, **kwargs)
  116. def upload_file_retry(self, *args, **kwargs):
  117. return self.api.upload_file_retry(*args, **kwargs)
  118. def upload_multipart_file_chunk_retry(self, *args, **kwargs):
  119. return self.api.upload_multipart_file_chunk_retry(*args, **kwargs)
  120. def get_run_info(self, *args, **kwargs):
  121. return self.api.get_run_info(*args, **kwargs)
  122. def get_run_state(self, *args, **kwargs):
  123. return self.api.get_run_state(*args, **kwargs)
  124. def entity_is_team(self, *args, **kwargs):
  125. return self.api.entity_is_team(*args, **kwargs)
  126. def get_project_run_queues(self, *args, **kwargs):
  127. return self.api.get_project_run_queues(*args, **kwargs)
  128. def push_to_run_queue(self, *args, **kwargs):
  129. return self.api.push_to_run_queue(*args, **kwargs)
  130. def pop_from_run_queue(self, *args, **kwargs):
  131. return self.api.pop_from_run_queue(*args, **kwargs)
  132. def ack_run_queue_item(self, *args, **kwargs):
  133. return self.api.ack_run_queue_item(*args, **kwargs)
  134. def create_launch_agent(self, *args, **kwargs):
  135. return self.api.create_launch_agent(*args, **kwargs)
  136. def create_default_resource_config(self, *args, **kwargs):
  137. return self.api.create_default_resource_config(*args, **kwargs)
  138. def create_run_queue(self, *args, **kwargs):
  139. return self.api.create_run_queue(*args, **kwargs)
  140. def upsert_run_queue(self, *args, **kwargs):
  141. return self.api.upsert_run_queue(*args, **kwargs)
  142. def create_custom_chart(self, *args, **kwargs):
  143. return self.api.create_custom_chart(*args, **kwargs)
  144. def update_launch_agent_status(self, *args, **kwargs):
  145. return self.api.update_launch_agent_status(*args, **kwargs)
  146. def fail_run_queue_item(self, *args, **kwargs):
  147. return self.api.fail_run_queue_item(*args, **kwargs)
  148. def update_run_queue_item_warning(self, *args, **kwargs):
  149. return self.api.update_run_queue_item_warning(*args, **kwargs)
  150. def get_launch_agent(self, *args, **kwargs):
  151. return self.api.get_launch_agent(*args, **kwargs)
  152. def stop_run(self, *args, **kwargs):
  153. return self.api.stop_run(*args, **kwargs)
  154. __all__ = ["Api"]