prophecy-libs 2.0.0.dev4__tar.gz → 2.0.0.dev6__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 (136) hide show
  1. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/PKG-INFO +1 -1
  2. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/jsonrpc/models.py +4 -1
  3. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/initial_python_code.py +36 -13
  4. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/utils.py +4 -4
  5. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/PKG-INFO +1 -1
  6. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/setup.py +1 -1
  7. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/README.md +0 -0
  8. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/__init__.py +0 -0
  9. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/config/__init__.py +0 -0
  10. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/config/config_base.py +0 -0
  11. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/config/config_base_test.py +0 -0
  12. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/config/utils.py +0 -0
  13. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/__init__.py +0 -0
  14. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/componentruns/__init__.py +0 -0
  15. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/componentruns/component_run_service.py +0 -0
  16. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/componentruns/component_runs_dao.py +0 -0
  17. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/__init__.py +0 -0
  18. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/delta_metrics_storage_initializer.py +0 -0
  19. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/hive_parquet_storage_initializer.py +0 -0
  20. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/metrics_storage_initializer.py +0 -0
  21. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/models.py +0 -0
  22. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/evolutions/package.py +0 -0
  23. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/execution_metrics_handler.py +0 -0
  24. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/in_memory_store.py +0 -0
  25. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/interims/__init__.py +0 -0
  26. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/interims/delta_interims.py +0 -0
  27. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/interims/hive_parquet_interims.py +0 -0
  28. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/interims/interims_table.py +0 -0
  29. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/logging_spark_session.py +0 -0
  30. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/models.py +0 -0
  31. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/package.py +0 -0
  32. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/pipelineruns/__init__.py +0 -0
  33. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/pipelineruns/pipeline_run_service.py +0 -0
  34. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/pipelineruns/pipeline_runs_dao.py +0 -0
  35. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/schemas/__init__.py +0 -0
  36. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/schemas/em.py +0 -0
  37. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/schemas/external.py +0 -0
  38. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/utils/__init__.py +0 -0
  39. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/utils/common.py +0 -0
  40. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/utils/constants.py +0 -0
  41. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/utils/external.py +0 -0
  42. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/utils/interim_store.py +0 -0
  43. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/executionmetrics/zip_file.py +0 -0
  44. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/jsonrpc/__init__.py +0 -0
  45. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/libs/__init__.py +0 -0
  46. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/libs/uc_shared_utils.py +0 -0
  47. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/libs/utils.py +0 -0
  48. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/lookups/LookupsBase.py +0 -0
  49. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/lookups/LookupsNative.py +0 -0
  50. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/lookups/__init__.py +0 -0
  51. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/random_data_creator.py +0 -0
  52. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/streaming/__init__.py +0 -0
  53. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/streaming/delta_lake_utils.py +0 -0
  54. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/test/__init__.py +0 -0
  55. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/test/base_test_case.py +0 -0
  56. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/test/utils.py +0 -0
  57. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/udfs/__init__.py +0 -0
  58. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/udfs/rest_api_udf.py +0 -0
  59. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/udfs/sample_udf.py +0 -0
  60. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/udfs/scala_udf_wrapper.py +0 -0
  61. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/__init__.py +0 -0
  62. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/constants.py +0 -0
  63. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/data_profiler.py +0 -0
  64. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/datasampleloader.py +0 -0
  65. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/diff.py +0 -0
  66. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/__diff.py +0 -0
  67. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/__init__.py +0 -0
  68. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/_dill.py +0 -0
  69. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/_objects.py +0 -0
  70. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/_shims.py +0 -0
  71. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/detect.py +0 -0
  72. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/logger.py +0 -0
  73. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/objtypes.py +0 -0
  74. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/pointers.py +0 -0
  75. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/session.py +0 -0
  76. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/settings.py +0 -0
  77. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/source.py +0 -0
  78. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/dill/temp.py +0 -0
  79. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/__init__.py +0 -0
  80. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/__main__.py +0 -0
  81. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/cli.py +0 -0
  82. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/config.py +0 -0
  83. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/custom_typing.py +0 -0
  84. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/decode/__init__.py +0 -0
  85. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/decode/codes.py +0 -0
  86. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/documentor.py +0 -0
  87. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/exceptions.py +0 -0
  88. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/factory.py +0 -0
  89. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/generator.py +0 -0
  90. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/__init__.py +0 -0
  91. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/address/__init__.py +0 -0
  92. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/address/en/__init__.py +0 -0
  93. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/address/en_US/__init__.py +0 -0
  94. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/date_time/__init__.py +0 -0
  95. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/date_time/en_US/__init__.py +0 -0
  96. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/internet/__init__.py +0 -0
  97. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/internet/en_US/__init__.py +0 -0
  98. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/misc/__init__.py +0 -0
  99. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/misc/en_US/__init__.py +0 -0
  100. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/person/__init__.py +0 -0
  101. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/person/en_US/__init__.py +0 -0
  102. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/phone_number/__init__.py +0 -0
  103. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/phone_number/en_US/__init__.py +0 -0
  104. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/python/__init__.py +0 -0
  105. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/providers/python/en_US/__init__.py +0 -0
  106. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/proxy.py +0 -0
  107. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/__init__.py +0 -0
  108. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/checksums.py +0 -0
  109. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/datasets.py +0 -0
  110. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/decorators.py +0 -0
  111. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/distribution.py +0 -0
  112. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/loading.py +0 -0
  113. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/faker/utils/text.py +0 -0
  114. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/functions.py +0 -0
  115. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/gems_utils.py +0 -0
  116. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/httpclient.py +0 -0
  117. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/json_rpc_layer.py +0 -0
  118. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/metagem_utils.py +0 -0
  119. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/monitoring_utils.py +0 -0
  120. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/pipeline_monitoring.py +0 -0
  121. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/request_processor.py +0 -0
  122. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/secrets.py +0 -0
  123. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/synthetic_data_generator.py +0 -0
  124. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/__init__.py +0 -0
  125. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/abi_base.py +0 -0
  126. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/abi_core_fcns.py +0 -0
  127. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/abi_fcn_wrapper.py +0 -0
  128. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/dataframe_fcns.py +0 -0
  129. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/dml_schema.py +0 -0
  130. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy/utils/transpiler/fixed_file_schema.py +0 -0
  131. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/SOURCES.txt +0 -0
  132. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/dependency_links.txt +0 -0
  133. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/not-zip-safe +0 -0
  134. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/requires.txt +0 -0
  135. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/prophecy_libs.egg-info/top_level.txt +0 -0
  136. {prophecy-libs-2.0.0.dev4 → prophecy-libs-2.0.0.dev6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: prophecy-libs
3
- Version: 2.0.0.dev4
3
+ Version: 2.0.0.dev6
4
4
  Summary: Helper library for prophecy generated code
5
5
  Home-page: https://github.com/SimpleDataLabsInc/prophecy-python-libs
6
6
  Author: UNKNOWN
@@ -98,7 +98,10 @@ class RequestMethod(BaseRpcMethod):
98
98
  class NotificationMethod(BaseRpcMethod):
99
99
  """Base class for all notification methods."""
100
100
 
101
- pass
101
+ def to_dict(self) -> Dict[str, Any]:
102
+ d = asdict(self)
103
+ d["type"] = self.__class__.__name__ # Play-JSON discriminator
104
+ return d
102
105
 
103
106
 
104
107
  class JsonRpcResult(ABC):
@@ -7,16 +7,15 @@ from functools import wraps
7
7
  import logging
8
8
  import os
9
9
  import sys
10
+ import re
10
11
 
11
- # Check if 'spark' is present in globals() or locals(), and is not None.
12
- # If not, attempt to initialize it using SparkSessionProxy for serverless
13
- if not globals().get("spark", None):
14
- try:
15
- from server_rest import SparkSessionProxy
16
- spark = SparkSessionProxy.get_instance()
17
- except Exception as e:
18
- print(f"Failed to initialize 'spark' instance. Error: {e}")
19
- raise Exception("Failed to initialize 'spark' instance")
12
+ # Attempt to initialize it using SparkSessionProxy for serverless
13
+ try:
14
+ from server_rest import SparkSessionProxy
15
+ spark = SparkSessionProxy.get_instance()
16
+ except Exception as e:
17
+ print(f"Failed to initialize 'spark' instance. Error: {e}")
18
+ raise Exception("Failed to initialize 'spark' instance")
20
19
 
21
20
  # Monkey Patch Caching
22
21
  try:
@@ -311,6 +310,7 @@ from pyspark.sql.types import (
311
310
  DecimalType,
312
311
  DoubleType,
313
312
  IntegerType,
313
+ StructField,
314
314
  )
315
315
  from datetime import datetime, date, timedelta
316
316
  from decimal import Decimal
@@ -747,6 +747,26 @@ class DataSampleLoader:
747
747
  Lightweight replacement for Databricks' built-in ``display`` that returns the
748
748
  exact JSON payload your code receives through the DBX Commands API.
749
749
  """
750
+
751
+
752
+
753
+ def to_ddl(dt: DataType) -> str:
754
+ _valid_ident = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*$")
755
+ def quote_ident(name: str) -> str:
756
+ return name if _valid_ident.fullmatch(name) else f"`{name.replace('`', '``')}`"
757
+
758
+ if isinstance(dt, ArrayType):
759
+ return f"array<{to_ddl(dt.elementType)}>"
760
+ if isinstance(dt, MapType):
761
+ return f"map<{to_ddl(dt.keyType)},{to_ddl(dt.valueType)}>"
762
+ if isinstance(dt, StructType):
763
+ inner = ",".join(
764
+ f"{quote_ident(f.name)}:{to_ddl(f.dataType)}"
765
+ for f in dt.fields
766
+ )
767
+ return f"struct<{inner}>"
768
+ return dt.simpleString()
769
+
750
770
  if df is None:
751
771
  return
752
772
 
@@ -755,8 +775,8 @@ class DataSampleLoader:
755
775
  schema: list[dict] = [
756
776
  {
757
777
  "name": field.name,
758
- "type": json.dumps(field.dataType.simpleString()), # e.g. "\"long\""
759
- "metadata": json.dumps(field.metadata or {}), # e.g. "\"{}\""
778
+ "type": json.dumps(to_ddl(field.dataType)),
779
+ "metadata": json.dumps(field.metadata or {}),
760
780
  }
761
781
  for field in df.schema # type: StructField
762
782
  ]
@@ -770,11 +790,14 @@ class DataSampleLoader:
770
790
  OUTPUT_FILE = "/tmp/display_output.json"
771
791
  if not Path(OUTPUT_FILE).exists():
772
792
  try:
793
+ serialized = cls._json_serialize(display_res)
794
+ if isinstance(serialized, bytes):
795
+ serialized = serialized.decode("utf-8")
773
796
  Path(OUTPUT_FILE).write_text(
774
- json.dumps(display_res, ensure_ascii=False), encoding="utf-8"
797
+ serialized, encoding="utf-8"
775
798
  )
776
799
  logging.info(
777
- f"Successfully wrote display_res: {display_res} to {OUTPUT_FILE}"
800
+ f"Successfully wrote display_res: {serialized} to {OUTPUT_FILE}"
778
801
  )
779
802
  except Exception as e:
780
803
  logging.error("Failed to write %s: %s", OUTPUT_FILE, e)
@@ -1353,11 +1353,11 @@ class MetricsCollector:
1353
1353
  if is_serverless:
1354
1354
  # making it falsely true for serverless case
1355
1355
  cls.jvm_accessible = True
1356
- print(
1356
+ logging.info(
1357
1357
  f"Failed to initialize MetricsCollector, Spark context is not available, but still making cls.jvm_accessible = {cls.jvm_accessible}"
1358
1358
  )
1359
1359
  else:
1360
- print(
1360
+ logging.info(
1361
1361
  "Failed to initialize MetricsCollector. Spark context is not available"
1362
1362
  )
1363
1363
 
@@ -1548,7 +1548,7 @@ class MetricsCollector:
1548
1548
  spark._jsparkSession, pipelineId, sessionForInteractive
1549
1549
  )
1550
1550
  else:
1551
- print("Running pipeline without metrics")
1551
+ logging.info("Running pipeline without metrics")
1552
1552
 
1553
1553
  if is_serverless:
1554
1554
  cls._handle_start_for_serverless(
@@ -1562,7 +1562,7 @@ class MetricsCollector:
1562
1562
  spark._jsparkSession
1563
1563
  )
1564
1564
  else:
1565
- print("Finished pipeline without metrics")
1565
+ logging.info("Finished pipeline without metrics")
1566
1566
  cls._handle_end_for_serverless(spark)
1567
1567
  global interimConfig
1568
1568
  interimConfig.clear()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: prophecy-libs
3
- Version: 2.0.0.dev4
3
+ Version: 2.0.0.dev6
4
4
  Summary: Helper library for prophecy generated code
5
5
  Home-page: https://github.com/SimpleDataLabsInc/prophecy-python-libs
6
6
  Author: UNKNOWN
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="prophecy-libs",
5
- version="2.0.0.dev4",
5
+ version="2.0.0.dev6",
6
6
  url="https://github.com/SimpleDataLabsInc/prophecy-python-libs",
7
7
  packages=find_packages(exclude=["test.*", "test"]),
8
8
  description="Helper library for prophecy generated code",