prophecy-libs 2.0.4.dev0__tar.gz → 2.0.6.dev69__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 (139) hide show
  1. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/PKG-INFO +1 -1
  2. prophecy-libs-2.0.6.dev69/prophecy/data/__init__.py +1 -0
  3. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/datasampleloader.py +6 -1
  4. prophecy-libs-2.0.6.dev69/prophecy/utils/dbx_serverless_helper.py +56 -0
  5. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/diff.py +9 -2
  6. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/httpclient.py +2 -2
  7. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/secrets.py +19 -9
  8. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/dataframe_fcns.py +5 -9
  9. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/PKG-INFO +1 -1
  10. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/SOURCES.txt +2 -0
  11. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/setup.py +5 -1
  12. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/README.md +0 -0
  13. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/__init__.py +0 -0
  14. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/config/__init__.py +0 -0
  15. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/config/config_base.py +0 -0
  16. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/config/config_base_test.py +0 -0
  17. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/config/utils.py +0 -0
  18. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/__init__.py +0 -0
  19. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/componentruns/__init__.py +0 -0
  20. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/componentruns/component_run_service.py +0 -0
  21. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/componentruns/component_runs_dao.py +0 -0
  22. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/__init__.py +0 -0
  23. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/delta_metrics_storage_initializer.py +0 -0
  24. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/hive_parquet_storage_initializer.py +0 -0
  25. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/metrics_storage_initializer.py +0 -0
  26. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/models.py +0 -0
  27. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/evolutions/package.py +0 -0
  28. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/execution_metrics_handler.py +0 -0
  29. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/in_memory_store.py +0 -0
  30. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/interims/__init__.py +0 -0
  31. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/interims/delta_interims.py +0 -0
  32. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/interims/hive_parquet_interims.py +0 -0
  33. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/interims/interims_table.py +0 -0
  34. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/logging_spark_session.py +0 -0
  35. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/models.py +0 -0
  36. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/package.py +0 -0
  37. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/pipelineruns/__init__.py +0 -0
  38. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/pipelineruns/pipeline_run_service.py +0 -0
  39. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/pipelineruns/pipeline_runs_dao.py +0 -0
  40. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/schemas/__init__.py +0 -0
  41. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/schemas/em.py +0 -0
  42. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/schemas/external.py +0 -0
  43. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/utils/__init__.py +0 -0
  44. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/utils/common.py +0 -0
  45. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/utils/constants.py +0 -0
  46. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/utils/external.py +0 -0
  47. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/utils/interim_store.py +0 -0
  48. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/workflow_parser.py +0 -0
  49. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/executionmetrics/zip_file.py +0 -0
  50. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/jsonrpc/__init__.py +0 -0
  51. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/jsonrpc/models.py +0 -0
  52. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/libs/__init__.py +0 -0
  53. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/libs/uc_shared_utils.py +0 -0
  54. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/libs/utils.py +0 -0
  55. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/lookups/LookupsBase.py +0 -0
  56. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/lookups/LookupsNative.py +0 -0
  57. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/lookups/__init__.py +0 -0
  58. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/random_data_creator.py +0 -0
  59. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/streaming/__init__.py +0 -0
  60. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/streaming/delta_lake_utils.py +0 -0
  61. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/test/__init__.py +0 -0
  62. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/test/base_test_case.py +0 -0
  63. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/test/utils.py +0 -0
  64. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/udfs/__init__.py +0 -0
  65. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/udfs/rest_api_udf.py +0 -0
  66. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/udfs/sample_udf.py +0 -0
  67. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/udfs/scala_udf_wrapper.py +0 -0
  68. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/__init__.py +0 -0
  69. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/constants.py +0 -0
  70. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/data_profiler.py +0 -0
  71. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/__diff.py +0 -0
  72. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/__init__.py +0 -0
  73. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/_dill.py +0 -0
  74. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/_objects.py +0 -0
  75. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/_shims.py +0 -0
  76. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/detect.py +0 -0
  77. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/logger.py +0 -0
  78. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/objtypes.py +0 -0
  79. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/pointers.py +0 -0
  80. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/session.py +0 -0
  81. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/settings.py +0 -0
  82. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/source.py +0 -0
  83. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/dill/temp.py +0 -0
  84. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/__init__.py +0 -0
  85. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/__main__.py +0 -0
  86. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/cli.py +0 -0
  87. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/config.py +0 -0
  88. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/custom_typing.py +0 -0
  89. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/decode/__init__.py +0 -0
  90. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/decode/codes.py +0 -0
  91. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/documentor.py +0 -0
  92. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/exceptions.py +0 -0
  93. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/factory.py +0 -0
  94. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/generator.py +0 -0
  95. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/__init__.py +0 -0
  96. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/address/__init__.py +0 -0
  97. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/address/en/__init__.py +0 -0
  98. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/address/en_US/__init__.py +0 -0
  99. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/date_time/__init__.py +0 -0
  100. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/date_time/en_US/__init__.py +0 -0
  101. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/internet/__init__.py +0 -0
  102. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/internet/en_US/__init__.py +0 -0
  103. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/misc/__init__.py +0 -0
  104. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/misc/en_US/__init__.py +0 -0
  105. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/person/__init__.py +0 -0
  106. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/person/en_US/__init__.py +0 -0
  107. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/phone_number/__init__.py +0 -0
  108. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/phone_number/en_US/__init__.py +0 -0
  109. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/python/__init__.py +0 -0
  110. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/providers/python/en_US/__init__.py +0 -0
  111. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/proxy.py +0 -0
  112. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/__init__.py +0 -0
  113. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/checksums.py +0 -0
  114. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/datasets.py +0 -0
  115. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/decorators.py +0 -0
  116. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/distribution.py +0 -0
  117. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/loading.py +0 -0
  118. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/faker/utils/text.py +0 -0
  119. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/functions.py +0 -0
  120. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/gems_utils.py +0 -0
  121. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/initial_python_code.py +0 -0
  122. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/json_rpc_layer.py +0 -0
  123. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/metagem_utils.py +0 -0
  124. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/monitoring_utils.py +0 -0
  125. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/pipeline_monitoring.py +0 -0
  126. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/request_processor.py +0 -0
  127. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/synthetic_data_generator.py +0 -0
  128. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/__init__.py +0 -0
  129. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/abi_base.py +0 -0
  130. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/abi_core_fcns.py +0 -0
  131. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/abi_fcn_wrapper.py +0 -0
  132. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/dml_schema.py +0 -0
  133. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/transpiler/fixed_file_schema.py +0 -0
  134. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy/utils/utils.py +0 -0
  135. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/dependency_links.txt +0 -0
  136. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/not-zip-safe +0 -0
  137. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/requires.txt +0 -0
  138. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/prophecy_libs.egg-info/top_level.txt +0 -0
  139. {prophecy-libs-2.0.4.dev0 → prophecy-libs-2.0.6.dev69}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: prophecy-libs
3
- Version: 2.0.4.dev0
3
+ Version: 2.0.6.dev69
4
4
  Summary: Helper library for prophecy generated code
5
5
  Home-page: https://github.com/SimpleDataLabsInc/prophecy-python-libs
6
6
  Author: UNKNOWN
@@ -0,0 +1 @@
1
+ # Package data module
@@ -437,7 +437,12 @@ class DataSampleLoaderLib:
437
437
  except Exception as e:
438
438
  from pyspark.sql.functions import struct, col, to_json
439
439
 
440
- return result.select(to_json(struct(col("*")))).first()
440
+ row = result.select(to_json(struct(col("*")))).first()
441
+ if row is not None:
442
+ # Extract the string from the Row (first value)
443
+ return row[0]
444
+ else:
445
+ return None
441
446
  except Exception as e:
442
447
  print(f"Error creating payload: {str(e)}") # Log error before raising
443
448
  raise ValueError(f"Error creating payload: {str(e)}")
@@ -0,0 +1,56 @@
1
+ """
2
+ Databricks Serverless Helper utilities.
3
+ """
4
+
5
+ import sys
6
+ from importlib import resources
7
+
8
+
9
+ def print_serverless_requirements():
10
+ """Print the contents of the serverless requirements file to stdout"""
11
+ try:
12
+ # Python 3.9+
13
+ with resources.files("prophecy.data").joinpath("requirements.dbxserverless_sandbox.txt").open() as f:
14
+ print(f.read(), end="")
15
+ except AttributeError:
16
+ # Python 3.8 fallback
17
+ with resources.open_text("prophecy.data", "requirements.dbxserverless_sandbox.txt") as f:
18
+ print(f.read(), end="")
19
+
20
+
21
+ def get_serverless_requirements_path():
22
+ """Get the file path to the serverless requirements file"""
23
+ try:
24
+ # Python 3.9+
25
+ files = resources.files("prophecy.data")
26
+ req_file = files.joinpath("requirements.dbxserverless_sandbox.txt")
27
+ with resources.as_file(req_file) as path:
28
+ return str(path)
29
+ except AttributeError:
30
+ # Python 3.8 fallback
31
+ import pkg_resources
32
+ return pkg_resources.resource_filename("prophecy.data", "requirements.dbxserverless_sandbox.txt")
33
+
34
+
35
+ def main():
36
+ """Main CLI entry point"""
37
+ if len(sys.argv) == 1:
38
+ # Default behavior: print requirements
39
+ print_serverless_requirements()
40
+ elif len(sys.argv) == 2:
41
+ command = sys.argv[1]
42
+ if command == "print":
43
+ print_serverless_requirements()
44
+ elif command == "path":
45
+ print(get_serverless_requirements_path())
46
+ else:
47
+ print(f"Unknown command: {command}")
48
+ print("Usage: python -m prophecy.utils.dbx_serverless_helper [print|path]")
49
+ sys.exit(1)
50
+ else:
51
+ print("Usage: python -m prophecy.utils.dbx_serverless_helper [print|path]")
52
+ sys.exit(1)
53
+
54
+
55
+ if __name__ == "__main__":
56
+ main()
@@ -14,7 +14,8 @@ from pyspark.sql.types import (
14
14
  StringType,
15
15
  MapType,
16
16
  )
17
- import uuid, enum
17
+ import uuid, enum, json
18
+ from prophecy.config.config_base import is_serverless
18
19
 
19
20
 
20
21
  class DiffKeys(enum.Enum):
@@ -613,7 +614,7 @@ class DataFrameDiff:
613
614
  "duplicatePkCount": duplicate_df.count(),
614
615
  }
615
616
 
616
- return {
617
+ diff_summary = {
617
618
  "label": diff_key,
618
619
  "data": {
619
620
  "summaryTiles": [
@@ -669,6 +670,12 @@ class DataFrameDiff:
669
670
  },
670
671
  }
671
672
 
673
+ if is_serverless:
674
+ # printing diff summary to support serverless
675
+ # do not print if not serverless
676
+ print(json.dumps(diff_summary))
677
+ return diff_summary
678
+
672
679
  @classmethod
673
680
  def clean_joined_df(cls, joined_df, key_columns, value_columns, left_df, right_df):
674
681
  """
@@ -161,8 +161,8 @@ class ProphecyRequestsLib:
161
161
  try:
162
162
  payload = DataSampleLoaderLib.get_payload(key, job, df_offset)
163
163
  with HttpClientLib(base_url, token) as client:
164
- response = client.post_compressed(endpoint, payload)
164
+ response = client.post_compressed(endpoint, payload or '')
165
165
  except HTTPClientError as e:
166
- print(f"Interims Request Failed HTTPClientError: {str(e)}")
166
+ print(f"Interims Request Failed HTTPClientError: {str(e)}. Payload: {payload} Endpoint: {endpoint}")
167
167
  except Exception as e:
168
168
  print(f"Interims Request Failed: {str(e)}")
@@ -415,7 +415,9 @@ class SecretManager:
415
415
  # ── Health & listings (HashiCorp) ─────────────────────────────────────
416
416
  @staticmethod
417
417
  def health(conn: HashiCorpConnectionDetails):
418
- return VaultUtils.vault_health(conn)
418
+ resp = VaultUtils.vault_health(conn)
419
+ VaultUtils.token_health(conn)
420
+ return resp
419
421
 
420
422
  @staticmethod
421
423
  def listHashiCorpSecrets(conn: HashiCorpConnectionDetails) -> Dict[str, List[str]]:
@@ -492,7 +494,7 @@ async def handle_secrets_crud(req: SecretCrudRequest) -> LSecretsResponse:
492
494
  try:
493
495
  resp = await asyncio.to_thread(SecretManager.health, conn)
494
496
  out = HashiCorpHealthResponse.from_rest_response(resp)
495
- logger.info(f"Returning health response ")
497
+ logger.info(f"Returning health response {out}")
496
498
  return LSecretsResponse.from_request(req, out, True)
497
499
  except Exception as exc:
498
500
  msg = (
@@ -802,7 +804,12 @@ class VaultUtils:
802
804
  cli = VaultUtils._client_from_conn(conn)
803
805
  mount, inner = _split_mount_and_path(full_path)
804
806
  kv = VaultUtils._kv_version_for_mount(cli, mount)
805
- data = VaultUtils._read_kv(cli, mount, inner, kv) or {}
807
+ data = {}
808
+ try:
809
+ data = VaultUtils._read_kv(cli, mount, inner, kv)
810
+ except hvac.exceptions.InvalidPath:
811
+ logger.info(f"Secret path '{mount}/{inner}' does not exist – creating it now.")
812
+
806
813
  data[key] = value
807
814
  VaultUtils._write_kv(cli, mount, inner, data, kv)
808
815
 
@@ -856,22 +863,25 @@ class VaultUtils:
856
863
  acc: Dict[str, List[str]],
857
864
  ):
858
865
  """Depth-first walk; for every leaf secret record {full_path: [keys…]}."""
866
+ path = inner or ""
859
867
  try:
860
868
  if kv_ver == 2:
861
869
  resp = cli.secrets.kv.v2.list_secrets(
862
- path=inner or "", mount_point=mount
870
+ path=path, mount_point=mount
863
871
  )
864
872
  elif kv_ver == 1:
865
873
  resp = cli.secrets.kv.v1.list_secrets(
866
- path=inner or "", mount_point=mount
874
+ path=path, mount_point=mount
867
875
  )
868
876
  else:
869
877
  try:
870
- resp = cli.secrets.kv.v2.list_secrets(path=inner or "", mount_point=mount)
878
+ resp = cli.secrets.kv.v2.list_secrets(path=path, mount_point=mount)
871
879
  kv_ver = 2
872
- except hvac.exceptions.Forbidden:
873
- resp = cli.secrets.kv.v1.list_secrets(path=inner or "", mount_point=mount)
880
+ logger.info(f'Setting kv engine version as 2 for mount={mount} and path={path}')
881
+ except Exception as e:
882
+ resp = cli.secrets.kv.v1.list_secrets(path=path, mount_point=mount)
874
883
  kv_ver = 1
884
+ logger.info(f'Setting kv engine version as 1 for mount={mount} and path={path}')
875
885
 
876
886
  keys = resp["data"]["keys"]
877
887
  except hvac.exceptions.InvalidPath:
@@ -904,4 +914,4 @@ class VaultUtils:
904
914
  @staticmethod
905
915
  async def aio(func, *args, **kwargs):
906
916
  loop = asyncio.get_running_loop()
907
- return await loop.run_in_executor(None, partial(func, *args, **kwargs))
917
+ return await loop.run_in_executor(None, partial(func, *args, **kwargs))
@@ -30,10 +30,6 @@ def writeFixedFile(df, schema, path, mode="overwrite"):
30
30
  createScalaOption(spark, None),
31
31
  _getSaveMode(spark, mode))
32
32
 
33
- def index(string, substring, occurence):
34
- spark = ScalaUtil.getAbiLib().spark
35
- return spark.sparkContext._jvm.io.prophecy.datastage.SparkFunctions.index(string, substring, occurence)
36
-
37
33
  def flattenSchema(df, jsonParsedColumnName, distributeColumnsOnType):
38
34
  spark = ScalaUtil.getAbiLib().spark
39
35
  result = spark.sparkContext._jvm.io.prophecy.alteryx.SparkFunctions.flattenSchema(df._jdf, jsonParsedColumnName, distributeColumnsOnType, spark._jsparkSession)
@@ -403,23 +399,23 @@ def deduplicate(
403
399
  def generate_xml(df, rootElement, namespacePrefixes, namespaceURIs, columnNames, xmlPaths, isAttributes, writeNilElement, schemaLocation=None):
404
400
  spark = df.sparkSession
405
401
  sc = spark.sparkContext
406
-
402
+
407
403
  java_namespacePrefixes = sc._jvm.java.util.ArrayList()
408
404
  for item in namespacePrefixes:
409
405
  java_namespacePrefixes.add(item)
410
-
406
+
411
407
  java_namespaceURIs = sc._jvm.java.util.ArrayList()
412
408
  for item in namespaceURIs:
413
409
  java_namespaceURIs.add(item)
414
-
410
+
415
411
  java_columnNames = sc._jvm.java.util.ArrayList()
416
412
  for item in columnNames:
417
413
  java_columnNames.add(item)
418
-
414
+
419
415
  java_xmlPaths = sc._jvm.java.util.ArrayList()
420
416
  for item in xmlPaths:
421
417
  java_xmlPaths.add(item)
422
-
418
+
423
419
  java_isAttributes = sc._jvm.java.util.ArrayList()
424
420
  for item in isAttributes:
425
421
  java_isAttributes.add(item)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.0
2
2
  Name: prophecy-libs
3
- Version: 2.0.4.dev0
3
+ Version: 2.0.6.dev69
4
4
  Summary: Helper library for prophecy generated code
5
5
  Home-page: https://github.com/SimpleDataLabsInc/prophecy-python-libs
6
6
  Author: UNKNOWN
@@ -6,6 +6,7 @@ prophecy/config/__init__.py
6
6
  prophecy/config/config_base.py
7
7
  prophecy/config/config_base_test.py
8
8
  prophecy/config/utils.py
9
+ prophecy/data/__init__.py
9
10
  prophecy/executionmetrics/__init__.py
10
11
  prophecy/executionmetrics/execution_metrics_handler.py
11
12
  prophecy/executionmetrics/in_memory_store.py
@@ -59,6 +60,7 @@ prophecy/utils/__init__.py
59
60
  prophecy/utils/constants.py
60
61
  prophecy/utils/data_profiler.py
61
62
  prophecy/utils/datasampleloader.py
63
+ prophecy/utils/dbx_serverless_helper.py
62
64
  prophecy/utils/diff.py
63
65
  prophecy/utils/functions.py
64
66
  prophecy/utils/gems_utils.py
@@ -2,9 +2,13 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="prophecy-libs",
5
- version="2.0.4.dev0",
5
+ version="2.0.6.dev69",
6
6
  url="https://github.com/SimpleDataLabsInc/prophecy-python-libs",
7
7
  packages=find_packages(exclude=["test.*", "test"]),
8
+ package_data={
9
+ "prophecy": ["data/requirements.dbxserverless_sandbox.txt"],
10
+ },
11
+ include_package_data=True,
8
12
  description="Helper library for prophecy generated code",
9
13
  long_description=open("README.md").read(),
10
14
  install_requires=[