goe-framework 1.0.8.dev0__tar.gz → 1.1.0__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 (239) hide show
  1. {goe_framework-1.0.8.dev0/src/goe_framework.egg-info → goe_framework-1.1.0}/PKG-INFO +6 -6
  2. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/README.md +2 -2
  3. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/pyproject.toml +4 -4
  4. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/config_validation_functions.py +11 -2
  5. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/orchestration_config.py +12 -4
  6. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/orchestration_defaults.py +13 -4
  7. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect.py +1 -2
  8. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_frontend.py +3 -31
  9. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_transport.py +3 -3
  10. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/asgi.py +1 -1
  11. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/base.py +9 -6
  12. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_transport_factory.py +3 -3
  13. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_source_data.py +4 -4
  14. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport_functions.py +3 -4
  15. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_frontend_api.py +39 -50
  16. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_offload_source_table.py +4 -7
  17. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_offload_transport_rdbms_api.py +4 -4
  18. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/dataproc_offload_transport.py +23 -16
  19. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_runner.py +1 -1
  20. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/oracle/oracle_orchestration_repo_client.py +4 -5
  21. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/avro_encoder.py +1 -1
  22. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/ora_query.py +27 -28
  23. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0/src/goe_framework.egg-info}/PKG-INFO +6 -6
  24. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/requires.txt +1 -1
  25. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/AUTHORS +0 -0
  26. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/LICENSE +0 -0
  27. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/setup.cfg +0 -0
  28. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/__init__.py +0 -0
  29. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/conductor/__init__.py +0 -0
  30. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/conductor/hybrid_view_service.py +0 -0
  31. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/__init__.py +0 -0
  32. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/config_file.py +0 -0
  33. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/config/option_descriptions.py +0 -0
  34. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/__init__.py +0 -0
  35. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_backend.py +0 -0
  36. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_constants.py +0 -0
  37. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/connect/connect_functions.py +0 -0
  38. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/exceptions.py +0 -0
  39. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/__init__.py +0 -0
  40. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/cli_hdfs.py +0 -0
  41. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_azure.py +0 -0
  42. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_dfs.py +0 -0
  43. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_dfs_factory.py +0 -0
  44. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_gcs.py +0 -0
  45. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/goe_s3.py +0 -0
  46. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/filesystem/web_hdfs.py +0 -0
  47. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/goe.py +0 -0
  48. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/__init__.py +0 -0
  49. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/__main__.py +0 -0
  50. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/__init__.py +0 -0
  51. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/__init__.py +0 -0
  52. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/docs.py +0 -0
  53. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/orchestration.py +0 -0
  54. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/api/routes/system.py +0 -0
  55. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/__init__.py +0 -0
  56. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/application.py +0 -0
  57. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/gunicorn.conf.py +0 -0
  58. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/logging.py +0 -0
  59. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/config/router.py +0 -0
  60. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/__init__.py +0 -0
  61. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/enum.py +0 -0
  62. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/events.py +0 -0
  63. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/__init__.py +0 -0
  64. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/compression.py +0 -0
  65. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/cors.py +0 -0
  66. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/middleware/secure_headers.py +0 -0
  67. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/security.py +0 -0
  68. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/core/worker.py +0 -0
  69. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/__init__.py +0 -0
  70. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/exceptions/errors.py +0 -0
  71. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/heartbeat.py +0 -0
  72. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/prestart.py +0 -0
  73. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/__init__.py +0 -0
  74. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/base.py +0 -0
  75. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/error.py +0 -0
  76. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/generics.py +0 -0
  77. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/orchestration.py +0 -0
  78. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/schemas/system.py +0 -0
  79. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/__init__.py +0 -0
  80. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/heartbeat.py +0 -0
  81. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/hybrid_view.py +0 -0
  82. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/orchestrate.py +0 -0
  83. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/periodic_tasks.py +0 -0
  84. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/services/system.py +0 -0
  85. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/__init__.py +0 -0
  86. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/cache.py +0 -0
  87. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/group_by.py +0 -0
  88. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/orchestrate.py +0 -0
  89. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/ping.py +0 -0
  90. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/utils/system.py +0 -0
  91. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/worker.py +0 -0
  92. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/listener/wsgi.py +0 -0
  93. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/__init__.py +0 -0
  94. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/backend_api.py +0 -0
  95. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/backend_table.py +0 -0
  96. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/__init__.py +0 -0
  97. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_backend_api.py +0 -0
  98. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_backend_table.py +0 -0
  99. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_column.py +0 -0
  100. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_literal.py +0 -0
  101. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/bigquery/bigquery_predicate.py +0 -0
  102. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/column_metadata.py +0 -0
  103. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/__init__.py +0 -0
  104. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/backend_api_factory.py +0 -0
  105. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/backend_table_factory.py +0 -0
  106. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/frontend_api_factory.py +0 -0
  107. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_source_table_factory.py +0 -0
  108. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/offload_transport_rdbms_api_factory.py +0 -0
  109. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/query_import_factory.py +0 -0
  110. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/factory/staging_file_factory.py +0 -0
  111. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/format_literal.py +0 -0
  112. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/frontend_api.py +0 -0
  113. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/__init__.py +0 -0
  114. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_backend_api.py +0 -0
  115. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_backend_table.py +0 -0
  116. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_column.py +0 -0
  117. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hadoop_predicate.py +0 -0
  118. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_backend_api.py +0 -0
  119. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_backend_table.py +0 -0
  120. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/hive_literal.py +0 -0
  121. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_backend_api.py +0 -0
  122. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_backend_table.py +0 -0
  123. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/impala_literal.py +0 -0
  124. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/hadoop/sqoop_offload_transport.py +0 -0
  125. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/__init__.py +0 -0
  126. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_column.py +0 -0
  127. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_frontend_api.py +0 -0
  128. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_offload_source_table.py +0 -0
  129. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/mssql_offload_transport_rdbms_api.py +0 -0
  130. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_backend_api.py +0 -0
  131. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_backend_table.py +0 -0
  132. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_column.py +0 -0
  133. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_constants.py +0 -0
  134. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_literal.py +0 -0
  135. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/microsoft/synapse_predicate.py +0 -0
  136. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload.py +0 -0
  137. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_constants.py +0 -0
  138. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_functions.py +0 -0
  139. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_messages.py +0 -0
  140. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_metadata_functions.py +0 -0
  141. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_source_table.py +0 -0
  142. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_status_report.py +0 -0
  143. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport.py +0 -0
  144. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_transport_rdbms_api.py +0 -0
  145. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_validation.py +0 -0
  146. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/offload_xform_functions.py +0 -0
  147. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/__init__.py +0 -0
  148. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/data_type_controls.py +0 -0
  149. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/ddl_file.py +0 -0
  150. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/not_null_columns.py +0 -0
  151. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/partition_controls.py +0 -0
  152. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/sort_columns.py +0 -0
  153. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/stats_controls.py +0 -0
  154. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/table_structure_checks.py +0 -0
  155. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/operation/transport.py +0 -0
  156. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/option_validation.py +0 -0
  157. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/__init__.py +0 -0
  158. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_column.py +0 -0
  159. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_literal.py +0 -0
  160. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/oracle/oracle_predicate.py +0 -0
  161. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/predicate_offload.py +0 -0
  162. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/query_import_interface.py +0 -0
  163. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/__init__.py +0 -0
  164. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_backend_api.py +0 -0
  165. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_backend_table.py +0 -0
  166. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_column.py +0 -0
  167. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_literal.py +0 -0
  168. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/snowflake/snowflake_predicate.py +0 -0
  169. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/__init__.py +0 -0
  170. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/livy_offload_transport.py +0 -0
  171. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/offload_transport_livy_requests.py +0 -0
  172. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/pyspark_literal.py +0 -0
  173. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/spark/spark_thrift_backend_api.py +0 -0
  174. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/__init__.py +0 -0
  175. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/__init__.py +0 -0
  176. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/avro_column.py +0 -0
  177. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/avro/avro_staging_file.py +0 -0
  178. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/__init__.py +0 -0
  179. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/parquet_column.py +0 -0
  180. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/parquet/parquet_staging_file.py +0 -0
  181. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/staging/staging_file.py +0 -0
  182. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/synthetic_partition_literal.py +0 -0
  183. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/__init__.py +0 -0
  184. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_column.py +0 -0
  185. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_frontend_api.py +0 -0
  186. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_literal.py +0 -0
  187. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_offload_source_table.py +0 -0
  188. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_offload_transport_rdbms_api.py +0 -0
  189. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_partition_expression.py +0 -0
  190. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/offload/teradata/teradata_predicate.py +0 -0
  191. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/__init__.py +0 -0
  192. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/cli_entry_points.py +0 -0
  193. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/command_steps.py +0 -0
  194. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/execution_id.py +0 -0
  195. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_constants.py +0 -0
  196. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/orchestration/orchestration_lock.py +0 -0
  197. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/__init__.py +0 -0
  198. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/factory/__init__.py +0 -0
  199. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/factory/orchestration_repo_client_factory.py +0 -0
  200. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/oracle/__init__.py +0 -0
  201. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/orchestration_metadata.py +0 -0
  202. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/orchestration_repo_client.py +0 -0
  203. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/teradata/__init__.py +0 -0
  204. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/persistence/teradata/teradata_orchestration_repo_client.py +0 -0
  205. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/__init__.py +0 -0
  206. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync.py +0 -0
  207. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_analyzer.py +0 -0
  208. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_command_file.py +0 -0
  209. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_constants.py +0 -0
  210. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_processor.py +0 -0
  211. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/schema_sync_step.py +0 -0
  212. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/__init__.py +0 -0
  213. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/add_backend_column.py +0 -0
  214. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/add_oracle_column.py +0 -0
  215. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/schema_sync/steps/step_builder.py +0 -0
  216. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/scripts/__init__.py +0 -0
  217. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/scripts/agg_validate.py +0 -0
  218. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/__init__.py +0 -0
  219. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/better_impyla.py +0 -0
  220. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/exception_trigger.py +0 -0
  221. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_log.py +0 -0
  222. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_log_fh.py +0 -0
  223. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/goe_version.py +0 -0
  224. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hive_ddl_transform.py +0 -0
  225. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hive_table_stats.py +0 -0
  226. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/hs2_connection.py +0 -0
  227. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/json_tools.py +0 -0
  228. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/local_cache.py +0 -0
  229. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/misc_functions.py +0 -0
  230. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/parallel_exec.py +0 -0
  231. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/parquet_encoder.py +0 -0
  232. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/password_tools.py +0 -0
  233. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/polling_thread.py +0 -0
  234. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/redis_tools.py +0 -0
  235. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/retry_logic.py +0 -0
  236. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe/util/simple_timer.py +0 -0
  237. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/SOURCES.txt +0 -0
  238. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/dependency_links.txt +0 -0
  239. {goe_framework-1.0.8.dev0 → goe_framework-1.1.0}/src/goe_framework.egg-info/top_level.txt +0 -0
@@ -1,17 +1,17 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: goe-framework
3
- Version: 1.0.8.dev0
3
+ Version: 1.1.0
4
4
  Maintainer-email: Neil Johnson <neiljohnson@google.com>
5
5
  Project-URL: Homepage, https://github.com/gluent/goe
6
6
  Project-URL: Issues, https://github.com/gluent/goe/issues
7
7
  Classifier: Development Status :: 4 - Beta
8
- Classifier: Programming Language :: Python :: 3.7
9
8
  Classifier: Programming Language :: Python :: 3.8
10
9
  Classifier: Programming Language :: Python :: 3.9
11
10
  Classifier: Programming Language :: Python :: 3.10
12
11
  Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Operating System :: OS Independent
14
- Requires-Python: >=3.7
14
+ Requires-Python: >=3.8
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
17
  License-File: AUTHORS
@@ -33,7 +33,7 @@ Requires-Dist: google-cloud-storage
33
33
  Requires-Dist: boto3
34
34
  Requires-Dist: azure-common
35
35
  Requires-Dist: azure-storage-blob
36
- Requires-Dist: cx-Oracle
36
+ Requires-Dist: oracledb
37
37
  Requires-Dist: google-cloud-bigquery
38
38
  Requires-Dist: google-cloud-kms
39
39
  Requires-Dist: python-dotenv
@@ -124,12 +124,12 @@ Variables you will want to pay attention to are:
124
124
  - OFFLOAD_FS_CONTAINER
125
125
  - OFFLOAD_FS_PREFIX
126
126
 
127
- If using Dataproc to provide Spark:
127
+ If using Google Managed Service for Apache Spark:
128
128
  - GOOGLE_DATAPROC_CLUSTER
129
129
  - GOOGLE_DATAPROC_SERVICE_ACCOUNT
130
130
  - GOOGLE_DATAPROC_REGION
131
131
 
132
- If using Dataproc Batches to provide Spark:
132
+ If using Google Managed Service for Apache Spark serverless:
133
133
  - GOOGLE_DATAPROC_BATCHES_VERSION
134
134
  - GOOGLE_DATAPROC_SERVICE_ACCOUNT
135
135
  - GOOGLE_DATAPROC_REGION
@@ -53,12 +53,12 @@ Variables you will want to pay attention to are:
53
53
  - OFFLOAD_FS_CONTAINER
54
54
  - OFFLOAD_FS_PREFIX
55
55
 
56
- If using Dataproc to provide Spark:
56
+ If using Google Managed Service for Apache Spark:
57
57
  - GOOGLE_DATAPROC_CLUSTER
58
58
  - GOOGLE_DATAPROC_SERVICE_ACCOUNT
59
59
  - GOOGLE_DATAPROC_REGION
60
60
 
61
- If using Dataproc Batches to provide Spark:
61
+ If using Google Managed Service for Apache Spark serverless:
62
62
  - GOOGLE_DATAPROC_BATCHES_VERSION
63
63
  - GOOGLE_DATAPROC_SERVICE_ACCOUNT
64
64
  - GOOGLE_DATAPROC_REGION
@@ -14,19 +14,19 @@
14
14
 
15
15
  [project]
16
16
  name = "goe-framework"
17
- version = "1.0.8.dev0"
17
+ version = "1.1.0"
18
18
  readme = "README.md"
19
- requires-python = ">=3.7"
19
+ requires-python = ">=3.8"
20
20
  maintainers = [
21
21
  {name = "Neil Johnson", email = "neiljohnson@google.com"},
22
22
  ]
23
23
  classifiers = [
24
24
  "Development Status :: 4 - Beta",
25
- "Programming Language :: Python :: 3.7",
26
25
  "Programming Language :: Python :: 3.8",
27
26
  "Programming Language :: Python :: 3.9",
28
27
  "Programming Language :: Python :: 3.10",
29
28
  "Programming Language :: Python :: 3.11",
29
+ "Programming Language :: Python :: 3.12",
30
30
  "Operating System :: OS Independent"
31
31
  ]
32
32
  dependencies = [
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "azure-storage-blob",
54
54
 
55
55
  # For Oracle frontend
56
- "cx-Oracle",
56
+ "oracledb",
57
57
 
58
58
  # For BigQuery backend
59
59
  "google-cloud-bigquery",
@@ -14,12 +14,12 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- """ config_validation_functions: Library of functions used in goe.py and OrchestrationConfig
18
- """
17
+ """config_validation_functions: Library of functions used in goe.py and OrchestrationConfig"""
19
18
 
20
19
  import json
21
20
  import random
22
21
  import re
22
+ import oracledb
23
23
 
24
24
  from goe.config import orchestration_defaults
25
25
  from goe.filesystem.goe_dfs import (
@@ -417,6 +417,15 @@ def normalise_rdbms_oracle_options(options, exc_cls=OrchestrationConfigException
417
417
  silent is required when this is called before options has been defined, we don't want to try logging anything
418
418
  before logging is ready.
419
419
  """
420
+ if options.oracledb_thick_mode:
421
+ if oracledb.is_thin_mode():
422
+ try:
423
+ oracledb.init_oracle_client()
424
+ except Exception as exc:
425
+ raise exc_cls(
426
+ f"Failed to initialize oracledb thick mode: {exc}"
427
+ ) from exc
428
+
420
429
  if not options.oracle_dsn:
421
430
  raise exc_cls("Oracle connection options required")
422
431
  elif not options.use_oracle_wallet and (
@@ -14,9 +14,9 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- """ OrchestrationConfig: Class of configuration attributes for Orchestration commands.
18
- These are not attributes we expect an end user to change/provide on a command by command basis,
19
- it is config coming from configuration files.
17
+ """OrchestrationConfig: Class of configuration attributes for Orchestration commands.
18
+ These are not attributes we expect an end user to change/provide on a command by command basis,
19
+ it is config coming from configuration files.
20
20
  """
21
21
 
22
22
  import logging
@@ -47,7 +47,6 @@ from goe.offload.offload_messages import OffloadMessages
47
47
  from goe.offload.offload_transport_functions import hs2_connection_log_message
48
48
  from goe.util.password_tools import PasswordToolsException
49
49
 
50
-
51
50
  logger = logging.getLogger(__name__)
52
51
  # Disabling logging by default
53
52
  logger.addHandler(logging.NullHandler())
@@ -201,6 +200,7 @@ EXPECTED_CONFIG_ARGS = [
201
200
  "teradata_repo_user",
202
201
  "use_ssl",
203
202
  "use_oracle_wallet",
203
+ "oracledb_thick_mode",
204
204
  "webhdfs_host",
205
205
  "webhdfs_port",
206
206
  "verbose",
@@ -288,6 +288,7 @@ class OrchestrationConfig:
288
288
  offload_transport_spark_submit_executable: Optional[str]
289
289
  offload_transport_spark_thrift_host: Optional[str]
290
290
  use_oracle_wallet: bool
291
+ oracledb_thick_mode: bool
291
292
 
292
293
  def __init__(self, do_not_connect=False, **kwargs):
293
294
  """Do not expect to construct directly via __init__.
@@ -591,6 +592,13 @@ class OrchestrationConfig:
591
592
  orchestration_defaults.use_oracle_wallet_default(),
592
593
  ),
593
594
  ),
595
+ oracledb_thick_mode=config_dict.get(
596
+ "oracledb_thick_mode",
597
+ orchestration_defaults.bool_option_from_string(
598
+ "ORACLEDB_THICK_MODE",
599
+ orchestration_defaults.oracledb_thick_mode_default(),
600
+ ),
601
+ ),
594
602
  offload_transport_auth_using_oracle_wallet=config_dict.get(
595
603
  "offload_transport_auth_using_oracle_wallet",
596
604
  orchestration_defaults.bool_option_from_string(
@@ -14,10 +14,10 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- """ OrchestrationDefaults: Library of functions providing default values for command line options.
18
- This is a temporary measure in order to get the code out of goe.py and into a single location, in the
19
- future we expect to refactor all option processing, including defaults, and this module will hopefully become
20
- redundant at that time.
17
+ """OrchestrationDefaults: Library of functions providing default values for command line options.
18
+ This is a temporary measure in order to get the code out of goe.py and into a single location, in the
19
+ future we expect to refactor all option processing, including defaults, and this module will hopefully become
20
+ redundant at that time.
21
21
  """
22
22
 
23
23
  # Standard Library
@@ -738,6 +738,15 @@ def use_oracle_wallet_default() -> bool:
738
738
  return bool_option_from_string("USE_ORACLE_WALLET", str_val)
739
739
 
740
740
 
741
+ def oracledb_thick_mode_default() -> bool:
742
+ str_val = (
743
+ os.environ.get("ORACLEDB_THICK_MODE")
744
+ or os.environ.get("USE_ORACLE_WALLET")
745
+ or "false"
746
+ )
747
+ return bool_option_from_string("ORACLEDB_THICK_MODE", str_val)
748
+
749
+
741
750
  def offload_transport_auth_using_oracle_wallet_default() -> bool:
742
751
  str_val = os.environ.get("OFFLOAD_TRANSPORT_AUTH_USING_ORACLE_WALLET") or "false"
743
752
  return bool_option_from_string(
@@ -69,7 +69,6 @@ from goe.util.goe_log import log_exception
69
69
  from goe.util.misc_functions import unsurround
70
70
  from goe.util.redis_tools import RedisClient
71
71
 
72
-
73
72
  OS_RELEASE_FILE_REDHAT = "/etc/redhat-release"
74
73
  OS_RELEASE_FILE_SUSE = "/etc/SuSE-release"
75
74
  OS_RELEASE_FILE_DEBIAN = "/etc/os-release"
@@ -377,7 +376,7 @@ def upgrade_environment_file(environment_file, template_file):
377
376
  )
378
377
  for key in sorted(set(template.keys()) - set(configuration.keys())):
379
378
  detail("Adding %s" % key)
380
- f.write(template[key])
379
+ f.write(f"{key}={template[key]}\n")
381
380
 
382
381
  log("%s has been updated" % environment_file, ansi_code="green")
383
382
  else:
@@ -16,7 +16,7 @@ import os
16
16
  import sys
17
17
  import traceback
18
18
 
19
- from cx_Oracle import DatabaseError
19
+ from oracledb import DatabaseError
20
20
 
21
21
  from goe.connect.connect_functions import (
22
22
  FatalTestFailure,
@@ -25,6 +25,7 @@ from goe.connect.connect_functions import (
25
25
  log,
26
26
  success,
27
27
  test_header,
28
+ warning,
28
29
  )
29
30
  from goe.offload.factory.frontend_api_factory import frontend_api_factory
30
31
  from goe.offload import offload_constants
@@ -41,7 +42,6 @@ from goe.goe import (
41
42
  NLS_LANG_MISSING_CHARACTER_SET_EXCEPTION_TEMPLATE,
42
43
  )
43
44
 
44
-
45
45
  GOE_MINIMUM_ORACLE_VERSION = "10.2.0.1"
46
46
 
47
47
 
@@ -141,7 +141,7 @@ def test_oracle(orchestration_config, messages):
141
141
  'NLS_LANG not specified in environment, this will be set at offload time to "%s"'
142
142
  % os.environ["NLS_LANG"]
143
143
  )
144
- failure(test_name)
144
+ warning(test_name)
145
145
  else:
146
146
  if not nls_lang_has_charset():
147
147
  detail(
@@ -224,34 +224,6 @@ def test_oracle(orchestration_config, messages):
224
224
  detail(exc)
225
225
  failure(test_name)
226
226
 
227
- test_name = "Oracle Parameters"
228
- test_header(test_name)
229
-
230
- db_parameters = [
231
- "processes",
232
- "sessions",
233
- "query_rewrite_enabled",
234
- "_optimizer_cartesian_enabled",
235
- ]
236
- binds = {}
237
-
238
- for count, value in enumerate(db_parameters):
239
- binds["b" + str(count)] = value
240
-
241
- sql = (
242
- "select name, value from gv$parameter where name in (%s) group by name, value order by 1,2"
243
- % ",".join([":" + _ for _ in binds])
244
- )
245
- db_parameter_values = frontend_api.execute_query_fetch_all(sql, query_params=binds)
246
- col1_width = max(
247
- max([len(row[0]) for row in db_parameter_values]), len("Parameter")
248
- )
249
- col2_width = max(max([len(row[1]) for row in db_parameter_values]), len("Value"))
250
- parameter_format = "{0:" + str(col1_width) + "} {1:>" + str(col2_width) + "}"
251
- detail(parameter_format.format("Parameter", "Value"))
252
- for row in db_parameter_values:
253
- detail(parameter_format.format(row[0], row[1]))
254
-
255
227
  cx.close()
256
228
 
257
229
 
@@ -287,7 +287,7 @@ def test_spark_gcloud(orchestration_config, messages):
287
287
  log("Skipping Spark gcloud tests due to absent config", detail=VVERBOSE)
288
288
  return
289
289
 
290
- test_name = "Spark Dataproc settings"
290
+ test_name = "Google Managed Spark settings"
291
291
  test_header(test_name)
292
292
  if spark_submit_executable_exists(
293
293
  orchestration_config,
@@ -309,7 +309,7 @@ def test_spark_gcloud(orchestration_config, messages):
309
309
  orchestration_config, messages
310
310
  )
311
311
  verify_offload_transport_rdbms_connectivity(
312
- data_transport_client, "Spark Dataproc"
312
+ data_transport_client, "Google Managed Spark"
313
313
  )
314
314
 
315
315
  if is_spark_gcloud_batches_available(orchestration_config, None, messages=messages):
@@ -317,7 +317,7 @@ def test_spark_gcloud(orchestration_config, messages):
317
317
  orchestration_config, messages
318
318
  )
319
319
  verify_offload_transport_rdbms_connectivity(
320
- data_transport_client, "Spark Dataproc Batches"
320
+ data_transport_client, "Google Managed Spark serverless"
321
321
  )
322
322
 
323
323
 
@@ -17,7 +17,7 @@ import multiprocessing
17
17
  from pathlib import Path
18
18
 
19
19
  # Third Party Libraries
20
- from cx_Oracle import DatabaseError as OracleDatabaseError
20
+ from oracledb import DatabaseError as OracleDatabaseError
21
21
  from fastapi import FastAPI
22
22
  from fastapi.exceptions import HTTPException, RequestValidationError
23
23
  from fastapi.responses import ORJSONResponse
@@ -13,11 +13,12 @@
13
13
  # limitations under the License.
14
14
 
15
15
  """HTTP exception and handler for FastAPI."""
16
+
16
17
  # Standard Library
17
18
  from typing import Any, Dict, Optional, Union
18
19
 
19
20
  # Third Party Libraries
20
- from cx_Oracle import DatabaseError as OracleDatabaseError
21
+ from oracledb import DatabaseError as OracleDatabaseError
21
22
  from fastapi import Request, status
22
23
  from fastapi.exceptions import HTTPException, RequestValidationError
23
24
  from fastapi.responses import ORJSONResponse
@@ -93,11 +94,13 @@ class ApplicationError(BaseApplicationError):
93
94
  BaseApplicationError.__init__( # noqa: WPS609
94
95
  self,
95
96
  status_code,
96
- content=schemas.ErrorMessage(code=status_code, message=message).dict(
97
- exclude_none=True,
98
- )
99
- if isinstance(message, str)
100
- else message,
97
+ content=(
98
+ schemas.ErrorMessage(code=status_code, message=message).dict(
99
+ exclude_none=True,
100
+ )
101
+ if isinstance(message, str)
102
+ else message
103
+ ),
101
104
  )
102
105
 
103
106
 
@@ -195,7 +195,7 @@ def spark_livy_jdbc_connectivity_checker(offload_options, messages):
195
195
 
196
196
 
197
197
  def spark_dataproc_jdbc_connectivity_checker(offload_options, messages):
198
- """Connect needs a cut down client to simply check RDBMS connectivity from Dataproc
198
+ """Connect needs a cut down client to simply check RDBMS connectivity from Managed Spark
199
199
  back to the source RDBMS is correctly configured
200
200
  """
201
201
  from goe.offload.spark.dataproc_offload_transport import (
@@ -207,8 +207,8 @@ def spark_dataproc_jdbc_connectivity_checker(offload_options, messages):
207
207
 
208
208
 
209
209
  def spark_dataproc_batches_jdbc_connectivity_checker(offload_options, messages):
210
- """Connect needs a cut down client to simply check RDBMS connectivity from Dataproc Batches
211
- back to the source RDBMS is correctly configured
210
+ """Connect needs a cut down client to simply check RDBMS connectivity from Managed
211
+ Spark serverless back to the source RDBMS is correctly configured
212
212
  """
213
213
  from goe.offload.spark.dataproc_offload_transport import (
214
214
  OffloadTransportSparkBatchesGcloudCanary,
@@ -1042,12 +1042,12 @@ class OffloadSourceDataInterface(metaclass=ABCMeta):
1042
1042
  return source_partitions[hv_partition_index + 1]
1043
1043
 
1044
1044
  def _select_target_table_max(self):
1045
- """Get highest point of data stored in target table and store in state
1046
- Impyla/cx_Oracle both truncate nanoseconds hence TIMESTAMP columns are returned as string
1047
- optimistic_prune_clause is used to limit the partitions scanned when looking for existing rows
1045
+ """Get highest point of data stored in target table and store in state.
1046
+ Impyla and oracledb both truncate nanoseconds hence TIMESTAMP columns are returned as string.
1047
+ optimistic_prune_clause is used to limit the partitions scanned when looking for existing rows:
1048
1048
  If no data is returned then we resort to scanning without the clause
1049
1049
  optimistic_prune_clause is only applicable for single column partition schemes
1050
- Also returns the max value for convenience
1050
+ Also returns the max value for convenience.
1051
1051
  """
1052
1052
  if not self._target_table_exists():
1053
1053
  return None
@@ -12,8 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- """ OffloadTransportFunctions: Library of functions used in goe.py and data transport modules
16
- """
15
+ """OffloadTransportFunctions: Library of functions used in goe.py and data transport modules"""
17
16
 
18
17
  import decimal
19
18
  import logging
@@ -26,7 +25,7 @@ from subprocess import PIPE, STDOUT
26
25
  import sys
27
26
  from typing import Optional, TYPE_CHECKING
28
27
 
29
- import cx_Oracle as cxo
28
+ import oracledb as cxo
30
29
 
31
30
  from goe.offload.frontend_api import FRONTEND_TRACE_MODULE
32
31
  from goe.offload.offload_constants import (
@@ -146,7 +145,7 @@ def get_rdbms_connection_for_oracle(
146
145
  if use_oracle_wallet:
147
146
  ora_conn = cxo.connect(dsn=ora_dsn)
148
147
  else:
149
- ora_conn = cxo.connect(ora_user, ora_pass, ora_dsn)
148
+ ora_conn = cxo.connect(user=ora_user, password=ora_pass, dsn=ora_dsn)
150
149
  session_cursor = ora_conn.cursor()
151
150
  try:
152
151
  session_cursor.execute(