another-ayx-python-sdk 2.4.2__py3-none-any.whl → 2.4.22__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.
Files changed (418) hide show
  1. another_ayx_python_sdk/version.py +3 -3
  2. {another_ayx_python_sdk-2.4.2.dist-info → another_ayx_python_sdk-2.4.22.dist-info}/METADATA +1 -1
  3. another_ayx_python_sdk-2.4.22.dist-info/RECORD +813 -0
  4. {another_ayx_python_sdk-2.4.2.dist-info → another_ayx_python_sdk-2.4.22.dist-info}/top_level.txt +2 -0
  5. build/lib/another_ayx_python_sdk/__init__.py +14 -0
  6. build/lib/another_ayx_python_sdk/__main__.py +470 -0
  7. build/lib/another_ayx_python_sdk/assets/workspace_files/__init__.py +14 -0
  8. build/lib/another_ayx_python_sdk/assets/workspace_files/setup.py +38 -0
  9. build/lib/another_ayx_python_sdk/cli/__init__.py +14 -0
  10. build/lib/another_ayx_python_sdk/cli/utilities.py +103 -0
  11. build/lib/another_ayx_python_sdk/cli/workspace.py +266 -0
  12. build/lib/another_ayx_python_sdk/cli/yxi_builder.py +125 -0
  13. build/lib/another_ayx_python_sdk/cli/yxi_installer.py +45 -0
  14. build/lib/another_ayx_python_sdk/core/__init__.py +51 -0
  15. build/lib/another_ayx_python_sdk/core/constants.py +25 -0
  16. build/lib/another_ayx_python_sdk/core/dcm_base.py +115 -0
  17. build/lib/another_ayx_python_sdk/core/doc_utilities.py +40 -0
  18. build/lib/another_ayx_python_sdk/core/environment_base.py +213 -0
  19. build/lib/another_ayx_python_sdk/core/exceptions.py +59 -0
  20. build/lib/another_ayx_python_sdk/core/field.py +183 -0
  21. build/lib/another_ayx_python_sdk/core/input_anchor_base.py +86 -0
  22. build/lib/another_ayx_python_sdk/core/input_connection_base.py +206 -0
  23. build/lib/another_ayx_python_sdk/core/io_base.py +139 -0
  24. build/lib/another_ayx_python_sdk/core/metadata.py +173 -0
  25. build/lib/another_ayx_python_sdk/core/observable_mixin.py +90 -0
  26. build/lib/another_ayx_python_sdk/core/output_anchor_base.py +151 -0
  27. build/lib/another_ayx_python_sdk/core/plugin.py +108 -0
  28. build/lib/another_ayx_python_sdk/core/plugin_v2.py +97 -0
  29. build/lib/another_ayx_python_sdk/core/provider_base.py +125 -0
  30. build/lib/another_ayx_python_sdk/core/proxy_requests.py +51 -0
  31. build/lib/another_ayx_python_sdk/core/record_packet.py +88 -0
  32. build/lib/another_ayx_python_sdk/core/record_packet_base.py +123 -0
  33. build/lib/another_ayx_python_sdk/core/register_plugin.py +127 -0
  34. build/lib/another_ayx_python_sdk/core/testing.py +191 -0
  35. build/lib/another_ayx_python_sdk/core/utils.py +146 -0
  36. build/lib/another_ayx_python_sdk/examples/AyxSdkInput/main.py +89 -0
  37. build/lib/another_ayx_python_sdk/examples/AyxSdkMultiConnectionsMultiOutputAnchor/main.py +102 -0
  38. build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleInputAnchors/main.py +84 -0
  39. build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleOutputAnchors/main.py +96 -0
  40. build/lib/another_ayx_python_sdk/examples/AyxSdkOptionalInputAnchor/main.py +94 -0
  41. build/lib/another_ayx_python_sdk/examples/AyxSdkOutput/main.py +78 -0
  42. build/lib/another_ayx_python_sdk/examples/AyxSdkPassThrough/main.py +82 -0
  43. build/lib/another_ayx_python_sdk/providers/__init__.py +14 -0
  44. build/lib/another_ayx_python_sdk/providers/amp_provider/__init__.py +41 -0
  45. build/lib/another_ayx_python_sdk/providers/amp_provider/__main__.py +85 -0
  46. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_dcm.py +58 -0
  47. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_driver.py +358 -0
  48. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment.py +73 -0
  49. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment_v2.py +278 -0
  50. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_anchor.py +73 -0
  51. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_connection.py +132 -0
  52. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io.py +64 -0
  53. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io_components.py +407 -0
  54. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_output_anchor.py +107 -0
  55. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider.py +68 -0
  56. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider_v2.py +128 -0
  57. build/lib/another_ayx_python_sdk/providers/amp_provider/amp_record_packet.py +21 -0
  58. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/__init__.py +32 -0
  59. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_anchor_builder.py +123 -0
  60. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_connection_builder.py +95 -0
  61. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/metadata_builder.py +118 -0
  62. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/output_anchor_builder.py +110 -0
  63. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/packers.py +458 -0
  64. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_builder.py +204 -0
  65. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_packet_builder.py +133 -0
  66. build/lib/another_ayx_python_sdk/providers/amp_provider/builders/tool_config_builder.py +59 -0
  67. build/lib/another_ayx_python_sdk/providers/amp_provider/cng_certs.py +197 -0
  68. build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/__init__.py +18 -0
  69. build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/amp_transport.py +127 -0
  70. build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/transport_base.py +35 -0
  71. build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/__init__.py +14 -0
  72. build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/control_msgs.py +189 -0
  73. build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/dcme_msgs.py +119 -0
  74. build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/record_transfer_msgs.py +32 -0
  75. build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_util.py +161 -0
  76. build/lib/another_ayx_python_sdk/providers/amp_provider/logger_config.py +63 -0
  77. build/lib/another_ayx_python_sdk/providers/amp_provider/plugin_class_loader.py +77 -0
  78. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/__init__.py +67 -0
  79. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/dcm_repository.py +252 -0
  80. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/environment_repository.py +212 -0
  81. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/grpc_repository.py +119 -0
  82. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_anchor_repository.py +110 -0
  83. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_connection_repository.py +276 -0
  84. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_metadata_repository.py +144 -0
  85. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_record_packet_repository.py +252 -0
  86. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/io_repository.py +188 -0
  87. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_anchor_repository.py +117 -0
  88. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_metadata_repository.py +129 -0
  89. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_record_packet_repository.py +170 -0
  90. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/plugin_class_repository.py +55 -0
  91. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/singleton.py +32 -0
  92. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/test_harness_state_repository.py +172 -0
  93. build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/tool_config_repository.py +89 -0
  94. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/__init__.py +14 -0
  95. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/__init__.py +0 -0
  96. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2.py +25 -0
  97. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2_grpc.py +4 -0
  98. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2.py +38 -0
  99. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2_grpc.py +4 -0
  100. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2.py +26 -0
  101. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2_grpc.py +4 -0
  102. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2.py +25 -0
  103. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2_grpc.py +4 -0
  104. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2.py +26 -0
  105. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2_grpc.py +4 -0
  106. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2.py +26 -0
  107. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2_grpc.py +4 -0
  108. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2.py +26 -0
  109. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2_grpc.py +4 -0
  110. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2.py +31 -0
  111. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2_grpc.py +4 -0
  112. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2.py +28 -0
  113. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2_grpc.py +4 -0
  114. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2.py +26 -0
  115. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2_grpc.py +4 -0
  116. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2.py +26 -0
  117. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2_grpc.py +4 -0
  118. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2.py +26 -0
  119. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2_grpc.py +4 -0
  120. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2.py +29 -0
  121. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2_grpc.py +4 -0
  122. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2.py +25 -0
  123. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2_grpc.py +4 -0
  124. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2.py +33 -0
  125. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2_grpc.py +4 -0
  126. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2.py +25 -0
  127. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2_grpc.py +4 -0
  128. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2.py +29 -0
  129. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2_grpc.py +4 -0
  130. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2.py +34 -0
  131. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2_grpc.py +305 -0
  132. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2.py +30 -0
  133. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2_grpc.py +235 -0
  134. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2.py +25 -0
  135. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2_grpc.py +4 -0
  136. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2.py +54 -0
  137. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2_grpc.py +99 -0
  138. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2.py +27 -0
  139. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2_grpc.py +4 -0
  140. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2.py +31 -0
  141. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2_grpc.py +4 -0
  142. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2.py +25 -0
  143. build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2_grpc.py +4 -0
  144. build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_runner.py +115 -0
  145. build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service.py +207 -0
  146. build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service_v2.py +306 -0
  147. build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/__init__.py +14 -0
  148. build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/constants.py +22 -0
  149. build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/conversions.py +55 -0
  150. build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/utilities.py +63 -0
  151. build/lib/another_ayx_python_sdk/providers/e1_provider/__init__.py +36 -0
  152. build/lib/another_ayx_python_sdk/providers/e1_provider/anchor_builder.py +95 -0
  153. build/lib/another_ayx_python_sdk/providers/e1_provider/cache_e1_sdk_import.py +31 -0
  154. build/lib/another_ayx_python_sdk/providers/e1_provider/connection_callback_strategy.py +155 -0
  155. build/lib/another_ayx_python_sdk/providers/e1_provider/connection_interface.py +125 -0
  156. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_dcm.py +53 -0
  157. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_environment.py +127 -0
  158. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor.py +51 -0
  159. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor_proxy.py +33 -0
  160. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_connection.py +87 -0
  161. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_io.py +71 -0
  162. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor.py +157 -0
  163. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor_proxy.py +97 -0
  164. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_driver.py +63 -0
  165. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_proxy.py +363 -0
  166. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_provider.py +71 -0
  167. build/lib/another_ayx_python_sdk/providers/e1_provider/e1_record_packet.py +21 -0
  168. build/lib/another_ayx_python_sdk/providers/e1_provider/events.py +36 -0
  169. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/__init__.py +37 -0
  170. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/alteryx_engine.py +105 -0
  171. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/constants.py +50 -0
  172. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/field.py +122 -0
  173. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor.py +55 -0
  174. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor_manager.py +31 -0
  175. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_copier.py +65 -0
  176. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_creator.py +41 -0
  177. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_info.py +134 -0
  178. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_ref.py +42 -0
  179. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool.py +29 -0
  180. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool_execution_info.py +43 -0
  181. build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/__init__.py +14 -0
  182. build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/__init__.py +18 -0
  183. build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/field_proxy.py +109 -0
  184. build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/record_copier_proxy.py +49 -0
  185. build/lib/another_ayx_python_sdk/providers/e1_provider/records/__init__.py +23 -0
  186. build/lib/another_ayx_python_sdk/providers/e1_provider/records/base_record_container.py +47 -0
  187. build/lib/another_ayx_python_sdk/providers/e1_provider/records/parsed_record_container.py +67 -0
  188. build/lib/another_ayx_python_sdk/providers/e1_provider/records/raw_record_container.py +111 -0
  189. build/lib/another_ayx_python_sdk/providers/e1_provider/tool_config_loader.py +132 -0
  190. build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/__init__.py +35 -0
  191. build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/utilities.py +54 -0
  192. build/lib/another_ayx_python_sdk/providers/e1_provider/workflow_config.py +31 -0
  193. build/lib/another_ayx_python_sdk/providers/file_provider/__init__.py +32 -0
  194. build/lib/another_ayx_python_sdk/providers/file_provider/environment.py +131 -0
  195. build/lib/another_ayx_python_sdk/providers/file_provider/file_adapter.py +286 -0
  196. build/lib/another_ayx_python_sdk/providers/file_provider/file_provider.py +185 -0
  197. build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_dcm.py +53 -0
  198. build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_anchor.py +70 -0
  199. build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_connection.py +112 -0
  200. build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_output_anchor.py +114 -0
  201. build/lib/another_ayx_python_sdk/providers/file_provider/file_record_packet.py +21 -0
  202. build/lib/another_ayx_python_sdk/providers/file_provider/iox.py +56 -0
  203. build/lib/another_ayx_python_sdk/providers/file_provider/tool_input.py +104 -0
  204. build/lib/another_ayx_python_sdk/test_harness/__init__.py +14 -0
  205. build/lib/another_ayx_python_sdk/test_harness/__main__.py +120 -0
  206. build/lib/another_ayx_python_sdk/test_harness/plugin_runner.py +416 -0
  207. build/lib/another_ayx_python_sdk/test_harness/process_lifecycle_manager.py +80 -0
  208. build/lib/another_ayx_python_sdk/test_harness/sdk_engine_service.py +106 -0
  209. build/lib/another_ayx_python_sdk/version.py +8 -0
  210. build/lib/build/lib/another_ayx_python_sdk/__init__.py +14 -0
  211. build/lib/build/lib/another_ayx_python_sdk/__main__.py +470 -0
  212. build/lib/build/lib/another_ayx_python_sdk/assets/workspace_files/__init__.py +14 -0
  213. build/lib/build/lib/another_ayx_python_sdk/assets/workspace_files/setup.py +38 -0
  214. build/lib/build/lib/another_ayx_python_sdk/cli/__init__.py +14 -0
  215. build/lib/build/lib/another_ayx_python_sdk/cli/utilities.py +103 -0
  216. build/lib/build/lib/another_ayx_python_sdk/cli/workspace.py +266 -0
  217. build/lib/build/lib/another_ayx_python_sdk/cli/yxi_builder.py +125 -0
  218. build/lib/build/lib/another_ayx_python_sdk/cli/yxi_installer.py +45 -0
  219. build/lib/build/lib/another_ayx_python_sdk/core/__init__.py +51 -0
  220. build/lib/build/lib/another_ayx_python_sdk/core/constants.py +25 -0
  221. build/lib/build/lib/another_ayx_python_sdk/core/dcm_base.py +115 -0
  222. build/lib/build/lib/another_ayx_python_sdk/core/doc_utilities.py +40 -0
  223. build/lib/build/lib/another_ayx_python_sdk/core/environment_base.py +213 -0
  224. build/lib/build/lib/another_ayx_python_sdk/core/exceptions.py +59 -0
  225. build/lib/build/lib/another_ayx_python_sdk/core/field.py +183 -0
  226. build/lib/build/lib/another_ayx_python_sdk/core/input_anchor_base.py +86 -0
  227. build/lib/build/lib/another_ayx_python_sdk/core/input_connection_base.py +206 -0
  228. build/lib/build/lib/another_ayx_python_sdk/core/io_base.py +139 -0
  229. build/lib/build/lib/another_ayx_python_sdk/core/metadata.py +173 -0
  230. build/lib/build/lib/another_ayx_python_sdk/core/observable_mixin.py +90 -0
  231. build/lib/build/lib/another_ayx_python_sdk/core/output_anchor_base.py +151 -0
  232. build/lib/build/lib/another_ayx_python_sdk/core/plugin.py +108 -0
  233. build/lib/build/lib/another_ayx_python_sdk/core/plugin_v2.py +97 -0
  234. build/lib/build/lib/another_ayx_python_sdk/core/provider_base.py +125 -0
  235. build/lib/build/lib/another_ayx_python_sdk/core/proxy_requests.py +51 -0
  236. build/lib/build/lib/another_ayx_python_sdk/core/record_packet.py +88 -0
  237. build/lib/build/lib/another_ayx_python_sdk/core/record_packet_base.py +123 -0
  238. build/lib/build/lib/another_ayx_python_sdk/core/register_plugin.py +127 -0
  239. build/lib/build/lib/another_ayx_python_sdk/core/testing.py +191 -0
  240. build/lib/build/lib/another_ayx_python_sdk/core/utils.py +146 -0
  241. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkInput/main.py +89 -0
  242. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultiConnectionsMultiOutputAnchor/main.py +102 -0
  243. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleInputAnchors/main.py +84 -0
  244. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleOutputAnchors/main.py +96 -0
  245. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkOptionalInputAnchor/main.py +94 -0
  246. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkOutput/main.py +78 -0
  247. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkPassThrough/main.py +82 -0
  248. build/lib/build/lib/another_ayx_python_sdk/providers/__init__.py +14 -0
  249. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/__init__.py +41 -0
  250. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/__main__.py +85 -0
  251. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_dcm.py +58 -0
  252. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_driver.py +358 -0
  253. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment.py +73 -0
  254. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment_v2.py +278 -0
  255. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_anchor.py +73 -0
  256. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_connection.py +132 -0
  257. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io.py +64 -0
  258. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io_components.py +407 -0
  259. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_output_anchor.py +107 -0
  260. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider.py +68 -0
  261. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider_v2.py +128 -0
  262. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_record_packet.py +21 -0
  263. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/__init__.py +32 -0
  264. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_anchor_builder.py +123 -0
  265. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_connection_builder.py +95 -0
  266. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/metadata_builder.py +118 -0
  267. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/output_anchor_builder.py +110 -0
  268. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/packers.py +458 -0
  269. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_builder.py +204 -0
  270. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_packet_builder.py +133 -0
  271. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/tool_config_builder.py +59 -0
  272. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/cng_certs.py +197 -0
  273. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/__init__.py +18 -0
  274. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/amp_transport.py +127 -0
  275. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/transport_base.py +35 -0
  276. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/__init__.py +14 -0
  277. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/control_msgs.py +189 -0
  278. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/dcme_msgs.py +119 -0
  279. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/record_transfer_msgs.py +32 -0
  280. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_util.py +161 -0
  281. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/logger_config.py +63 -0
  282. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/plugin_class_loader.py +77 -0
  283. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/__init__.py +67 -0
  284. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/dcm_repository.py +252 -0
  285. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/environment_repository.py +212 -0
  286. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/grpc_repository.py +119 -0
  287. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_anchor_repository.py +110 -0
  288. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_connection_repository.py +276 -0
  289. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_metadata_repository.py +144 -0
  290. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_record_packet_repository.py +252 -0
  291. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/io_repository.py +188 -0
  292. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_anchor_repository.py +117 -0
  293. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_metadata_repository.py +129 -0
  294. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_record_packet_repository.py +170 -0
  295. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/plugin_class_repository.py +55 -0
  296. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/singleton.py +32 -0
  297. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/test_harness_state_repository.py +172 -0
  298. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/tool_config_repository.py +89 -0
  299. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/__init__.py +14 -0
  300. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/__init__.py +0 -0
  301. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2.py +25 -0
  302. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2_grpc.py +4 -0
  303. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2.py +38 -0
  304. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2_grpc.py +4 -0
  305. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2.py +26 -0
  306. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2_grpc.py +4 -0
  307. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2.py +25 -0
  308. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2_grpc.py +4 -0
  309. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2.py +26 -0
  310. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2_grpc.py +4 -0
  311. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2.py +26 -0
  312. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2_grpc.py +4 -0
  313. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2.py +26 -0
  314. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2_grpc.py +4 -0
  315. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2.py +31 -0
  316. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2_grpc.py +4 -0
  317. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2.py +28 -0
  318. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2_grpc.py +4 -0
  319. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2.py +26 -0
  320. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2_grpc.py +4 -0
  321. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2.py +26 -0
  322. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2_grpc.py +4 -0
  323. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2.py +26 -0
  324. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2_grpc.py +4 -0
  325. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2.py +29 -0
  326. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2_grpc.py +4 -0
  327. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2.py +25 -0
  328. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2_grpc.py +4 -0
  329. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2.py +33 -0
  330. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2_grpc.py +4 -0
  331. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2.py +25 -0
  332. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2_grpc.py +4 -0
  333. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2.py +29 -0
  334. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2_grpc.py +4 -0
  335. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2.py +34 -0
  336. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2_grpc.py +305 -0
  337. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2.py +30 -0
  338. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2_grpc.py +235 -0
  339. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2.py +25 -0
  340. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2_grpc.py +4 -0
  341. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2.py +54 -0
  342. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2_grpc.py +99 -0
  343. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2.py +27 -0
  344. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2_grpc.py +4 -0
  345. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2.py +31 -0
  346. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2_grpc.py +4 -0
  347. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2.py +25 -0
  348. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2_grpc.py +4 -0
  349. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_runner.py +115 -0
  350. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service.py +207 -0
  351. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service_v2.py +306 -0
  352. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/__init__.py +14 -0
  353. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/constants.py +22 -0
  354. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/conversions.py +55 -0
  355. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/utilities.py +63 -0
  356. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/__init__.py +36 -0
  357. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/anchor_builder.py +95 -0
  358. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/cache_e1_sdk_import.py +31 -0
  359. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/connection_callback_strategy.py +155 -0
  360. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/connection_interface.py +125 -0
  361. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_dcm.py +53 -0
  362. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_environment.py +127 -0
  363. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor.py +51 -0
  364. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor_proxy.py +33 -0
  365. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_connection.py +87 -0
  366. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_io.py +71 -0
  367. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor.py +157 -0
  368. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor_proxy.py +97 -0
  369. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_driver.py +63 -0
  370. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_proxy.py +363 -0
  371. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_provider.py +71 -0
  372. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_record_packet.py +21 -0
  373. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/events.py +36 -0
  374. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/__init__.py +37 -0
  375. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/alteryx_engine.py +105 -0
  376. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/constants.py +50 -0
  377. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/field.py +122 -0
  378. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor.py +55 -0
  379. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor_manager.py +31 -0
  380. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_copier.py +65 -0
  381. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_creator.py +41 -0
  382. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_info.py +134 -0
  383. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_ref.py +42 -0
  384. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool.py +29 -0
  385. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool_execution_info.py +43 -0
  386. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/__init__.py +14 -0
  387. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/__init__.py +18 -0
  388. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/field_proxy.py +109 -0
  389. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/record_copier_proxy.py +49 -0
  390. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/__init__.py +23 -0
  391. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/base_record_container.py +47 -0
  392. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/parsed_record_container.py +67 -0
  393. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/raw_record_container.py +111 -0
  394. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/tool_config_loader.py +132 -0
  395. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/__init__.py +35 -0
  396. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/utilities.py +54 -0
  397. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/workflow_config.py +31 -0
  398. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/__init__.py +32 -0
  399. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/environment.py +131 -0
  400. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_adapter.py +286 -0
  401. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider.py +185 -0
  402. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_dcm.py +53 -0
  403. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_anchor.py +70 -0
  404. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_connection.py +112 -0
  405. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_output_anchor.py +114 -0
  406. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_record_packet.py +21 -0
  407. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/iox.py +56 -0
  408. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/tool_input.py +104 -0
  409. build/lib/build/lib/another_ayx_python_sdk/test_harness/__init__.py +14 -0
  410. build/lib/build/lib/another_ayx_python_sdk/test_harness/__main__.py +120 -0
  411. build/lib/build/lib/another_ayx_python_sdk/test_harness/plugin_runner.py +416 -0
  412. build/lib/build/lib/another_ayx_python_sdk/test_harness/process_lifecycle_manager.py +80 -0
  413. build/lib/build/lib/another_ayx_python_sdk/test_harness/sdk_engine_service.py +106 -0
  414. build/lib/build/lib/another_ayx_python_sdk/version.py +8 -0
  415. another_ayx_python_sdk-2.4.2.dist-info/RECORD +0 -403
  416. {another_ayx_python_sdk-2.4.2.dist-info → another_ayx_python_sdk-2.4.22.dist-info}/WHEEL +0 -0
  417. {another_ayx_python_sdk-2.4.2.dist-info → another_ayx_python_sdk-2.4.22.dist-info}/entry_points.txt +0 -0
  418. {another_ayx_python_sdk-2.4.2.dist-info → another_ayx_python_sdk-2.4.22.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,133 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Record packet building utilities for converting between core and protobuf."""
15
+ from typing import List, Tuple
16
+
17
+ from another_ayx_python_sdk.core.constants import NULL_VALUE_PLACEHOLDER
18
+ from another_ayx_python_sdk.core.metadata import Metadata
19
+ from another_ayx_python_sdk.core.record_packet_base import RecordPacketBase
20
+ from another_ayx_python_sdk.providers.amp_provider.amp_record_packet import AMPRecordPacket
21
+ from another_ayx_python_sdk.providers.amp_provider.builders.record_builder import RecordBuilder
22
+ from another_ayx_python_sdk.providers.amp_provider.resources.generated.record_packet_pb2 import (
23
+ RecordPacket as ProtobufRecordPacket,
24
+ )
25
+
26
+
27
+ class RecordPacketBuilder:
28
+ """Utilities for converting record packets between protobuf and core objects."""
29
+
30
+ record_builder = RecordBuilder()
31
+
32
+ @classmethod
33
+ def from_protobuf(
34
+ cls, protobuf_record_packet: ProtobufRecordPacket, metadata: Metadata
35
+ ) -> Tuple[RecordPacketBase, int, float]:
36
+ """
37
+ Convert a protobuf to a record packet.
38
+
39
+ Parameters
40
+ ----------
41
+ protobuf_record_packet
42
+ Protobuf representation of a record packet.
43
+ metadata
44
+ Metadata associated with the record packet.
45
+
46
+ Returns
47
+ -------
48
+ Tuple[RecordPacketBase, int, float]
49
+ AMPRecordPacket representation of the protobuf record packet, sequence, and progress
50
+ """
51
+ import pandas as pd
52
+
53
+ parsed_records = [
54
+ cls.record_builder.from_protobuf(protobuf_record)
55
+ for protobuf_record in protobuf_record_packet.records
56
+ ]
57
+
58
+ return (
59
+ AMPRecordPacket(
60
+ metadata=metadata,
61
+ df=pd.DataFrame(
62
+ parsed_records, columns=[field.name for field in metadata]
63
+ ),
64
+ ),
65
+ protobuf_record_packet.sequence,
66
+ protobuf_record_packet.progress,
67
+ )
68
+
69
+ @classmethod
70
+ def to_protobuf(
71
+ cls, amp_record_packet: RecordPacketBase, sequence: int, progress: float
72
+ ) -> List["ProtobufRecordPacket"]:
73
+ """
74
+ Convert a record packet to a protobuf.
75
+
76
+ Parameters
77
+ ----------
78
+ amp_record_packet
79
+ Protobuf representation of a record packet.
80
+ sequence
81
+ Position that the current record packet would be in,
82
+ out of all record packets. (First, second, third, etc.)
83
+ progress
84
+ Overall progress (ranging from 0.0 to 1.0)
85
+
86
+ Returns
87
+ -------
88
+ List[ProtobufRecordPacket]
89
+ A list of ProtobufRecordPackets. If the passed in AMPRecordPacket would surpass 64MB,
90
+ then there will be more than one element in list
91
+ """
92
+ df = amp_record_packet.to_dataframe()
93
+ df.fillna(NULL_VALUE_PLACEHOLDER, inplace=True)
94
+
95
+ metadata = amp_record_packet.metadata
96
+
97
+ protobuf_records = [
98
+ cls.record_builder.to_protobuf(record, metadata)
99
+ for record in df.itertuples(index=False)
100
+ ]
101
+
102
+ size_limit = 64 * (2**20) # 64 MB
103
+ curr_size = 0
104
+
105
+ pb_record_packets = []
106
+ current_records = []
107
+
108
+ for record in protobuf_records:
109
+ record_size = len(record.data)
110
+ if curr_size + record_size > size_limit:
111
+ pb_record_packets.append(
112
+ ProtobufRecordPacket(
113
+ sequence=sequence,
114
+ progress=progress,
115
+ records=current_records,
116
+ )
117
+ )
118
+ sequence += 1
119
+ current_records = []
120
+ curr_size = 0
121
+
122
+ current_records.append(record)
123
+ curr_size += record_size
124
+
125
+ if current_records:
126
+ pb_record_packets.append(
127
+ ProtobufRecordPacket(
128
+ sequence=sequence,
129
+ progress=progress,
130
+ records=current_records,
131
+ )
132
+ )
133
+ return pb_record_packets
@@ -0,0 +1,59 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Tool configuration builder file."""
15
+ from typing import Any, Dict
16
+
17
+ import xmltodict
18
+
19
+
20
+ class ToolConfigBuilder:
21
+ """Builder class for converting the tool configuration XML to and from a dict."""
22
+
23
+ @staticmethod
24
+ def to_xml(config_dict: Dict[str, Any]) -> str:
25
+ """
26
+ Convert a tool configuration dictionary to the expected XML formatted string.
27
+
28
+ Parameters
29
+ ----------
30
+ config_dict
31
+ The dictionary representation of the tool configuration XML
32
+
33
+ Returns
34
+ -------
35
+ str
36
+ Tool configuration unparsed into an XML string
37
+ """
38
+ return xmltodict.unparse(
39
+ {"Configuration": config_dict}, short_empty_elements=True
40
+ )
41
+
42
+ @staticmethod
43
+ def from_xml(xml_string: str) -> Dict[str, Any]:
44
+ """
45
+ Convert a tool configuration XML to the expected dictionary.
46
+
47
+ Parameters
48
+ ----------
49
+ xml_string
50
+ The tool configuration XML string to be converted into a Python dict
51
+
52
+ Returns
53
+ -------
54
+ dict
55
+ The dictionary representation of the passed in XML
56
+ """
57
+ return dict(
58
+ xmltodict.parse(xml_string, strip_whitespace=False)["Configuration"] or {}
59
+ )
@@ -0,0 +1,197 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # type: ignore
15
+ """READ cert/private key from windows STORE."""
16
+
17
+
18
+ from ctypes import (
19
+ POINTER,
20
+ Structure,
21
+ WinDLL,
22
+ c_char_p,
23
+ c_ulong,
24
+ c_void_p,
25
+ cast,
26
+ create_string_buffer,
27
+ pointer,
28
+ string_at,
29
+ )
30
+ from ctypes.wintypes import BYTE, DWORD, LPCWSTR
31
+ from typing import Optional, Tuple
32
+
33
+ import wincertstore as wcs
34
+
35
+ if wcs.USE_LAST_ERROR:
36
+ Ncrypt = WinDLL("Ncrypt.dll", use_last_error=True)
37
+ else:
38
+ Ncrypt = WinDLL("Ncrypt.dll")
39
+
40
+ NCRYPT_KEY_HANDLE = c_void_p
41
+
42
+ NCRYPT_PROV_HANDLE = c_void_p
43
+
44
+ NCryptOpenStorageProvider = Ncrypt.NCryptOpenStorageProvider
45
+ NCryptOpenStorageProvider.argtypes = [POINTER(NCRYPT_PROV_HANDLE), LPCWSTR, DWORD]
46
+ NCryptOpenStorageProvider.restype = DWORD
47
+
48
+ MS_KEY_STORAGE_PROVIDER = "Microsoft Software Key Storage Provider"
49
+
50
+ NCryptOpenKey = Ncrypt.NCryptOpenKey
51
+ NCryptOpenKey.argtypes = [
52
+ NCRYPT_PROV_HANDLE,
53
+ POINTER(NCRYPT_KEY_HANDLE),
54
+ LPCWSTR,
55
+ DWORD,
56
+ DWORD,
57
+ ]
58
+ NCryptOpenKey.restype = DWORD
59
+
60
+
61
+ BCRYPT_RSAFULLPRIVATE_BLOB = "RSAFULLPRIVATEBLOB"
62
+ CNG_RSA_PRIVATE_KEY_BLOB = 83
63
+ SZOID_RSA_RSA = "1.2.840.113549.1.1.1"
64
+ X509_ASN_ENCODING = 1
65
+ CRYPT_ENCODE_ALLOC_FLAG = 0x8000
66
+ PKCS_PRIVATE_KEY_INFO = 44
67
+
68
+ NCryptExportKey = Ncrypt.NCryptExportKey
69
+ NCryptExportKey.argtypes = [
70
+ NCRYPT_KEY_HANDLE,
71
+ NCRYPT_KEY_HANDLE,
72
+ LPCWSTR,
73
+ c_void_p,
74
+ POINTER(BYTE),
75
+ DWORD,
76
+ POINTER(DWORD),
77
+ DWORD,
78
+ ]
79
+ NCryptExportKey.restype = DWORD
80
+
81
+
82
+ class CryptPrivateKeyInfo(Structure):
83
+ """Docstring."""
84
+
85
+ __slots__ = ()
86
+ _fields_ = [
87
+ ("Version", DWORD),
88
+ # CRYPT_ALGORITHM_IDENTIFIER/Algorithm
89
+ ("pszObjId", c_char_p),
90
+ # CRYPT_ALGORITHM_IDENTIFIER.CRYPT_OBJID_BLOB
91
+ ("algoCbData", DWORD),
92
+ ("algoPbData", POINTER(BYTE)),
93
+ # CRYPT_DER_BLOB/PrivateKey
94
+ ("pkeyCbData", DWORD),
95
+ ("pkeyPbData", POINTER(BYTE)),
96
+ ("pAttributes", c_void_p),
97
+ ]
98
+
99
+
100
+ CryptEncodeObjectEx = wcs.crypt32.CryptEncodeObjectEx
101
+ CryptEncodeObjectEx.argtypes = [
102
+ DWORD,
103
+ c_void_p,
104
+ c_void_p,
105
+ DWORD,
106
+ c_void_p,
107
+ POINTER(c_void_p),
108
+ POINTER(DWORD),
109
+ ]
110
+ CryptEncodeObjectEx.restype = DWORD
111
+
112
+
113
+ class PrivateKeyPem(wcs.ContextStruct):
114
+ """Docstring."""
115
+
116
+ cert_type = "PRIVATE KEY"
117
+ # WARNING: please DO NOT CHANGE THIS VARIABLE NAME: it is used in wincertstore
118
+ dwCertEncodingType = 0 # noqa
119
+ # End warning
120
+
121
+ def __init__(self, pb_key: c_void_p, cb_key: c_ulong) -> None:
122
+ self.pb_key = pb_key
123
+ self.cb_key = cb_key
124
+
125
+ def get_encoded(self) -> bytes:
126
+ """Docstring."""
127
+ return string_at(self.pb_key, self.cb_key.value)
128
+
129
+
130
+ def read_windows_store_chain(cert_name: str) -> Optional[Tuple[bytes, bytes]]:
131
+ """Docstring."""
132
+ with wcs.CertSystemStore("MY") as store:
133
+ for cert in store.itercerts(usage=wcs.SERVER_AUTH):
134
+ if (
135
+ cert.get_name() == "localhost"
136
+ and cert.get_name(wcs.CERT_NAME_FRIENDLY_DISPLAY_TYPE) == cert_name
137
+ ):
138
+ certpem = cert.get_pem()
139
+ provider_handle = NCRYPT_PROV_HANDLE()
140
+ NCryptOpenStorageProvider(provider_handle, MS_KEY_STORAGE_PROVIDER, 0)
141
+ key_handle = NCRYPT_KEY_HANDLE()
142
+ NCryptOpenKey(provider_handle, key_handle, cert_name, 0, 0)
143
+ cb_key = DWORD()
144
+ NCryptExportKey(
145
+ key_handle,
146
+ None,
147
+ BCRYPT_RSAFULLPRIVATE_BLOB,
148
+ None,
149
+ None,
150
+ 0,
151
+ cb_key,
152
+ 0,
153
+ )
154
+ pb_key = create_string_buffer(cb_key.value)
155
+ NCryptExportKey(
156
+ key_handle,
157
+ None,
158
+ BCRYPT_RSAFULLPRIVATE_BLOB,
159
+ None,
160
+ cast(pb_key, POINTER(BYTE)),
161
+ cb_key.value,
162
+ cb_key,
163
+ 0,
164
+ )
165
+
166
+ private_key_info = CryptPrivateKeyInfo()
167
+ private_key_info.Version = 0
168
+ private_key_info.pszObjId = SZOID_RSA_RSA.encode("utf-8")
169
+
170
+ enc1_cb_key = DWORD()
171
+ enc1_pb_key = c_void_p()
172
+ CryptEncodeObjectEx(
173
+ X509_ASN_ENCODING,
174
+ cast(CNG_RSA_PRIVATE_KEY_BLOB, c_void_p),
175
+ pb_key,
176
+ CRYPT_ENCODE_ALLOC_FLAG,
177
+ None,
178
+ enc1_pb_key,
179
+ enc1_cb_key,
180
+ )
181
+ private_key_info.pkeyCbData = enc1_cb_key
182
+ private_key_info.pkeyPbData = cast(enc1_pb_key, POINTER(BYTE))
183
+ enc_cb_key = DWORD()
184
+ enc_pb_key = c_void_p()
185
+ CryptEncodeObjectEx(
186
+ X509_ASN_ENCODING,
187
+ cast(PKCS_PRIVATE_KEY_INFO, c_void_p),
188
+ pointer(private_key_info),
189
+ CRYPT_ENCODE_ALLOC_FLAG,
190
+ None,
191
+ enc_pb_key,
192
+ enc_cb_key,
193
+ )
194
+ pkp = PrivateKeyPem(enc_pb_key, enc_cb_key)
195
+ keypem = pkp.get_pem()
196
+ return bytes(keypem, "utf-8"), bytes(certpem, "utf-8")
197
+ return None
@@ -0,0 +1,18 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Implementations of TransportBase."""
15
+ from .amp_transport import AmpStreamTransport
16
+ from .transport_base import TransportBase
17
+
18
+ __all__ = ["TransportBase", "AmpStreamTransport"]
@@ -0,0 +1,127 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """Arrows stream formatted transport interface."""
15
+ import logging
16
+ from collections import defaultdict
17
+ from typing import Generator, TYPE_CHECKING, Tuple
18
+
19
+ from another_ayx_python_sdk.providers.amp_provider.data_transport.transport_base import (
20
+ TransportBase,
21
+ )
22
+ from another_ayx_python_sdk.providers.amp_provider.grpc_helpers.record_transfer_msgs import (
23
+ new_record_transfer_out_msg,
24
+ )
25
+
26
+ import pyarrow as pa
27
+
28
+ if TYPE_CHECKING:
29
+ from another_ayx_python_sdk.providers.amp_provider.resources.generated.sdk_tool_service_v2_pb2 import ( # noqa: F401
30
+ RecordTransferIn,
31
+ RecordTransferOut,
32
+ )
33
+
34
+ # Size of stream chunks, in n bytes.
35
+ # Desired 1MB default is causing some failures. Fairly sure this is on the slicing
36
+ # logic, and just needs better bounds to check so arrow doesn't freak out.
37
+ # Boxing that for another ticket after bigger stuff is done, though.
38
+ DEFAULT_CHUNK_SIZE = 1 * (10**6)
39
+
40
+
41
+ class AmpStreamTransport(TransportBase):
42
+ """Transport interface to deliver data in arrows stream format."""
43
+
44
+ logger = logging.getLogger()
45
+
46
+ def __init__(self) -> None:
47
+ self.stream_buffer: dict = defaultdict(dict)
48
+ self.chunk_size = DEFAULT_CHUNK_SIZE
49
+ self.incomplete_streams = 0
50
+
51
+ # TODO: Rename this to something better for Transport interface.
52
+ def send_record(
53
+ self,
54
+ record_batch: "pa.RecordBatch",
55
+ anchor_name: str,
56
+ connection_name: str = "",
57
+ ) -> Generator["RecordTransferOut", None, None]:
58
+ """Convert a given record batch into a sequence of RecordTransferOut msgs."""
59
+ stream = self.get_rec_stream(record_batch)
60
+ for chunk, end_of_chunk in self.iter_stream(stream):
61
+ record_out = {
62
+ "anchor_name": anchor_name,
63
+ "data": chunk,
64
+ "connection_name": connection_name,
65
+ "end_of_chunk": end_of_chunk,
66
+ }
67
+ yield new_record_transfer_out_msg(record_out, "outgoing_records")
68
+
69
+ def get_rec_stream(self, record_batch: "pa.RecordBatch") -> "pa.Buffer":
70
+ """Get an arrows formatted stream buffer."""
71
+ try:
72
+ sink = pa.BufferOutputStream()
73
+ writer = pa.ipc.new_stream(sink, record_batch.schema)
74
+ writer.write(record_batch)
75
+ writer.close()
76
+ except Exception as e:
77
+ self.logger.error(repr(e))
78
+ raise e
79
+ return sink.getvalue()
80
+
81
+ def iter_stream(
82
+ self, stream: "pa.Buffer"
83
+ ) -> Generator[Tuple[bytes, bool], None, None]:
84
+ """Break up a given stream by set chunk size."""
85
+ buf = pa.BufferReader(stream)
86
+ end_of_chunk = False
87
+ while not end_of_chunk:
88
+ end_of_chunk = buf.tell() + self.chunk_size >= buf.size()
89
+ chunk = buf.read() if end_of_chunk else buf.read(self.chunk_size)
90
+ yield (chunk, end_of_chunk)
91
+
92
+ def _unpack_and_append_rec_in_payload(self, record_in: "RecordTransferIn") -> None:
93
+ anchor_name = record_in.incoming_records.anchor_name
94
+ connection_name = record_in.incoming_records.connection_name
95
+ data = record_in.incoming_records.data
96
+ if not self.stream_buffer[anchor_name].get(connection_name):
97
+ self.incomplete_streams += 1
98
+ self.stream_buffer[anchor_name][connection_name] = pa.BufferOutputStream()
99
+ self.stream_buffer[anchor_name][connection_name].write(data)
100
+
101
+ def _handle_completed_stream(self, record_in: "RecordTransferIn") -> None:
102
+ self.logger.debug("Stream terminater received, completing batch.")
103
+ anchor_name = record_in.incoming_records.anchor_name
104
+ connection_name = record_in.incoming_records.connection_name
105
+ data = self.stream_buffer[anchor_name][connection_name]
106
+ try:
107
+ reader = pa.ipc.open_stream(data.getvalue())
108
+ self.stream_buffer[anchor_name][connection_name] = pa.BufferOutputStream()
109
+ self.incomplete_streams -= 1
110
+ return reader.read_all()
111
+ except pa.ArrowException as ae:
112
+ self.logger.error(
113
+ "Exception caught reading completed batch chunk: %s", repr(ae)
114
+ )
115
+ raise ae
116
+
117
+ def receive_record(self, record_in_msg: "RecordTransferIn") -> "pa.Table":
118
+ """
119
+ Receive RecordTransferIn messages.
120
+
121
+ Returns None if the data received is only a chunk of a full record.
122
+ Returns pa.Table if `end_of_chunk` is True.
123
+ """
124
+ self._unpack_and_append_rec_in_payload(record_in_msg)
125
+ if record_in_msg.incoming_records.end_of_chunk:
126
+ return self._handle_completed_stream(record_in_msg)
127
+ return None
@@ -0,0 +1,35 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """
15
+ Transport implementation.
16
+
17
+ Transports provide the functionality for data management and IO.
18
+ An implementation should provide an independant way to receive, parse,
19
+ serialize, and send data to another service.
20
+ """
21
+ from abc import ABC, abstractmethod
22
+
23
+
24
+ class TransportBase(ABC):
25
+ """Transport Manager for the tool."""
26
+
27
+ @abstractmethod
28
+ def send_record(self) -> None:
29
+ """Push data to destination."""
30
+ raise NotImplementedError()
31
+
32
+ @abstractmethod
33
+ def receive_record(self) -> None:
34
+ """Pull data from source."""
35
+ raise NotImplementedError()
@@ -0,0 +1,14 @@
1
+ # Copyright (C) 2022 Alteryx, Inc. All rights reserved.
2
+ #
3
+ # Licensed under the ALTERYX SDK AND API LICENSE AGREEMENT;
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.alteryx.com/alteryx-sdk-and-api-license-agreement
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ """gRPC Helper Functions."""