ygg 0.1.42__tar.gz → 0.1.44__tar.gz

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 (68) hide show
  1. {ygg-0.1.42 → ygg-0.1.44}/PKG-INFO +1 -1
  2. {ygg-0.1.42 → ygg-0.1.44}/pyproject.toml +1 -1
  3. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/PKG-INFO +1 -1
  4. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/compute/cluster.py +18 -10
  5. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/compute/execution_context.py +2 -1
  6. ygg-0.1.44/src/yggdrasil/version.py +1 -0
  7. ygg-0.1.42/src/yggdrasil/version.py +0 -1
  8. {ygg-0.1.42 → ygg-0.1.44}/LICENSE +0 -0
  9. {ygg-0.1.42 → ygg-0.1.44}/README.md +0 -0
  10. {ygg-0.1.42 → ygg-0.1.44}/setup.cfg +0 -0
  11. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/SOURCES.txt +0 -0
  12. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/dependency_links.txt +0 -0
  13. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/entry_points.txt +0 -0
  14. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/requires.txt +0 -0
  15. {ygg-0.1.42 → ygg-0.1.44}/src/ygg.egg-info/top_level.txt +0 -0
  16. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/__init__.py +0 -0
  17. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/__init__.py +0 -0
  18. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/compute/__init__.py +0 -0
  19. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/compute/remote.py +0 -0
  20. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/jobs/__init__.py +0 -0
  21. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/jobs/config.py +0 -0
  22. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/sql/__init__.py +0 -0
  23. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/sql/engine.py +0 -0
  24. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/sql/exceptions.py +0 -0
  25. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/sql/statement_result.py +0 -0
  26. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/sql/types.py +0 -0
  27. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/__init__.py +0 -0
  28. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/filesytem.py +0 -0
  29. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/io.py +0 -0
  30. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/path.py +0 -0
  31. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/path_kind.py +0 -0
  32. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/databricks/workspaces/workspace.py +0 -0
  33. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/dataclasses/__init__.py +0 -0
  34. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/dataclasses/dataclass.py +0 -0
  35. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/__init__.py +0 -0
  36. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/databrickslib.py +0 -0
  37. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/extensions/__init__.py +0 -0
  38. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/extensions/polars_extensions.py +0 -0
  39. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/extensions/spark_extensions.py +0 -0
  40. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/pandaslib.py +0 -0
  41. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/polarslib.py +0 -0
  42. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/libs/sparklib.py +0 -0
  43. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/__init__.py +0 -0
  44. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/callable_serde.py +0 -0
  45. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/equality.py +0 -0
  46. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/exceptions.py +0 -0
  47. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/expiring_dict.py +0 -0
  48. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/modules.py +0 -0
  49. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/parallel.py +0 -0
  50. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/python_env.py +0 -0
  51. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/pyutils/retry.py +0 -0
  52. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/requests/__init__.py +0 -0
  53. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/requests/msal.py +0 -0
  54. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/requests/session.py +0 -0
  55. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/__init__.py +0 -0
  56. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/__init__.py +0 -0
  57. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/arrow_cast.py +0 -0
  58. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/cast_options.py +0 -0
  59. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/pandas_cast.py +0 -0
  60. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/polars_cast.py +0 -0
  61. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/polars_pandas_cast.py +0 -0
  62. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/registry.py +0 -0
  63. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/spark_cast.py +0 -0
  64. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/spark_pandas_cast.py +0 -0
  65. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/cast/spark_polars_cast.py +0 -0
  66. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/libs.py +0 -0
  67. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/python_arrow.py +0 -0
  68. {ygg-0.1.42 → ygg-0.1.44}/src/yggdrasil/types/python_defaults.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ygg
3
- Version: 0.1.42
3
+ Version: 0.1.44
4
4
  Summary: Type-friendly utilities for moving data between Python objects, Arrow, Polars, Pandas, Spark, and Databricks
5
5
  Author: Yggdrasil contributors
6
6
  License: Apache License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ygg"
7
- version = "0.1.42"
7
+ version = "0.1.44"
8
8
  description = "Type-friendly utilities for moving data between Python objects, Arrow, Polars, Pandas, Spark, and Databricks"
9
9
  readme = { file = "README.md", content-type = "text/markdown" }
10
10
  license = { file = "LICENSE" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ygg
3
- Version: 0.1.42
3
+ Version: 0.1.44
4
4
  Summary: Type-friendly utilities for moving data between Python objects, Arrow, Polars, Pandas, Spark, and Databricks
5
5
  Author: Yggdrasil contributors
6
6
  License: Apache License
@@ -658,12 +658,14 @@ class Cluster(WorkspaceService):
658
658
  def update(
659
659
  self,
660
660
  libraries: Optional[List[Union[str, "Library"]]] = None,
661
+ wait_timeout: Union[float, dt.timedelta] = dt.timedelta(minutes=20),
661
662
  **cluster_spec: Any
662
663
  ) -> "Cluster":
663
664
  """Update cluster configuration and optionally install libraries.
664
665
 
665
666
  Args:
666
667
  libraries: Optional libraries to install.
668
+ wait_timeout: waiting timeout until done, if None it does not wait
667
669
  **cluster_spec: Cluster specification overrides.
668
670
 
669
671
  Returns:
@@ -703,20 +705,16 @@ class Cluster(WorkspaceService):
703
705
  )
704
706
 
705
707
  self.wait_for_status()
706
- try:
707
- self.details = self.clusters_client().edit_and_wait(**update_details)
708
- except Exception as e:
709
- if self.state == State.TERMINATED:
710
- self.start()
711
- self.details = self.clusters_client().edit_and_wait(**update_details)
712
- else:
713
- raise e
708
+ self.clusters_client().edit(**update_details)
714
709
 
715
710
  logger.info(
716
711
  "Updated %s",
717
712
  self
718
713
  )
719
714
 
715
+ if wait_timeout:
716
+ self.wait_for_status(timeout=wait_timeout)
717
+
720
718
  return self
721
719
 
722
720
  def list_clusters(self) -> Iterator["Cluster"]:
@@ -818,7 +816,6 @@ class Cluster(WorkspaceService):
818
816
  if wait_timeout:
819
817
  self.clusters_client().start(cluster_id=self.cluster_id)
820
818
  self.wait_for_status(timeout=wait_timeout.total_seconds())
821
- self.wait_installed_libraries(timeout=wait_timeout)
822
819
  else:
823
820
  self.clusters_client().start(cluster_id=self.cluster_id)
824
821
 
@@ -837,7 +834,7 @@ class Cluster(WorkspaceService):
837
834
  if self.is_running:
838
835
  logger.info("Restarting %s", self)
839
836
  self.details = self.clusters_client().restart_and_wait(cluster_id=self.cluster_id)
840
- return self.wait_installed_libraries()
837
+ return self.wait_for_status()
841
838
 
842
839
  return self.start()
843
840
 
@@ -1028,6 +1025,17 @@ class Cluster(WorkspaceService):
1028
1025
  for _ in libraries if _
1029
1026
  ]
1030
1027
 
1028
+ if libraries:
1029
+ existing = [
1030
+ _.library for _ in self.installed_library_statuses()
1031
+ ]
1032
+
1033
+ libraries = [
1034
+ _
1035
+ for _ in libraries
1036
+ if _ not in existing
1037
+ ]
1038
+
1031
1039
  if libraries:
1032
1040
  wsdk.libraries.install(
1033
1041
  cluster_id=self.cluster_id,
@@ -156,7 +156,8 @@ print(json.dumps(meta))"""
156
156
  print_stdout=False,
157
157
  )
158
158
  except ImportError:
159
- self.cluster.wait_installed_libraries()
159
+ self.cluster.ensure_running()
160
+
160
161
  content = self.execute_command(
161
162
  command=cmd,
162
163
  result_tag="<<RESULT>>",
@@ -0,0 +1 @@
1
+ __version__ = "0.1.44"
@@ -1 +0,0 @@
1
- __version__ = "0.1.42"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes