another-ayx-python-sdk 2.4.22__py3-none-any.whl → 2.4.24__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 (213) hide show
  1. another_ayx_python_sdk/version.py +3 -3
  2. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/METADATA +2 -2
  3. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/RECORD +8 -213
  4. build/lib/another_ayx_python_sdk/version.py +3 -3
  5. build/lib/build/lib/another_ayx_python_sdk/__init__.py +0 -14
  6. build/lib/build/lib/another_ayx_python_sdk/__main__.py +0 -470
  7. build/lib/build/lib/another_ayx_python_sdk/assets/workspace_files/__init__.py +0 -14
  8. build/lib/build/lib/another_ayx_python_sdk/assets/workspace_files/setup.py +0 -38
  9. build/lib/build/lib/another_ayx_python_sdk/cli/__init__.py +0 -14
  10. build/lib/build/lib/another_ayx_python_sdk/cli/utilities.py +0 -103
  11. build/lib/build/lib/another_ayx_python_sdk/cli/workspace.py +0 -266
  12. build/lib/build/lib/another_ayx_python_sdk/cli/yxi_builder.py +0 -125
  13. build/lib/build/lib/another_ayx_python_sdk/cli/yxi_installer.py +0 -45
  14. build/lib/build/lib/another_ayx_python_sdk/core/__init__.py +0 -51
  15. build/lib/build/lib/another_ayx_python_sdk/core/constants.py +0 -25
  16. build/lib/build/lib/another_ayx_python_sdk/core/dcm_base.py +0 -115
  17. build/lib/build/lib/another_ayx_python_sdk/core/doc_utilities.py +0 -40
  18. build/lib/build/lib/another_ayx_python_sdk/core/environment_base.py +0 -213
  19. build/lib/build/lib/another_ayx_python_sdk/core/exceptions.py +0 -59
  20. build/lib/build/lib/another_ayx_python_sdk/core/field.py +0 -183
  21. build/lib/build/lib/another_ayx_python_sdk/core/input_anchor_base.py +0 -86
  22. build/lib/build/lib/another_ayx_python_sdk/core/input_connection_base.py +0 -206
  23. build/lib/build/lib/another_ayx_python_sdk/core/io_base.py +0 -139
  24. build/lib/build/lib/another_ayx_python_sdk/core/metadata.py +0 -173
  25. build/lib/build/lib/another_ayx_python_sdk/core/observable_mixin.py +0 -90
  26. build/lib/build/lib/another_ayx_python_sdk/core/output_anchor_base.py +0 -151
  27. build/lib/build/lib/another_ayx_python_sdk/core/plugin.py +0 -108
  28. build/lib/build/lib/another_ayx_python_sdk/core/plugin_v2.py +0 -97
  29. build/lib/build/lib/another_ayx_python_sdk/core/provider_base.py +0 -125
  30. build/lib/build/lib/another_ayx_python_sdk/core/proxy_requests.py +0 -51
  31. build/lib/build/lib/another_ayx_python_sdk/core/record_packet.py +0 -88
  32. build/lib/build/lib/another_ayx_python_sdk/core/record_packet_base.py +0 -123
  33. build/lib/build/lib/another_ayx_python_sdk/core/register_plugin.py +0 -127
  34. build/lib/build/lib/another_ayx_python_sdk/core/testing.py +0 -191
  35. build/lib/build/lib/another_ayx_python_sdk/core/utils.py +0 -146
  36. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkInput/main.py +0 -89
  37. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultiConnectionsMultiOutputAnchor/main.py +0 -102
  38. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleInputAnchors/main.py +0 -84
  39. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkMultipleOutputAnchors/main.py +0 -96
  40. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkOptionalInputAnchor/main.py +0 -94
  41. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkOutput/main.py +0 -78
  42. build/lib/build/lib/another_ayx_python_sdk/examples/AyxSdkPassThrough/main.py +0 -82
  43. build/lib/build/lib/another_ayx_python_sdk/providers/__init__.py +0 -14
  44. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/__init__.py +0 -41
  45. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/__main__.py +0 -85
  46. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_dcm.py +0 -58
  47. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_driver.py +0 -358
  48. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment.py +0 -73
  49. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_environment_v2.py +0 -278
  50. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_anchor.py +0 -73
  51. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_input_connection.py +0 -132
  52. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io.py +0 -64
  53. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_io_components.py +0 -407
  54. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_output_anchor.py +0 -107
  55. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider.py +0 -68
  56. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_provider_v2.py +0 -128
  57. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/amp_record_packet.py +0 -21
  58. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/__init__.py +0 -32
  59. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_anchor_builder.py +0 -123
  60. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/input_connection_builder.py +0 -95
  61. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/metadata_builder.py +0 -118
  62. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/output_anchor_builder.py +0 -110
  63. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/packers.py +0 -458
  64. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_builder.py +0 -204
  65. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/record_packet_builder.py +0 -133
  66. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/builders/tool_config_builder.py +0 -59
  67. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/cng_certs.py +0 -197
  68. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/__init__.py +0 -18
  69. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/amp_transport.py +0 -127
  70. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/data_transport/transport_base.py +0 -35
  71. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/__init__.py +0 -14
  72. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/control_msgs.py +0 -189
  73. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/dcme_msgs.py +0 -119
  74. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_helpers/record_transfer_msgs.py +0 -32
  75. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/grpc_util.py +0 -161
  76. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/logger_config.py +0 -63
  77. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/plugin_class_loader.py +0 -77
  78. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/__init__.py +0 -67
  79. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/dcm_repository.py +0 -252
  80. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/environment_repository.py +0 -212
  81. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/grpc_repository.py +0 -119
  82. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_anchor_repository.py +0 -110
  83. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_connection_repository.py +0 -276
  84. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_metadata_repository.py +0 -144
  85. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/input_record_packet_repository.py +0 -252
  86. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/io_repository.py +0 -188
  87. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_anchor_repository.py +0 -117
  88. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_metadata_repository.py +0 -129
  89. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/output_record_packet_repository.py +0 -170
  90. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/plugin_class_repository.py +0 -55
  91. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/singleton.py +0 -32
  92. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/test_harness_state_repository.py +0 -172
  93. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/repositories/tool_config_repository.py +0 -89
  94. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/__init__.py +0 -14
  95. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/__init__.py +0 -0
  96. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2.py +0 -25
  97. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/close_outgoing_anchor_pb2_grpc.py +0 -4
  98. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2.py +0 -38
  99. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/dcm_e_pb2_grpc.py +0 -4
  100. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2.py +0 -26
  101. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_anchor_pb2_grpc.py +0 -4
  102. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2.py +0 -25
  103. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_complete_pb2_grpc.py +0 -4
  104. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2.py +0 -26
  105. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_connection_pb2_grpc.py +0 -4
  106. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2.py +0 -26
  107. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_data_push_pb2_grpc.py +0 -4
  108. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2.py +0 -26
  109. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/incoming_record_packet_push_pb2_grpc.py +0 -4
  110. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2.py +0 -31
  111. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/metadata_pb2_grpc.py +0 -4
  112. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2.py +0 -28
  113. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_anchor_pb2_grpc.py +0 -4
  114. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2.py +0 -26
  115. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_data_push_pb2_grpc.py +0 -4
  116. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2.py +0 -26
  117. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_metadata_push_pb2_grpc.py +0 -4
  118. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2.py +0 -26
  119. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/outgoing_record_packet_push_pb2_grpc.py +0 -4
  120. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2.py +0 -29
  121. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/output_message_data_pb2_grpc.py +0 -4
  122. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2.py +0 -25
  123. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/password_data_pb2_grpc.py +0 -4
  124. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2.py +0 -33
  125. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/plugin_initialization_data_pb2_grpc.py +0 -4
  126. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2.py +0 -25
  127. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_batch_pb2_grpc.py +0 -4
  128. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2.py +0 -29
  129. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/record_packet_pb2_grpc.py +0 -4
  130. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2.py +0 -34
  131. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_engine_service_pb2_grpc.py +0 -305
  132. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2.py +0 -30
  133. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_pb2_grpc.py +0 -235
  134. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2.py +0 -25
  135. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_startup_info_pb2_grpc.py +0 -4
  136. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2.py +0 -54
  137. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/sdk_tool_service_v2_pb2_grpc.py +0 -99
  138. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2.py +0 -27
  139. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/translate_message_data_pb2_grpc.py +0 -4
  140. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2.py +0 -31
  141. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/transport_pb2_grpc.py +0 -4
  142. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2.py +0 -25
  143. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/resources/generated/update_progress_pb2_grpc.py +0 -4
  144. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_runner.py +0 -115
  145. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service.py +0 -207
  146. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/sdk_tool_service_v2.py +0 -306
  147. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/__init__.py +0 -14
  148. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/constants.py +0 -22
  149. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/conversions.py +0 -55
  150. build/lib/build/lib/another_ayx_python_sdk/providers/amp_provider/utilities/utilities.py +0 -63
  151. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/__init__.py +0 -36
  152. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/anchor_builder.py +0 -95
  153. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/cache_e1_sdk_import.py +0 -31
  154. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/connection_callback_strategy.py +0 -155
  155. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/connection_interface.py +0 -125
  156. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_dcm.py +0 -53
  157. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_environment.py +0 -127
  158. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor.py +0 -51
  159. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_anchor_proxy.py +0 -33
  160. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_input_connection.py +0 -87
  161. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_io.py +0 -71
  162. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor.py +0 -157
  163. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_output_anchor_proxy.py +0 -97
  164. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_driver.py +0 -63
  165. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_plugin_proxy.py +0 -363
  166. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_provider.py +0 -71
  167. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/e1_record_packet.py +0 -21
  168. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/events.py +0 -36
  169. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/__init__.py +0 -37
  170. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/alteryx_engine.py +0 -105
  171. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/constants.py +0 -50
  172. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/field.py +0 -122
  173. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor.py +0 -55
  174. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/output_anchor_manager.py +0 -31
  175. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_copier.py +0 -65
  176. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_creator.py +0 -41
  177. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_info.py +0 -134
  178. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/record_ref.py +0 -42
  179. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool.py +0 -29
  180. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/AlteryxPythonSDK/tool_execution_info.py +0 -43
  181. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/mock_e1_sdk/__init__.py +0 -14
  182. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/__init__.py +0 -18
  183. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/field_proxy.py +0 -109
  184. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/proxies/record_copier_proxy.py +0 -49
  185. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/__init__.py +0 -23
  186. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/base_record_container.py +0 -47
  187. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/parsed_record_container.py +0 -67
  188. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/records/raw_record_container.py +0 -111
  189. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/tool_config_loader.py +0 -132
  190. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/__init__.py +0 -35
  191. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/utilities/utilities.py +0 -54
  192. build/lib/build/lib/another_ayx_python_sdk/providers/e1_provider/workflow_config.py +0 -31
  193. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/__init__.py +0 -32
  194. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/environment.py +0 -131
  195. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_adapter.py +0 -286
  196. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider.py +0 -185
  197. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_dcm.py +0 -53
  198. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_anchor.py +0 -70
  199. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_input_connection.py +0 -112
  200. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_provider_output_anchor.py +0 -114
  201. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/file_record_packet.py +0 -21
  202. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/iox.py +0 -56
  203. build/lib/build/lib/another_ayx_python_sdk/providers/file_provider/tool_input.py +0 -104
  204. build/lib/build/lib/another_ayx_python_sdk/test_harness/__init__.py +0 -14
  205. build/lib/build/lib/another_ayx_python_sdk/test_harness/__main__.py +0 -120
  206. build/lib/build/lib/another_ayx_python_sdk/test_harness/plugin_runner.py +0 -416
  207. build/lib/build/lib/another_ayx_python_sdk/test_harness/process_lifecycle_manager.py +0 -80
  208. build/lib/build/lib/another_ayx_python_sdk/test_harness/sdk_engine_service.py +0 -106
  209. build/lib/build/lib/another_ayx_python_sdk/version.py +0 -8
  210. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/WHEEL +0 -0
  211. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/entry_points.txt +0 -0
  212. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/licenses/LICENSE +0 -0
  213. {another_ayx_python_sdk-2.4.22.dist-info → another_ayx_python_sdk-2.4.24.dist-info}/top_level.txt +0 -0
@@ -1,306 +0,0 @@
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
- """Test harness implementation of the SDK Engine service."""
15
- import asyncio
16
- import logging
17
-
18
- from another_ayx_python_sdk.core.constants import Anchor
19
- from another_ayx_python_sdk.providers.amp_provider.amp_driver import AMPDriver
20
- from another_ayx_python_sdk.providers.amp_provider.resources.generated.sdk_tool_service_v2_pb2 import (
21
- ControlOut,
22
- RecordTransferOut,
23
- )
24
- from another_ayx_python_sdk.providers.amp_provider.resources.generated.sdk_tool_service_v2_pb2_grpc import (
25
- SdkToolV2Servicer,
26
- )
27
-
28
-
29
- class SdkToolServiceV2(SdkToolV2Servicer):
30
- """Implementation of the SDK Engine V2 service."""
31
-
32
- logger = logging.getLogger()
33
- driver = AMPDriver()
34
- init_data: asyncio.Future = asyncio.Future()
35
- driver_guard: asyncio.Lock = asyncio.Lock()
36
- cond_teardown = asyncio.Condition(lock=driver_guard)
37
- record_teardown = asyncio.Condition(lock=driver_guard)
38
- curr_driver_fn = None
39
- ready_for_records: asyncio.Event = asyncio.Event()
40
- record_batch_received: asyncio.Event = asyncio.Event()
41
-
42
- async def Control(self, request_iterator, context): # type: ignore # noqa: N802
43
- """
44
- Handle Control messages.
45
-
46
- Initialize plugin on initialize ControlIn, then send any ControlOut messages
47
- to the client as needed, while monitoring for client responses.
48
- """
49
- try:
50
- # Start read/writes and a worker to handle any callbacks for the driver
51
- tasks = [
52
- asyncio.create_task(
53
- self._ctrl_read(request_iterator), name="_ctrl_read"
54
- ),
55
- asyncio.create_task(self._ctrl_write(context), name="_ctrl_write"),
56
- asyncio.create_task(
57
- self._driver_callback_worker(), name="_driver_callback_worker"
58
- ),
59
- asyncio.create_task(
60
- self._user_callback_worker(), name="_user_callback_worker"
61
- ),
62
- ]
63
-
64
- # Clean up tasks
65
- async with self.cond_teardown:
66
- self.logger.debug("Control waiting on teardown notification")
67
- await self.cond_teardown.wait()
68
- await asyncio.sleep(0)
69
- complete_msg = ControlOut()
70
- complete_msg.confirm_complete.SetInParent()
71
- self.driver.ctrl_io.ctrl_out.put_nowait(complete_msg)
72
- await self.driver.ctrl_io.ctrl_out.join()
73
- self.logger.debug("Control starting teardown")
74
- await self.driver.ctrl_io.flush()
75
- for t in tasks:
76
- t.cancel()
77
- self.logger.debug("Control stream waiting for close")
78
- except asyncio.CancelledError as e:
79
- self.logger.error("ERROR: Client side disconnected from server.")
80
- self.logger.error(repr(e))
81
-
82
- async def _ctrl_read(self, request_iterator) -> None: # type: ignore
83
- awaits_response = {"translated_message", "decrypted_password", "dcm_e_response"}
84
- async for request in request_iterator:
85
- payload = request.WhichOneof("payload")
86
- if payload == "plugin_initialization_data": # TODO update this to const
87
- try:
88
- asyncio.create_task(
89
- self.driver._initialize_plugin(
90
- request, self.ready_for_records, self.record_batch_received
91
- )
92
- )
93
- except Exception as e:
94
- self.logger.error("%s", repr(e))
95
- elif payload == "incoming_connection_complete":
96
- conn_info = request.incoming_connection_complete
97
- closed_anchor = Anchor(conn_info.anchor_name, conn_info.connection_name)
98
- self.logger.debug("Pushing incoming connection complete")
99
- if (
100
- not self.record_batch_received.is_set()
101
- ): # OOP sends incoming_connection_complete without sending any records
102
- self.logger.debug("empty row bug detected")
103
- self.record_batch_received.set()
104
- self.driver.ctrl_io.push_driver_callback(
105
- self.driver.incoming_connection_complete_callback, closed_anchor
106
- )
107
- elif payload in awaits_response:
108
- try:
109
- if self.driver.ctrl_io.awaiting_response.get(request.msg_id):
110
- self.driver.ctrl_io.push_callback_action(request)
111
- else:
112
- self.driver.ctrl_io.blocking_awaiting_response[
113
- request.msg_id
114
- ] = getattr(request, payload)
115
- except Exception as e:
116
- self.logger.debug(repr(e))
117
- elif payload == "notify_complete":
118
- # Notify the driver to start completion
119
- # The server assumes that the client is done sending RecordIn messages.
120
- # Client should have sent any incoming records or otherwise at this point.
121
- self.driver.ctrl_io.push_driver_callback(
122
- self.driver.on_complete_callback
123
- )
124
-
125
- async def _ctrl_write(self, context) -> None: # type: ignore
126
- while True:
127
- msg = await self.driver.ctrl_io.ctrl_out.get()
128
- try:
129
- await context.write(msg)
130
- except Exception as e: # catch ExecuteBatchError if any
131
- self.logger.debug(repr(e))
132
- self.driver.ctrl_io.ctrl_out.task_done()
133
-
134
- async def _user_callback_worker(self) -> None:
135
- while True:
136
- action = await self.driver.ctrl_io.ctrl_user_callback_actions.get()
137
- loop = asyncio.get_event_loop()
138
- try:
139
- fn = action["callback_fn"]
140
- if action.get("response_msg"):
141
- fut = loop.run_in_executor(None, fn, action["response_msg"])
142
- else:
143
- fut = loop.run_in_executor(None, fn)
144
- await fut
145
- # Could collect these in order
146
- if fut.exception():
147
- raise fut.exception() or BaseException()
148
- except Exception as e:
149
- report_str = (
150
- f"Failed while calling {action['callback_fn'].__name__}\n {repr(e)}"
151
- )
152
- self.logger.error(report_str)
153
- self.driver.provider.io.error(report_str)
154
- finally:
155
- self.driver.ctrl_io.ctrl_user_callback_actions.task_done()
156
-
157
- async def _driver_callback_worker(self) -> None:
158
- while True:
159
- action = await self.driver.ctrl_io.ctrl_driver_actions.get()
160
-
161
- # Make sure we clear any queued user callbacks
162
- await asyncio.sleep(0)
163
- await self.driver.ctrl_io.ctrl_user_callback_actions.join()
164
-
165
- is_on_complete = action["driver_fn"] == self.driver.on_complete_callback
166
- if is_on_complete:
167
- self.logger.debug("got on_complete, checking if need to requeue")
168
- self.logger.debug(
169
- f"ready for on_complete: {self._ready_for_on_complete()}, record_batch_received.is_set(): {self.record_batch_received.is_set()}"
170
- )
171
- if (
172
- not self._ready_for_on_complete()
173
- or not self.record_batch_received.is_set()
174
- ):
175
- self.logger.debug("requeue on_complete")
176
- try:
177
- await self._requeue_action(
178
- action, self.driver.ctrl_io.ctrl_driver_actions
179
- )
180
- except Exception as e:
181
- self.logger.error(e)
182
- continue
183
- elif self.driver.provider.environment.update_only:
184
- async with self.record_teardown:
185
- self.record_teardown.notify_all()
186
- return
187
- loop = asyncio.get_running_loop()
188
- if action["args"]:
189
- fut = loop.run_in_executor(None, action["driver_fn"], *action["args"])
190
- else:
191
- # Other plugin methods have no args
192
- fut = loop.run_in_executor(None, action["driver_fn"])
193
- # Handle any generated work from calling method
194
- while fut.done() is False:
195
- await asyncio.sleep(0.1)
196
- action["event_cb_complete"].set()
197
- if fut.exception():
198
- # Driver functions still use an error handling wrapper
199
- # So we don't have to log here, just teardown
200
- async with self.record_teardown:
201
- self.record_teardown.notify_all()
202
- raise fut.exception() # type: ignore
203
- if is_on_complete:
204
- async with self.record_teardown:
205
- self.record_teardown.notify_all()
206
- return
207
-
208
- async def _requeue_action(self, action: dict, queue: asyncio.Queue) -> None:
209
- # Put action back on to passed queue.
210
- await asyncio.sleep(0)
211
- await queue.put(action)
212
- queue.task_done()
213
-
214
- def _ready_for_on_complete(self) -> bool:
215
- pre_complete_actions = self.driver.ctrl_io.ctrl_driver_actions.empty()
216
- pending_record_batches = self.driver.record_io.completed_streams.empty()
217
- awaiting_responses = len(self.driver.ctrl_io.awaiting_response) < 1
218
- return all([pre_complete_actions, pending_record_batches, awaiting_responses])
219
-
220
- async def RecordTransfer(self, request_iterator, context): # type: ignore # noqa: N802
221
- """
222
- Definition for gRPC RecordTransfer.
223
-
224
- Consumes any data sent by the client, then send any pending RecordTransferOut messages.
225
- """
226
- self.logger.debug("Record Transfer stream starting.")
227
- tasks = [
228
- asyncio.create_task(
229
- self._record_read(request_iterator), name="_record_read"
230
- ),
231
- asyncio.create_task(self._record_write(context), name="_record_write"),
232
- asyncio.create_task(
233
- self._record_driver_actions(), name="_record_driver_actions"
234
- ),
235
- ]
236
- async with self.record_teardown:
237
- self.logger.debug("Waiting on teardown notification")
238
- await self.record_teardown.wait()
239
- await asyncio.sleep(0)
240
- self.logger.debug("Received teardown notice. Cancelling tasks")
241
- try:
242
- for _, anchor in self.driver.provider.outgoing_anchors.items():
243
- if (
244
- anchor["num_connections"] > 0 or anchor.get("metadata")
245
- ) and not self.driver.provider.environment.update_only:
246
- rec_out_chunk_end = RecordTransferOut()
247
- rec_out_chunk_end.close_outgoing_anchor.name = anchor["name"]
248
- self.driver.record_io.pending_writes.put_nowait(
249
- {
250
- "write_type": "close_outgoing_anchor",
251
- "message": rec_out_chunk_end,
252
- }
253
- )
254
-
255
- await self.driver.record_io.flush()
256
- for t in tasks:
257
- t.cancel()
258
- except Exception as e:
259
- self.logger.debug(repr(e))
260
- async with self.cond_teardown:
261
- self.cond_teardown.notify_all()
262
- self.logger.debug("Exiting RecordTransfer...")
263
-
264
- async def _record_read(self, request_iterator) -> None: # type: ignore
265
- """Receive any RecordTransferIn messages from the client."""
266
- async for req in request_iterator:
267
- payload = req.WhichOneof("payload")
268
- if payload == "incoming_records":
269
- self.driver.record_io.receive_chunk(req)
270
-
271
- async def _record_write(self, context) -> None: # type: ignore
272
- """Write and send RecordTransferOut.outgoing_records from write queue."""
273
- while True:
274
- # If user has written to buffer, send records
275
- to_write = await self.driver.record_io.pending_writes.get()
276
- if to_write["write_type"] == "outgoing_records":
277
- for msg in self.driver.record_io.get_stream_msgs(to_write):
278
- await context.write(msg)
279
- else:
280
- try:
281
- anchor = self.driver.provider.outgoing_anchors[
282
- to_write["message"].close_outgoing_anchor.name
283
- ]
284
- if (
285
- anchor["num_connections"] > 0
286
- and not anchor.get("metadata", False)
287
- ) and not self.driver.provider.environment.update_only:
288
- self.logger.debug("Wrote close anchor")
289
- await context.write(to_write["message"])
290
- except Exception as e:
291
- self.logger.error("Failed during record_write: %s", repr(e))
292
- self.driver.record_io.pending_writes.task_done()
293
-
294
- async def _record_driver_actions(self) -> None:
295
- """Handle events related to receiving or sending batches."""
296
- while True:
297
- batch_item = await self.driver.record_io.completed_streams.get()
298
- self.logger.debug(f"Got a msg from completed_streams queue: {batch_item}")
299
- await self.ready_for_records.wait() # wait for plugin_init to finish before calling on_record_batch
300
- self.driver.ctrl_io.push_driver_callback(
301
- self.driver.record_batch_received,
302
- batch_item["record_batch"],
303
- batch_item["anchor"],
304
- )
305
- self.record_batch_received.set()
306
- self.driver.record_io.completed_streams.task_done()
@@ -1,14 +0,0 @@
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
- """Resources to be consumed by the amp provider."""
@@ -1,22 +0,0 @@
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
- """Workspace constant definitions."""
15
- from enum import Enum
16
-
17
-
18
- class ToolEnvType(str, Enum):
19
- """YXI installation types."""
20
-
21
- Desktop = "Desktop"
22
- Service = "Service"
@@ -1,55 +0,0 @@
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
- """Conversion methods for AMP Provider classes."""
15
- from datetime import date, datetime, timedelta
16
-
17
- from another_ayx_python_sdk.providers.amp_provider.amp_provider_v2 import AMPProviderV2
18
-
19
- import deprecation
20
-
21
- from pyarrow import Date32Scalar, int32
22
-
23
-
24
- # Alteryx Epoch is based closely on Excel's, not UNIX
25
- ALTERYX_DATE32_EPOCH = datetime(1900, 1, 1, 0, 0)
26
-
27
-
28
- @deprecation.deprecated(
29
- deprecated_in="2.1.1",
30
- details="This function is no more necessary since version 2022.2 of Designer",
31
- ) # type: ignore
32
- def arrow_scalar_date32_to_py(
33
- provider: AMPProviderV2, arrow_date: Date32Scalar
34
- ) -> date:
35
- """
36
- Convert a Arrow Date32Scalar to a Python datetime object.
37
-
38
- Parameters
39
- ----------
40
- provider
41
- AMPProviderV2 context, necessary for Designer version
42
- arrow_date
43
- An Arrow date represented as days since Epoch.
44
-
45
- Returns
46
- -------
47
- date
48
- The converted date value.
49
- """
50
- if provider.environment.designer_version < "2022.2":
51
- return (
52
- ALTERYX_DATE32_EPOCH + timedelta(arrow_date.cast(int32()).as_py() - 2)
53
- ).date()
54
- else:
55
- return arrow_date.as_py()
@@ -1,63 +0,0 @@
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
- """Utility methods for AMP Provider classes."""
15
- import logging
16
- import os
17
- import uuid
18
- from pathlib import Path
19
-
20
-
21
- from another_ayx_python_sdk.providers.amp_provider.utilities.constants import ToolEnvType
22
-
23
- logger = logging.getLogger()
24
-
25
-
26
- def tool_type() -> ToolEnvType:
27
- """Determine the Tool Environment Type based on TOOL_SERVICE_ADDRESS env var."""
28
- return (
29
- ToolEnvType.Service
30
- if "TOOL_SERVICE_ADDRESS" in os.environ
31
- else ToolEnvType.Desktop
32
- )
33
-
34
-
35
- def get_temp_file(extension: str = "tmp", temp_dir: str = "./") -> "Path":
36
- """
37
- Create a temporary file managed by Designer.
38
-
39
- Parameters
40
- ----------
41
- extension
42
- The file extension of the temp file.
43
- temp_dir
44
- Directory in which to place the temp file.
45
-
46
- Returns
47
- -------
48
- Path
49
- The path to where the temp file is.
50
- """
51
- temp_file_name = f"temp-file-{str(uuid.uuid4())}.{str(extension)}"
52
- engine_temp_dir = temp_dir
53
- temp_file_path = Path(engine_temp_dir) / (temp_file_name)
54
- try:
55
- temp_file_path.touch()
56
- except FileNotFoundError:
57
- # path does not exist
58
- logger.error("Engine.TempFilePath (%s) does not exist", engine_temp_dir)
59
- except IOError:
60
- # path exists but no write permissions
61
- logger.error("No write permissions for directory %s", engine_temp_dir)
62
-
63
- return Path(temp_file_path)
@@ -1,36 +0,0 @@
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
- """E1 SDK Provider interface."""
15
- # flake8: noqa
16
-
17
- from .cache_e1_sdk_import import cache_e1_sdk_import
18
-
19
- cache_e1_sdk_import()
20
-
21
- from .e1_environment import E1Environment
22
- from .e1_input_anchor import E1InputAnchor
23
- from .e1_io import E1IO
24
- from .e1_output_anchor import E1OutputAnchor
25
- from .e1_plugin_proxy import E1PluginProxy
26
- from .e1_provider import E1Provider
27
-
28
-
29
- __all__ = [
30
- "E1PluginProxy",
31
- "E1Environment",
32
- "E1InputAnchor",
33
- "E1IO",
34
- "E1OutputAnchor",
35
- "E1Provider",
36
- ]
@@ -1,95 +0,0 @@
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
- """Alteryx tool configuration definition."""
15
- from typing import Any, Dict, List
16
-
17
- from another_ayx_python_sdk.providers.e1_provider.mock_e1_sdk.AlteryxPythonSDK import OutputAnchorManager
18
-
19
- from another_ayx_python_sdk.providers.e1_provider.e1_input_anchor_proxy import (
20
- E1InputAnchorProxy,
21
- )
22
- from another_ayx_python_sdk.providers.e1_provider.e1_output_anchor_proxy import (
23
- E1OutputAnchorProxy,
24
- )
25
-
26
-
27
- class AnchorBuilder:
28
- """Anchor builder definition."""
29
-
30
- __slots__ = ["tool_config", "output_anchor_mgr"]
31
-
32
- def __init__(
33
- self, tool_config: Dict[str, Any], output_anchor_mgr: OutputAnchorManager
34
- ):
35
- """Initialize a tool configuration."""
36
- self.tool_config = tool_config
37
- self.output_anchor_mgr = output_anchor_mgr
38
-
39
- def build_input_anchors(self) -> List[E1InputAnchorProxy]:
40
- """Build the input anchors based on tool config settings."""
41
- anchor_settings = self.tool_config["AlteryxJavaScriptPlugin"]["GuiSettings"]
42
-
43
- input_anchors = anchor_settings.get("InputConnections")
44
- if not isinstance(input_anchors, dict):
45
- input_anchor_configs: List[Dict] = []
46
- else:
47
- input_anchor_configs_raw = input_anchors.get("Connection")
48
- if not isinstance(input_anchor_configs_raw, dict) and not isinstance(
49
- input_anchor_configs_raw, list
50
- ):
51
- input_anchor_configs = []
52
- else:
53
- if not isinstance(input_anchor_configs_raw, list):
54
- input_anchor_configs = [input_anchor_configs_raw]
55
- else:
56
- input_anchor_configs = input_anchor_configs_raw
57
-
58
- return [
59
- E1InputAnchorProxy(
60
- config["@Name"],
61
- config.get("@AllowMultiple", "false").lower() == "true",
62
- config["@Optional"].lower() == "true",
63
- )
64
- for config in input_anchor_configs
65
- ]
66
-
67
- def build_output_anchors(self) -> List[E1OutputAnchorProxy]:
68
- """Build the output anchors based on tool config settings."""
69
- anchor_settings = self.tool_config["AlteryxJavaScriptPlugin"]["GuiSettings"]
70
-
71
- output_anchors = anchor_settings.get("OutputConnections")
72
-
73
- if not isinstance(output_anchors, dict):
74
- output_anchor_configs: List[Dict] = []
75
- else:
76
- output_anchor_configs_raw = output_anchors.get("Connection")
77
- if not isinstance(output_anchor_configs_raw, dict) and not isinstance(
78
- output_anchor_configs_raw, list
79
- ):
80
- output_anchor_configs = []
81
- else:
82
- if not isinstance(output_anchor_configs_raw, list):
83
- output_anchor_configs = [output_anchor_configs_raw]
84
- else:
85
- output_anchor_configs = output_anchor_configs_raw
86
-
87
- return [
88
- E1OutputAnchorProxy(
89
- config["@Name"],
90
- config.get("@AllowMultiple", "true").lower() == "true",
91
- config["@Optional"].lower() == "true",
92
- self.output_anchor_mgr,
93
- )
94
- for config in output_anchor_configs
95
- ]
@@ -1,31 +0,0 @@
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
- """Get the E1 package."""
15
- import sys
16
- from pathlib import Path
17
-
18
-
19
- def cache_e1_sdk_import() -> None:
20
- """
21
- Cache the import for the E1 SDK.
22
-
23
- This is necessary in order to remove the dependency on the
24
- AlteryxPythonSDK package.
25
- """
26
- try:
27
- import another_ayx_python_sdk.providers.e1_provider.mock_e1_sdk.AlteryxPythonSDK as AlteryxPythonSDK # noqa: F401
28
- except ModuleNotFoundError:
29
- mock_e1_sdk_package_dir = Path(__file__).parent / "mock_e1_sdk"
30
- sys.path.append(str(mock_e1_sdk_package_dir))
31
- import another_ayx_python_sdk.providers.e1_provider.mock_e1_sdk.AlteryxPythonSDK as AlteryxPythonSDK # noqa: F401