recurvedata-lib 0.1.491__tar.gz → 0.1.496__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of recurvedata-lib might be problematic. Click here for more details.

Files changed (335) hide show
  1. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/PKG-INFO +2 -1
  2. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/pyproject.toml +1 -0
  3. recurvedata_lib-0.1.496/recurvedata/__version__.py +1 -0
  4. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/config_schema.py +98 -0
  5. recurvedata_lib-0.1.496/recurvedata/connectors/connectors/n8n.py +141 -0
  6. recurvedata_lib-0.1.496/recurvedata/connectors/connectors/wecom.py +66 -0
  7. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/dbapi.py +17 -9
  8. recurvedata_lib-0.1.491/recurvedata/__version__.py +0 -1
  9. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/.gitignore +0 -0
  10. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/README.md +0 -0
  11. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/__init__.py +0 -0
  12. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/client/__init__.py +0 -0
  13. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/client/client.py +0 -0
  14. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/client/server_client.py +0 -0
  15. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/config.py +0 -0
  16. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/__init__.py +0 -0
  17. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/_register.py +0 -0
  18. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/base.py +0 -0
  19. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/__init__.py +0 -0
  20. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/aliyun_access_key.py +0 -0
  21. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/auth.py +0 -0
  22. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/azure_blob.py +0 -0
  23. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/azure_synapse.py +0 -0
  24. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/bigquery.py +0 -0
  25. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/clickhouse.py +0 -0
  26. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/dingtalk.py +0 -0
  27. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/doris.py +0 -0
  28. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/es.py +0 -0
  29. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/feishu.py +0 -0
  30. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/ftp.py +0 -0
  31. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/generic.py +0 -0
  32. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/google_cloud_storage.py +0 -0
  33. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/google_service_account.py +0 -0
  34. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/hive.py +0 -0
  35. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/impala.py +0 -0
  36. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/jenkins.py +0 -0
  37. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/mail.py +0 -0
  38. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/microsoft_fabric.py +0 -0
  39. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/mongo.py +0 -0
  40. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/mssql.py +0 -0
  41. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/mysql.py +0 -0
  42. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/oss.py +0 -0
  43. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/owncloud.py +0 -0
  44. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/phoenix.py +0 -0
  45. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/postgres.py +0 -0
  46. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/python.py +0 -0
  47. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/redshift.py +0 -0
  48. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/s3.py +0 -0
  49. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/sftp.py +0 -0
  50. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/slack.py +0 -0
  51. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/spark.py +0 -0
  52. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/starrocks.py +0 -0
  53. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/tencent_cos.py +0 -0
  54. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/connectors/tidb.py +0 -0
  55. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/const.py +0 -0
  56. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/datasource.py +0 -0
  57. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/fs.py +0 -0
  58. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/ftp.py +0 -0
  59. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/object_store.py +0 -0
  60. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/pigeon.py +0 -0
  61. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/proxy.py +0 -0
  62. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/service.py +0 -0
  63. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/connectors/utils.py +0 -0
  64. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/consts.py +0 -0
  65. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/__init__.py +0 -0
  66. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/config.py +0 -0
  67. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/configurable.py +0 -0
  68. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/consts.py +0 -0
  69. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/templating.py +0 -0
  70. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/tracing.py +0 -0
  71. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/transformer.py +0 -0
  72. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/core/translation.py +0 -0
  73. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/client.py +0 -0
  74. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/consts.py +0 -0
  75. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/cosmos_utils.py +0 -0
  76. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/error_codes.py +0 -0
  77. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/schemas.py +0 -0
  78. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/service.py +0 -0
  79. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/dbt/utils.py +0 -0
  80. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/error_codes.py +0 -0
  81. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/exceptions.py +0 -0
  82. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/__init__.py +0 -0
  83. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/cli/__init__.py +0 -0
  84. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/cli/connector.py +0 -0
  85. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/cli/dbt.py +0 -0
  86. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/cli/main.py +0 -0
  87. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/cli/parameters.py +0 -0
  88. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/client.py +0 -0
  89. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/consts.py +0 -0
  90. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/debug_executor.py +0 -0
  91. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/executor.py +0 -0
  92. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/link_executor.py +0 -0
  93. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/models.py +0 -0
  94. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/schemas.py +0 -0
  95. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/service/__init__.py +0 -0
  96. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/service/connector.py +0 -0
  97. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/executors/utils.py +0 -0
  98. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/__init__.py +0 -0
  99. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/_factory.py +0 -0
  100. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/backends/__init__.py +0 -0
  101. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/backends/fsspec.py +0 -0
  102. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/backends/local.py +0 -0
  103. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/backends/oss.py +0 -0
  104. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/filestorage/interface.py +0 -0
  105. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/__init__.py +0 -0
  106. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/base.py +0 -0
  107. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/config.py +0 -0
  108. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/context.py +0 -0
  109. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/dbt_operator/__init__.py +0 -0
  110. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/dbt_operator/model_pipeline_link_operator.py +0 -0
  111. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/dbt_operator/operator.py +0 -0
  112. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/link_operator/__init__.py +0 -0
  113. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/link_operator/operator.py +0 -0
  114. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/models.py +0 -0
  115. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/notify_operator/__init__.py +0 -0
  116. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/notify_operator/operator.py +0 -0
  117. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/operator.py +0 -0
  118. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/python_operator/__init__.py +0 -0
  119. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/python_operator/operator.py +0 -0
  120. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/sensor_operator/__init__.py +0 -0
  121. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/sensor_operator/airflow_utils.py +0 -0
  122. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/sensor_operator/operator.py +0 -0
  123. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/spark_operator/__init__.py +0 -0
  124. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/spark_operator/operator.py +0 -0
  125. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/spark_operator/spark_sample.py +0 -0
  126. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/sql_operator/__init__.py +0 -0
  127. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/sql_operator/operator.py +0 -0
  128. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/task.py +0 -0
  129. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/__init__.py +0 -0
  130. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/const.py +0 -0
  131. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_aliyun_sls.py +0 -0
  132. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_sheet_task_base.py +0 -0
  133. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_cass.py +0 -0
  134. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_dbapi.py +0 -0
  135. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_es.py +0 -0
  136. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_feishu_sheet.py +0 -0
  137. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_ftp.py +0 -0
  138. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_google_sheet.py +0 -0
  139. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_mongodb.py +0 -0
  140. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_oss.py +0 -0
  141. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_python.py +0 -0
  142. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_s3.py +0 -0
  143. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/dump_task_sftp.py +0 -0
  144. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_aliyun_oss.py +0 -0
  145. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_azure_blob.py +0 -0
  146. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_azure_synapse.py +0 -0
  147. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_clickhouse.py +0 -0
  148. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_doris.py +0 -0
  149. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_email.py +0 -0
  150. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_es.py +0 -0
  151. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_filebrowser.py +0 -0
  152. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_ftp.py +0 -0
  153. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_google_bigquery.py +0 -0
  154. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_google_cloud_storage.py +0 -0
  155. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_google_sheet.py +0 -0
  156. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_hive.py +0 -0
  157. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_microsoft_fabric.py +0 -0
  158. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_mssql.py +0 -0
  159. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_mysql.py +0 -0
  160. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_owncloud.py +0 -0
  161. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_postgresql.py +0 -0
  162. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_qcloud_cos.py +0 -0
  163. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_recurve_data_prep.py +0 -0
  164. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_redshift.py +0 -0
  165. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_s3.py +0 -0
  166. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_sftp.py +0 -0
  167. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_starrocks.py +0 -0
  168. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/load_task_yicrowds.py +0 -0
  169. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/mixin.py +0 -0
  170. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/operator.py +0 -0
  171. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/task.py +0 -0
  172. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/transfer_operator/utils.py +0 -0
  173. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/ui.py +0 -0
  174. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/utils/__init__.py +0 -0
  175. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/utils/file_factory.py +0 -0
  176. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/utils/fs.py +0 -0
  177. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/utils/lineage.py +0 -0
  178. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/operators/web_init.py +0 -0
  179. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/__init__.py +0 -0
  180. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/_registry.py +0 -0
  181. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/aliyun_oss.py +0 -0
  182. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/awss3.py +0 -0
  183. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/azure_blob.py +0 -0
  184. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/azure_synapse.py +0 -0
  185. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/cass.py +0 -0
  186. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/clickhouse.py +0 -0
  187. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/clickhouse_native.py +0 -0
  188. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/dbapi.py +0 -0
  189. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/doris.py +0 -0
  190. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/es.py +0 -0
  191. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/feishu.py +0 -0
  192. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/ftp.py +0 -0
  193. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/google_bigquery.py +0 -0
  194. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/google_cloud_storage.py +0 -0
  195. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/hbase_phoenix.py +0 -0
  196. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/hdfs.py +0 -0
  197. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/hive_impala.py +0 -0
  198. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/microsoft_fabric.py +0 -0
  199. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/mongodb.py +0 -0
  200. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/mssql.py +0 -0
  201. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/mysql.py +0 -0
  202. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/owncloud.py +0 -0
  203. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/postgresql.py +0 -0
  204. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/power_bi.py +0 -0
  205. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/qcloud_cos.py +0 -0
  206. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/redshift.py +0 -0
  207. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/sftp.py +0 -0
  208. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/sqlite.py +0 -0
  209. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/starrocks.py +0 -0
  210. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/connector/tableau.py +0 -0
  211. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/const.py +0 -0
  212. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/csv.py +0 -0
  213. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/docs/datasources-example.json +0 -0
  214. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/docs/images/pigeon_design.png +0 -0
  215. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/docs/lightweight-data-sync-solution.md +0 -0
  216. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/__init__.py +0 -0
  217. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/aliyun_sls.py +0 -0
  218. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/base.py +0 -0
  219. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/cass.py +0 -0
  220. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/dbapi.py +0 -0
  221. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/es.py +0 -0
  222. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/ftp.py +0 -0
  223. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/dumper/mongodb.py +0 -0
  224. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/handler/__init__.py +0 -0
  225. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/handler/base.py +0 -0
  226. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/handler/csv_handler.py +0 -0
  227. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/__init__.py +0 -0
  228. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/base.py +0 -0
  229. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_azure_synapse.py +0 -0
  230. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_clickhouse.py +0 -0
  231. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_doris.py +0 -0
  232. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_es.py +0 -0
  233. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_google_bigquery.py +0 -0
  234. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_hive.py +0 -0
  235. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_microsoft_fabric.py +0 -0
  236. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_mssql.py +0 -0
  237. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_mysql.py +0 -0
  238. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_postgresql.py +0 -0
  239. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_redshift.py +0 -0
  240. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/loader/csv_to_starrocks.py +0 -0
  241. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/meta.py +0 -0
  242. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/row_factory.py +0 -0
  243. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/schema/__init__.py +0 -0
  244. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/schema/types.py +0 -0
  245. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/sync.py +0 -0
  246. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/transformer.py +0 -0
  247. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/__init__.py +0 -0
  248. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/bloomfilter.py +0 -0
  249. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/date_time.py +0 -0
  250. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/escape.py +0 -0
  251. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/fs.py +0 -0
  252. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/json.py +0 -0
  253. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/keyed_tuple.py +0 -0
  254. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/mp.py +0 -0
  255. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/sql.py +0 -0
  256. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/pigeon/utils/timing.py +0 -0
  257. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/provider_manager.py +0 -0
  258. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/providers/__init__.py +0 -0
  259. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/providers/dbapi/__init__.py +0 -0
  260. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/providers/flywheel/__init__.py +0 -0
  261. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/providers/mysql/__init__.py +0 -0
  262. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/__init__.py +0 -0
  263. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/airflow.py +0 -0
  264. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/airflow_db_process.py +0 -0
  265. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/airflow_operators.py +0 -0
  266. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/airflow_plugin.py +0 -0
  267. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/airflow_trigger_dag_patch.py +0 -0
  268. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/base.py +0 -0
  269. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/cli.py +0 -0
  270. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/client.py +0 -0
  271. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/consts.py +0 -0
  272. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/debug_celery.py +0 -0
  273. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/model.py +0 -0
  274. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/schemas.py +0 -0
  275. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/service.py +0 -0
  276. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/system_dags.py +0 -0
  277. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/task_status.py +0 -0
  278. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schedulers/utils.py +0 -0
  279. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schema/__init__.py +0 -0
  280. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schema/field.py +0 -0
  281. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schema/schema.py +0 -0
  282. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schema/types.py +0 -0
  283. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/schema.py +0 -0
  284. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/__init__.py +0 -0
  285. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/app.py +0 -0
  286. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/connector/__init__.py +0 -0
  287. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/connector/api.py +0 -0
  288. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/connector/schemas.py +0 -0
  289. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/__init__.py +0 -0
  290. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/api.py +0 -0
  291. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/client.py +0 -0
  292. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/consts.py +0 -0
  293. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/schemas.py +0 -0
  294. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/data_service/service.py +0 -0
  295. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/dbt/__init__.py +0 -0
  296. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/dbt/api.py +0 -0
  297. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/error_code.py +0 -0
  298. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/exceptions.py +0 -0
  299. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/executor/__init__.py +0 -0
  300. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/executor/api.py +0 -0
  301. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/executor/schemas.py +0 -0
  302. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/executor/service.py +0 -0
  303. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/main.py +0 -0
  304. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/schedulers/__init__.py +0 -0
  305. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/schedulers/api.py +0 -0
  306. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/schedulers/schemas.py +0 -0
  307. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/server/schemas.py +0 -0
  308. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/__init__.py +0 -0
  309. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/_typer.py +0 -0
  310. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/attrdict.py +0 -0
  311. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/command_helper.py +0 -0
  312. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/compat.py +0 -0
  313. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/compression.py +0 -0
  314. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/crontab.py +0 -0
  315. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/crypto_util.py +0 -0
  316. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/dataclass.py +0 -0
  317. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/date_time.py +0 -0
  318. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/dispatch.py +0 -0
  319. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/email_util.py +0 -0
  320. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/files.py +0 -0
  321. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/helpers.py +0 -0
  322. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/httputil.py +0 -0
  323. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/imports.py +0 -0
  324. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/json.py +0 -0
  325. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/log.py +0 -0
  326. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/log_capture.py +0 -0
  327. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/mp.py +0 -0
  328. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/normalizer.py +0 -0
  329. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/redis_lock.py +0 -0
  330. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/registry.py +0 -0
  331. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/shell.py +0 -0
  332. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/singleton.py +0 -0
  333. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/sql.py +0 -0
  334. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/timeout.py +0 -0
  335. {recurvedata_lib-0.1.491 → recurvedata_lib-0.1.496}/recurvedata/utils/tracing.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: recurvedata-lib
3
- Version: 0.1.491
3
+ Version: 0.1.496
4
4
  Summary: Common Library for ReOrc Data Platform
5
5
  Author-email: Reorc Team <contact@recurvedata.com>
6
6
  Requires-Dist: croniter
@@ -77,6 +77,7 @@ Requires-Dist: dbt-duckdb==1.8.4; extra == 'dbt'
77
77
  Requires-Dist: dbt-extractor==0.5.1; extra == 'dbt'
78
78
  Requires-Dist: dbt-fabric==1.9.4; extra == 'dbt'
79
79
  Requires-Dist: dbt-impala==1.8.0; extra == 'dbt'
80
+ Requires-Dist: dbt-mysql==1.8.0+recurve.1; extra == 'dbt'
80
81
  Requires-Dist: dbt-postgres==1.8.2; extra == 'dbt'
81
82
  Requires-Dist: dbt-redshift==1.8.1; extra == 'dbt'
82
83
  Requires-Dist: dbt-semantic-interfaces==0.5.1; extra == 'dbt'
@@ -363,6 +363,7 @@ dbt = [
363
363
  "dbt-redshift==1.8.1",
364
364
  "dbt-semantic-interfaces==0.5.1",
365
365
  "dbt-starrocks==1.7.0",
366
+ "dbt-mysql==1.8.0+recurve.1",
366
367
  "deepdiff==7.0.1",
367
368
  "deprecated==1.2.15",
368
369
  "distlib==0.3.9",
@@ -0,0 +1 @@
1
+ __version__ = "0.1.496"
@@ -1073,6 +1073,84 @@ ALL_CONFIG_SCHEMA_DCT = {
1073
1073
  "group": ["destination"],
1074
1074
  "test_required": True,
1075
1075
  },
1076
+ "recurvedata.connectors.connectors.n8n": {
1077
+ "type": "n8n",
1078
+ "ui_type": "n8n",
1079
+ "category": ["others"],
1080
+ "config_schema": {
1081
+ "type": "object",
1082
+ "properties": {
1083
+ "url": {
1084
+ "type": "string",
1085
+ "title": _l("API Address"),
1086
+ "description": _l("The URL of the n8n API, e.g. https://localhost:5678/api/v1"),
1087
+ },
1088
+ "api_key": {"type": "string", "title": _l("API KEY")},
1089
+ "timeout": {
1090
+ "type": "number",
1091
+ "title": _l("Timeout"),
1092
+ "description": _l("The timeout of the n8n API, e.g. 60"),
1093
+ "default": 60,
1094
+ },
1095
+ "webhook_credential": {
1096
+ "type": "object",
1097
+ "title": _l("Webhook Trigger Node Credential"),
1098
+ "description": _l("The credential of the n8n webhook trigger node"),
1099
+ "properties": {
1100
+ "credential_type": {
1101
+ "type": "string",
1102
+ "title": _l("Credential Type"),
1103
+ "enum": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
1104
+ "enumNames": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
1105
+ "default": "None",
1106
+ },
1107
+ "basic_auth": {
1108
+ "ui:hidden": '{{parentFormData.credential_type !== "Basic Auth"}}',
1109
+ "type": "object",
1110
+ "title": _l("Basic Auth"),
1111
+ "description": _l("The basic auth of the n8n webhook trigger node"),
1112
+ "properties": {
1113
+ "username": {"type": "string", "title": _l("Username")},
1114
+ "password": {"type": "string", "title": _l("Password")},
1115
+ },
1116
+ },
1117
+ "header_auth": {
1118
+ "ui:hidden": '{{parentFormData.credential_type !== "Header Auth"}}',
1119
+ "type": "object",
1120
+ "title": _l("Header Auth"),
1121
+ "description": _l("The header auth of the n8n webhook trigger node"),
1122
+ "properties": {
1123
+ "header_name": {"type": "string", "title": _l("Header Name")},
1124
+ "header_value": {"type": "string", "title": _l("Header Value")},
1125
+ },
1126
+ },
1127
+ "jwt_auth": {
1128
+ "ui:hidden": '{{parentFormData.credential_type !== "JWT Auth"}}',
1129
+ "type": "object",
1130
+ "title": _l("JWT Auth"),
1131
+ "description": _l("The jwt auth of the n8n webhook trigger node"),
1132
+ "properties": {
1133
+ "jwt_token": {"type": "string", "title": _l("JWT Token")},
1134
+ },
1135
+ },
1136
+ },
1137
+ "order": ["credential_type", "basic_auth", "header_auth", "jwt_auth"],
1138
+ },
1139
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
1140
+ },
1141
+ "order": ["url", "api_key", "timeout", "webhook_credential", "proxies"],
1142
+ "required": ["url", "api_key"],
1143
+ "secret": [
1144
+ "api_key",
1145
+ "webhook_credential.basic_auth.password",
1146
+ "webhook_credential.header_auth.header_value",
1147
+ "webhook_credential.jwt_auth.jwt_token",
1148
+ ],
1149
+ },
1150
+ "enabled": True,
1151
+ "group": ["destination"],
1152
+ "test_required": True,
1153
+ },
1076
1154
  "recurvedata.connectors.connectors.oss": {
1077
1155
  "type": "oss",
1078
1156
  "ui_type": "Aliyun OSS",
@@ -1492,6 +1570,26 @@ ALL_CONFIG_SCHEMA_DCT = {
1492
1570
  "group": ["destination"],
1493
1571
  "test_required": True,
1494
1572
  },
1573
+ "recurvedata.connectors.connectors.wecom": {
1574
+ "type": "wecom",
1575
+ "ui_type": "WeCom",
1576
+ "category": ["others"],
1577
+ "config_schema": {
1578
+ "type": "object",
1579
+ "properties": {
1580
+ "webhook_url": {"type": "string", "title": _l("WeCom Webhook URL")},
1581
+ },
1582
+ "order": [
1583
+ "webhook_url",
1584
+ ],
1585
+ "required": [
1586
+ "webhook_url",
1587
+ ],
1588
+ },
1589
+ "enabled": True,
1590
+ "group": ["integration"],
1591
+ "test_required": True,
1592
+ },
1495
1593
  }
1496
1594
 
1497
1595
  # auto generated finish
@@ -0,0 +1,141 @@
1
+ import base64
2
+ from contextlib import contextmanager
3
+ from urllib.parse import urlparse
4
+
5
+ import httpx
6
+
7
+ from recurvedata.connectors._register import register_connector_class
8
+ from recurvedata.connectors.base import RecurveConnectorBase
9
+ from recurvedata.connectors.proxy import HTTP_PROXY_CONFIG_SCHEMA, HttpProxyMixin
10
+ from recurvedata.consts import ConnectorGroup
11
+ from recurvedata.core.translation import _l
12
+
13
+ CONNECTION_TYPE = "n8n"
14
+ UI_CONNECTION_TYPE = "n8n"
15
+
16
+
17
+ @register_connector_class([CONNECTION_TYPE, UI_CONNECTION_TYPE])
18
+ class N8N(HttpProxyMixin, RecurveConnectorBase):
19
+ connection_type = CONNECTION_TYPE
20
+ ui_connection_type = UI_CONNECTION_TYPE
21
+ group = [ConnectorGroup.DESTINATION]
22
+
23
+ config_schema = {
24
+ "type": "object",
25
+ "properties": {
26
+ "url": {
27
+ "type": "string",
28
+ "title": _l("API Address"),
29
+ "description": _l("The URL of the n8n API, e.g. https://localhost:5678/api/v1"),
30
+ },
31
+ "api_key": {"type": "string", "title": _l("API KEY")},
32
+ "timeout": {
33
+ "type": "number",
34
+ "title": _l("Timeout"),
35
+ "description": _l("The timeout of the n8n API, e.g. 60"),
36
+ "default": 60,
37
+ },
38
+ "webhook_credential": {
39
+ "type": "object",
40
+ "title": _l("Webhook Trigger Node Credential"),
41
+ "description": _l("The credential of the n8n webhook trigger node"),
42
+ "properties": {
43
+ "credential_type": {
44
+ "type": "string",
45
+ "title": _l("Credential Type"),
46
+ "enum": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
47
+ "enumNames": ["Basic Auth", "Header Auth", "JWT Auth", "None"],
48
+ "default": "None",
49
+ },
50
+ "basic_auth": {
51
+ "ui:hidden": '{{parentFormData.credential_type !== "Basic Auth"}}',
52
+ "type": "object",
53
+ "title": _l("Basic Auth"),
54
+ "description": _l("The basic auth of the n8n webhook trigger node"),
55
+ "properties": {
56
+ "username": {"type": "string", "title": _l("Username")},
57
+ "password": {"type": "string", "title": _l("Password")},
58
+ },
59
+ },
60
+ "header_auth": {
61
+ "ui:hidden": '{{parentFormData.credential_type !== "Header Auth"}}',
62
+ "type": "object",
63
+ "title": _l("Header Auth"),
64
+ "description": _l("The header auth of the n8n webhook trigger node"),
65
+ "properties": {
66
+ "header_name": {"type": "string", "title": _l("Header Name")},
67
+ "header_value": {"type": "string", "title": _l("Header Value")},
68
+ },
69
+ },
70
+ "jwt_auth": {
71
+ "ui:hidden": '{{parentFormData.credential_type !== "JWT Auth"}}',
72
+ "type": "object",
73
+ "title": _l("JWT Auth"),
74
+ "description": _l("The jwt auth of the n8n webhook trigger node"),
75
+ "properties": {
76
+ "jwt_token": {"type": "string", "title": _l("JWT Token")},
77
+ },
78
+ },
79
+ },
80
+ "order": ["credential_type", "basic_auth", "header_auth", "jwt_auth"],
81
+ },
82
+ "proxies": HTTP_PROXY_CONFIG_SCHEMA["proxies"],
83
+ },
84
+ "order": ["url", "api_key", "timeout", "webhook_credential", "proxies"],
85
+ "required": ["url", "api_key"],
86
+ "secret": [
87
+ "api_key",
88
+ "webhook_credential.basic_auth.password",
89
+ "webhook_credential.header_auth.header_value",
90
+ "webhook_credential.jwt_auth.jwt_token",
91
+ ],
92
+ }
93
+
94
+ def test_connection(self):
95
+ pass
96
+
97
+ @contextmanager
98
+ def _n8n_client(self) -> httpx.Client:
99
+ with self._init_proxy_manager():
100
+ yield httpx.Client(
101
+ base_url=f"{self.url}", headers={"X-N8N-API-KEY": f"{self.api_key}"}, timeout=self.timeout
102
+ )
103
+
104
+ def get_workflows(self) -> list[dict]:
105
+ path = "/workflows"
106
+ workflows = []
107
+ cursor = None
108
+ with self._n8n_client() as client:
109
+ response = client.get(path)
110
+ workflows.extend(response.json()["data"])
111
+ if response.json()["nextCursor"] and response.json()["nextCursor"] != cursor:
112
+ cursor = response.json()["nextCursor"]
113
+ while cursor:
114
+ response = client.get(path, params={"cursor": cursor})
115
+ workflows.extend(response.json()["data"])
116
+ cursor = response.json()["nextCursor"]
117
+ return workflows
118
+
119
+ def _trigger_workflow_via_webhook(self, webhook_id: str, payload: dict) -> dict:
120
+ main_url = f"{urlparse(self.url).scheme}://{urlparse(self.url).netloc}"
121
+ webhook_url = f"{main_url}/webhook/{webhook_id}"
122
+ headers = {}
123
+ credential_type = self.webhook_credential.get("credential_type")
124
+ basic_auth = self.webhook_credential.get("basic_auth", {})
125
+ header_auth = self.webhook_credential.get("header_auth", {})
126
+ jwt_auth = self.webhook_credential.get("jwt_auth", {})
127
+ with self._init_proxy_manager():
128
+ if credential_type == "Basic Auth":
129
+ username = basic_auth.get("username", "")
130
+ password = basic_auth.get("password", "")
131
+ headers["Authorization"] = f'Basic {base64.b64encode(f"{username}:{password}".encode()).decode()}'
132
+ elif credential_type == "Header Auth":
133
+ header_name = header_auth.get("header_name", "")
134
+ header_value = header_auth.get("header_value", "")
135
+ headers[header_name] = header_value
136
+ elif credential_type == "JWT Auth":
137
+ jwt_token = jwt_auth.get("jwt_token", "")
138
+ headers["Authorization"] = f"Bearer {jwt_token}"
139
+ response = httpx.post(url=webhook_url, headers=headers, timeout=self.timeout, json=payload)
140
+
141
+ return response.json()
@@ -0,0 +1,66 @@
1
+ from urllib.parse import urlparse
2
+
3
+ import requests
4
+
5
+ from recurvedata.connectors._register import register_connector_class
6
+ from recurvedata.connectors.base import RecurveConnectorBase
7
+ from recurvedata.consts import ConnectorGroup
8
+ from recurvedata.core.translation import _l
9
+
10
+ CONNECTION_TYPE = "wecom"
11
+ UI_CONNECTION_TYPE = "WeCom"
12
+
13
+
14
+ @register_connector_class([CONNECTION_TYPE, UI_CONNECTION_TYPE])
15
+ class WeCom(RecurveConnectorBase):
16
+ connection_type = CONNECTION_TYPE
17
+ ui_connection_type = UI_CONNECTION_TYPE
18
+ group = [ConnectorGroup.INTEGRATION]
19
+
20
+ config_schema = {
21
+ "type": "object",
22
+ "properties": {
23
+ "webhook_url": {"type": "string", "title": _l("WeCom Webhook URL")},
24
+ },
25
+ "order": [
26
+ "webhook_url",
27
+ ],
28
+ "required": [
29
+ "webhook_url",
30
+ ],
31
+ }
32
+
33
+ @property
34
+ def webhook_url(self):
35
+ return self.conf["webhook_url"]
36
+
37
+ @property
38
+ def wecom_conf(self):
39
+ if hasattr(self, "_wecom_conf"):
40
+ return self._wecom_conf
41
+ self.init_config()
42
+ return self._wecom_conf
43
+
44
+ def test_connection(self):
45
+ """
46
+ Test WeCom webhook connection.
47
+ Validate URL format and network connectivity without sending actual messages.
48
+ """
49
+ # Validate URL format
50
+ parsed_url = urlparse(self.webhook_url)
51
+ if not parsed_url.scheme or not parsed_url.netloc:
52
+ raise ValueError("Invalid webhook URL format")
53
+
54
+ if parsed_url.scheme != "https":
55
+ raise ValueError("WeCom webhook URL must use HTTPS")
56
+
57
+ # Verify WeCom domain
58
+ if "qyapi.weixin.qq.com" not in parsed_url.netloc:
59
+ raise ValueError("Invalid WeCom webhook URL domain")
60
+
61
+ # Test network connectivity (use HEAD request without sending message body)
62
+ try:
63
+ requests.head(self.webhook_url, timeout=10, allow_redirects=True)
64
+ # Connection test only, status code not checked (HEAD may return 405)
65
+ except requests.exceptions.RequestException as e:
66
+ raise ValueError(f"Failed to connect to WeCom webhook: {str(e)}")
@@ -397,19 +397,27 @@ class DBAPIBase(RecurveConnectorBase):
397
397
  set_env_dbt_password(self.password or "")
398
398
 
399
399
  @classmethod
400
- def order_sql(cls, sql: str, orders: list[dict[str, str]] = None, return_sql: bool = True):
401
- """
402
- order the sql by the orders
403
- """
400
+ def get_dialect(cls):
404
401
  # dialect impala -> hive, cuz there is no dialect 'impala' in sqlglot
405
- dialect = "hive" if cls.connection_type == "impala" else (cls.connection_type or None)
402
+ return "hive" if cls.connection_type == "impala" else (cls.connection_type or None)
403
+
404
+ @classmethod
405
+ def clean_sql(cls, sql):
406
+ dialect = cls.get_dialect()
406
407
  # Parse the SQL query
407
408
  parsed = sqlglot.parse_one(sql, read=dialect)
408
409
  # since some sql dialects have special identifier, we need to use the dialect to generate the clean sql
409
- clean_sql = parsed.sql(dialect=dialect, comments=False)
410
+ return parsed.sql(dialect=dialect, comments=False)
411
+
412
+ @classmethod
413
+ def order_sql(cls, sql: str, orders: list[dict[str, str]] = None, return_sql: bool = True):
414
+ """
415
+ order the sql by the orders
416
+ """
417
+ dialect = cls.get_dialect()
410
418
  # Wrap the entire query with a subquery
411
419
  alias = "_recurve_limit_subquery"
412
- subquery = exp.Subquery(this=clean_sql, alias=alias)
420
+ subquery = exp.Subquery(this=cls.clean_sql(sql), alias=alias)
413
421
 
414
422
  # Create a new SELECT statement with the subquery and the LIMIT clause
415
423
  outer_select = exp.select("*").from_(subquery)
@@ -436,7 +444,7 @@ class DBAPIBase(RecurveConnectorBase):
436
444
  no validation on sql.
437
445
  If the sql is DML, then execute it will raise an error.
438
446
  """
439
- dialect = "hive" if cls.connection_type == "impala" else (cls.connection_type or None)
447
+ dialect = cls.get_dialect()
440
448
 
441
449
  outer_select = cls.order_sql(sql, orders, return_sql=False)
442
450
 
@@ -456,7 +464,7 @@ class DBAPIBase(RecurveConnectorBase):
456
464
  no validation on sql.
457
465
  If the sql is DML, then execute it will raise an error.
458
466
  """
459
- return f"SELECT COUNT(1) FROM ({sql}) AS cnt_subquery"
467
+ return f"SELECT COUNT(1) FROM ({cls.clean_sql(sql)}) AS cnt_subquery"
460
468
 
461
469
 
462
470
  @dataclass
@@ -1 +0,0 @@
1
- __version__ = "0.1.491"