ygg 0.1.28__py3-none-any.whl → 0.1.29__py3-none-any.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ygg
3
- Version: 0.1.28
3
+ Version: 0.1.29
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
@@ -1,9 +1,9 @@
1
- ygg-0.1.28.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
1
+ ygg-0.1.29.dist-info/licenses/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
2
2
  yggdrasil/__init__.py,sha256=6OPibApplA5TF4TeixkQO_qewpaAidYX-fSDvvKYcTI,91
3
3
  yggdrasil/databricks/__init__.py,sha256=aGVve5mpoQtxSK2nfzrexjRPoutCIyaOnKZijkG4_QE,92
4
4
  yggdrasil/databricks/compute/__init__.py,sha256=TVDwPmW2SOmHmnhzZhsvrWbrxZ_lEcgqe3l9BeB-oxM,218
5
- yggdrasil/databricks/compute/cluster.py,sha256=ziQFDQC0xjVytNDvtQZa9iy9SGCkSsEf85RF3zSZwAE,28657
6
- yggdrasil/databricks/compute/execution_context.py,sha256=plutmNa03VSHlXbGeKArtc-QH9ptZrrnss2yXS2pFYA,18584
5
+ yggdrasil/databricks/compute/cluster.py,sha256=s2w2rn_7LNHCcYdcdsfDANDNNj78EwMMCiNa1PLJEhM,28521
6
+ yggdrasil/databricks/compute/execution_context.py,sha256=LiBq0rPfn3oqlYA031z765k54IApGgah5rEOL-m5v4s,18580
7
7
  yggdrasil/databricks/compute/remote.py,sha256=sVWBb_1YR-e33on6F5QYMLKwT6end6rolCvN8HM-9Qw,1212
8
8
  yggdrasil/databricks/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  yggdrasil/databricks/jobs/config.py,sha256=8Slfw4Wl7vu0kIlaUUqVqjjOgPwuULoo0rroENCbC20,11494
@@ -26,7 +26,7 @@ yggdrasil/libs/extensions/__init__.py,sha256=qkkRF1BQ_NLZlKeeZeeZDAbf9Q3wQXu5s4O
26
26
  yggdrasil/libs/extensions/polars_extensions.py,sha256=kojeJOW5VPBXMVTJT2gWUJypNuryq9ZeXmH-VZXgXoM,10531
27
27
  yggdrasil/libs/extensions/spark_extensions.py,sha256=uCcpLJr0wEE9V_-nc8DrQtAh9n2Q4mV_NicU-DNGG54,13396
28
28
  yggdrasil/pyutils/__init__.py,sha256=-aU5Y1huWoTLTPdSDxZM7QU0p0sTYj5j77cP833RsnQ,139
29
- yggdrasil/pyutils/callable_serde.py,sha256=y3736Lot1m2c824Nc_YY3KGaCc5VC4k4n5xdq8g1rXU,19163
29
+ yggdrasil/pyutils/callable_serde.py,sha256=DmEn9j_FMQhd_qvG7Q2fvL8VBCaqgGK2mnaessMgJws,18056
30
30
  yggdrasil/pyutils/exceptions.py,sha256=Kt4xY4jPv-Ld8vBJaiQy51xbewD6Q-3bZkaa3THsFNM,2891
31
31
  yggdrasil/pyutils/modules.py,sha256=r3C4TRA8C_fUTltITV0VJY0pbIdxdV1op2z8BX0FgJo,10201
32
32
  yggdrasil/pyutils/parallel.py,sha256=L2r4_iumOzDk7omWVBPYmT5U8n7suOdv1AFpa_ghHSY,5902
@@ -49,8 +49,8 @@ yggdrasil/types/cast/registry.py,sha256=-88mq-U1pDSGbEC9PRY0zJCzloyBodXgeSRBPb6h
49
49
  yggdrasil/types/cast/spark_cast.py,sha256=IHthM78dugabGXxNNW9sSHn-olDwzXcFdIFcPo9IiXU,23021
50
50
  yggdrasil/types/cast/spark_pandas_cast.py,sha256=8PgJItF_XbyBcNuBnXkMQU3PBy3sAPEXZT9SXL2WbU4,4200
51
51
  yggdrasil/types/cast/spark_polars_cast.py,sha256=ba1UOvY1ouGCro1Np9slXmJ4TEyWnUtwVEAwxGvPLlk,8336
52
- ygg-0.1.28.dist-info/METADATA,sha256=7pGg7X4ChK2dkLlXc7LI3RItrEqpoNKKJFsbgJY2Nz4,19204
53
- ygg-0.1.28.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
- ygg-0.1.28.dist-info/entry_points.txt,sha256=6q-vpWG3kvw2dhctQ0LALdatoeefkN855Ev02I1dKGY,70
55
- ygg-0.1.28.dist-info/top_level.txt,sha256=iBe9Kk4VIVbLpgv_p8OZUIfxgj4dgJ5wBg6vO3rigso,10
56
- ygg-0.1.28.dist-info/RECORD,,
52
+ ygg-0.1.29.dist-info/METADATA,sha256=H9-xKVaADfcI7Euov960Egc5LI70k2gPw4-vzGE0ZZA,19204
53
+ ygg-0.1.29.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
54
+ ygg-0.1.29.dist-info/entry_points.txt,sha256=6q-vpWG3kvw2dhctQ0LALdatoeefkN855Ev02I1dKGY,70
55
+ ygg-0.1.29.dist-info/top_level.txt,sha256=iBe9Kk4VIVbLpgv_p8OZUIfxgj4dgJ5wBg6vO3rigso,10
56
+ ygg-0.1.29.dist-info/RECORD,,
@@ -646,7 +646,6 @@ class Cluster(WorkspaceService):
646
646
  self,
647
647
  _func: Optional[Callable] = None,
648
648
  *,
649
- before: Optional[Callable] = None,
650
649
  language: Optional["Language"] = None,
651
650
  env_keys: Optional[List[str]] = None,
652
651
  env_variables: Optional[Dict[str, str]] = None,
@@ -673,15 +672,12 @@ class Cluster(WorkspaceService):
673
672
  def decorator(func: Callable):
674
673
  context = self.context(language=language or Language.PYTHON)
675
674
  serialized = CallableSerde.from_callable(func)
676
- do_before = CallableSerde.from_callable(before)
677
675
 
678
676
  @functools.wraps(func)
679
677
  def wrapper(*args, **kwargs):
680
678
  if os.getenv("DATABRICKS_RUNTIME_VERSION") is not None:
681
679
  return func(*args, **kwargs)
682
680
 
683
- do_before()
684
-
685
681
  return context.execute(
686
682
  obj=serialized,
687
683
  args=list(args),
@@ -291,7 +291,7 @@ print(json.dumps(meta))"""
291
291
 
292
292
  serialized = CallableSerde.from_callable(func)
293
293
 
294
- self.install_temporary_libraries(libraries=serialized.package_root)
294
+ self.install_temporary_libraries(libraries=serialized.pkg_root)
295
295
 
296
296
  # Use dill of same version
297
297
  current_version = (sys.version_info.major, sys.version_info.minor)
@@ -7,7 +7,6 @@ import inspect
7
7
  import json
8
8
  import struct
9
9
  import sys
10
- import textwrap
11
10
  import zlib
12
11
  from dataclasses import dataclass
13
12
  from pathlib import Path
@@ -46,7 +45,7 @@ def _find_pkg_root_from_file(file_path: Path) -> Optional[Path]:
46
45
  top_pkg_dir = d
47
46
  d = d.parent
48
47
 
49
- return top_pkg_dir.parent if top_pkg_dir else None
48
+ return top_pkg_dir if top_pkg_dir else None
50
49
 
51
50
 
52
51
  def _callable_file_line(fn: Callable[..., Any]) -> Tuple[Optional[str], Optional[int]]:
@@ -242,30 +241,6 @@ class CallableSerde:
242
241
  _env_b64: Optional[str] = None
243
242
  _env_meta: Optional[Dict[str, Any]] = None
244
243
 
245
- def __post_init__(self) -> None:
246
- # If constructed as CallableSerde(fn=...), eagerly capture backing metadata.
247
- if self.fn is not None:
248
- self._init_private_from_fn(self.fn)
249
-
250
- def _init_private_from_fn(self, fn: Callable[..., Any]) -> None:
251
- """
252
- Capture stable identity-ish metadata at creation time, so we don't rely
253
- on lazy properties later (or after fn is dropped).
254
- """
255
- # Only set if not already provided (don't clobber loaded/explicit values).
256
- if self._module is None:
257
- self._module = getattr(fn, "__module__", None)
258
-
259
- if self._qualname is None:
260
- self._qualname = getattr(fn, "__qualname__", None)
261
-
262
- if self._pkg_root is None:
263
- f, _ = _callable_file_line(fn)
264
- if f:
265
- root = _find_pkg_root_from_file(Path(f))
266
- if root:
267
- self._pkg_root = str(root)
268
-
269
244
  # ----- construction -----
270
245
 
271
246
  @classmethod
@@ -274,8 +249,6 @@ class CallableSerde:
274
249
  return x
275
250
 
276
251
  obj = cls(fn=x) # type: ignore[return-value]
277
- # __post_init__ already ran, but this keeps it robust if dataclass changes.
278
- obj._init_private_from_fn(x)
279
252
 
280
253
  return obj
281
254
 
File without changes