recurvedata-lib 0.1.487__py2.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.

Potentially problematic release.


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

Files changed (333) hide show
  1. recurvedata/__init__.py +0 -0
  2. recurvedata/__version__.py +1 -0
  3. recurvedata/client/__init__.py +3 -0
  4. recurvedata/client/client.py +150 -0
  5. recurvedata/client/server_client.py +91 -0
  6. recurvedata/config.py +99 -0
  7. recurvedata/connectors/__init__.py +20 -0
  8. recurvedata/connectors/_register.py +46 -0
  9. recurvedata/connectors/base.py +111 -0
  10. recurvedata/connectors/config_schema.py +1575 -0
  11. recurvedata/connectors/connectors/__init__.py +0 -0
  12. recurvedata/connectors/connectors/aliyun_access_key.py +30 -0
  13. recurvedata/connectors/connectors/auth.py +44 -0
  14. recurvedata/connectors/connectors/azure_blob.py +89 -0
  15. recurvedata/connectors/connectors/azure_synapse.py +79 -0
  16. recurvedata/connectors/connectors/bigquery.py +359 -0
  17. recurvedata/connectors/connectors/clickhouse.py +219 -0
  18. recurvedata/connectors/connectors/dingtalk.py +61 -0
  19. recurvedata/connectors/connectors/doris.py +215 -0
  20. recurvedata/connectors/connectors/es.py +62 -0
  21. recurvedata/connectors/connectors/feishu.py +65 -0
  22. recurvedata/connectors/connectors/ftp.py +50 -0
  23. recurvedata/connectors/connectors/generic.py +49 -0
  24. recurvedata/connectors/connectors/google_cloud_storage.py +115 -0
  25. recurvedata/connectors/connectors/google_service_account.py +225 -0
  26. recurvedata/connectors/connectors/hive.py +207 -0
  27. recurvedata/connectors/connectors/impala.py +210 -0
  28. recurvedata/connectors/connectors/jenkins.py +51 -0
  29. recurvedata/connectors/connectors/mail.py +89 -0
  30. recurvedata/connectors/connectors/microsoft_fabric.py +284 -0
  31. recurvedata/connectors/connectors/mongo.py +79 -0
  32. recurvedata/connectors/connectors/mssql.py +131 -0
  33. recurvedata/connectors/connectors/mysql.py +191 -0
  34. recurvedata/connectors/connectors/n8n.py +141 -0
  35. recurvedata/connectors/connectors/oss.py +74 -0
  36. recurvedata/connectors/connectors/owncloud.py +36 -0
  37. recurvedata/connectors/connectors/phoenix.py +36 -0
  38. recurvedata/connectors/connectors/postgres.py +230 -0
  39. recurvedata/connectors/connectors/python.py +50 -0
  40. recurvedata/connectors/connectors/redshift.py +187 -0
  41. recurvedata/connectors/connectors/s3.py +93 -0
  42. recurvedata/connectors/connectors/sftp.py +87 -0
  43. recurvedata/connectors/connectors/slack.py +35 -0
  44. recurvedata/connectors/connectors/spark.py +99 -0
  45. recurvedata/connectors/connectors/starrocks.py +175 -0
  46. recurvedata/connectors/connectors/tencent_cos.py +40 -0
  47. recurvedata/connectors/connectors/tidb.py +49 -0
  48. recurvedata/connectors/const.py +315 -0
  49. recurvedata/connectors/datasource.py +189 -0
  50. recurvedata/connectors/dbapi.py +469 -0
  51. recurvedata/connectors/fs.py +66 -0
  52. recurvedata/connectors/ftp.py +40 -0
  53. recurvedata/connectors/object_store.py +60 -0
  54. recurvedata/connectors/pigeon.py +172 -0
  55. recurvedata/connectors/proxy.py +104 -0
  56. recurvedata/connectors/service.py +223 -0
  57. recurvedata/connectors/utils.py +47 -0
  58. recurvedata/consts.py +49 -0
  59. recurvedata/core/__init__.py +0 -0
  60. recurvedata/core/config.py +46 -0
  61. recurvedata/core/configurable.py +27 -0
  62. recurvedata/core/consts.py +2 -0
  63. recurvedata/core/templating.py +206 -0
  64. recurvedata/core/tracing.py +223 -0
  65. recurvedata/core/transformer.py +186 -0
  66. recurvedata/core/translation.py +91 -0
  67. recurvedata/dbt/client.py +97 -0
  68. recurvedata/dbt/consts.py +99 -0
  69. recurvedata/dbt/cosmos_utils.py +275 -0
  70. recurvedata/dbt/error_codes.py +18 -0
  71. recurvedata/dbt/schemas.py +98 -0
  72. recurvedata/dbt/service.py +451 -0
  73. recurvedata/dbt/utils.py +246 -0
  74. recurvedata/error_codes.py +71 -0
  75. recurvedata/exceptions.py +72 -0
  76. recurvedata/executors/__init__.py +4 -0
  77. recurvedata/executors/cli/__init__.py +7 -0
  78. recurvedata/executors/cli/connector.py +117 -0
  79. recurvedata/executors/cli/dbt.py +118 -0
  80. recurvedata/executors/cli/main.py +82 -0
  81. recurvedata/executors/cli/parameters.py +18 -0
  82. recurvedata/executors/client.py +190 -0
  83. recurvedata/executors/consts.py +50 -0
  84. recurvedata/executors/debug_executor.py +100 -0
  85. recurvedata/executors/executor.py +300 -0
  86. recurvedata/executors/link_executor.py +189 -0
  87. recurvedata/executors/models.py +34 -0
  88. recurvedata/executors/schemas.py +222 -0
  89. recurvedata/executors/service/__init__.py +0 -0
  90. recurvedata/executors/service/connector.py +380 -0
  91. recurvedata/executors/utils.py +172 -0
  92. recurvedata/filestorage/__init__.py +11 -0
  93. recurvedata/filestorage/_factory.py +33 -0
  94. recurvedata/filestorage/backends/__init__.py +0 -0
  95. recurvedata/filestorage/backends/fsspec.py +45 -0
  96. recurvedata/filestorage/backends/local.py +67 -0
  97. recurvedata/filestorage/backends/oss.py +56 -0
  98. recurvedata/filestorage/interface.py +84 -0
  99. recurvedata/operators/__init__.py +10 -0
  100. recurvedata/operators/base.py +28 -0
  101. recurvedata/operators/config.py +21 -0
  102. recurvedata/operators/context.py +255 -0
  103. recurvedata/operators/dbt_operator/__init__.py +2 -0
  104. recurvedata/operators/dbt_operator/model_pipeline_link_operator.py +55 -0
  105. recurvedata/operators/dbt_operator/operator.py +353 -0
  106. recurvedata/operators/link_operator/__init__.py +1 -0
  107. recurvedata/operators/link_operator/operator.py +120 -0
  108. recurvedata/operators/models.py +55 -0
  109. recurvedata/operators/notify_operator/__init__.py +1 -0
  110. recurvedata/operators/notify_operator/operator.py +180 -0
  111. recurvedata/operators/operator.py +119 -0
  112. recurvedata/operators/python_operator/__init__.py +1 -0
  113. recurvedata/operators/python_operator/operator.py +132 -0
  114. recurvedata/operators/sensor_operator/__init__.py +1 -0
  115. recurvedata/operators/sensor_operator/airflow_utils.py +63 -0
  116. recurvedata/operators/sensor_operator/operator.py +172 -0
  117. recurvedata/operators/spark_operator/__init__.py +1 -0
  118. recurvedata/operators/spark_operator/operator.py +200 -0
  119. recurvedata/operators/spark_operator/spark_sample.py +47 -0
  120. recurvedata/operators/sql_operator/__init__.py +1 -0
  121. recurvedata/operators/sql_operator/operator.py +90 -0
  122. recurvedata/operators/task.py +211 -0
  123. recurvedata/operators/transfer_operator/__init__.py +40 -0
  124. recurvedata/operators/transfer_operator/const.py +10 -0
  125. recurvedata/operators/transfer_operator/dump_aliyun_sls.py +82 -0
  126. recurvedata/operators/transfer_operator/dump_sheet_task_base.py +292 -0
  127. recurvedata/operators/transfer_operator/dump_task_cass.py +155 -0
  128. recurvedata/operators/transfer_operator/dump_task_dbapi.py +209 -0
  129. recurvedata/operators/transfer_operator/dump_task_es.py +113 -0
  130. recurvedata/operators/transfer_operator/dump_task_feishu_sheet.py +114 -0
  131. recurvedata/operators/transfer_operator/dump_task_ftp.py +234 -0
  132. recurvedata/operators/transfer_operator/dump_task_google_sheet.py +66 -0
  133. recurvedata/operators/transfer_operator/dump_task_mongodb.py +168 -0
  134. recurvedata/operators/transfer_operator/dump_task_oss.py +285 -0
  135. recurvedata/operators/transfer_operator/dump_task_python.py +212 -0
  136. recurvedata/operators/transfer_operator/dump_task_s3.py +270 -0
  137. recurvedata/operators/transfer_operator/dump_task_sftp.py +229 -0
  138. recurvedata/operators/transfer_operator/load_task_aliyun_oss.py +107 -0
  139. recurvedata/operators/transfer_operator/load_task_azure_blob.py +115 -0
  140. recurvedata/operators/transfer_operator/load_task_azure_synapse.py +90 -0
  141. recurvedata/operators/transfer_operator/load_task_clickhouse.py +167 -0
  142. recurvedata/operators/transfer_operator/load_task_doris.py +164 -0
  143. recurvedata/operators/transfer_operator/load_task_email.py +188 -0
  144. recurvedata/operators/transfer_operator/load_task_es.py +86 -0
  145. recurvedata/operators/transfer_operator/load_task_filebrowser.py +151 -0
  146. recurvedata/operators/transfer_operator/load_task_ftp.py +19 -0
  147. recurvedata/operators/transfer_operator/load_task_google_bigquery.py +90 -0
  148. recurvedata/operators/transfer_operator/load_task_google_cloud_storage.py +127 -0
  149. recurvedata/operators/transfer_operator/load_task_google_sheet.py +130 -0
  150. recurvedata/operators/transfer_operator/load_task_hive.py +158 -0
  151. recurvedata/operators/transfer_operator/load_task_microsoft_fabric.py +105 -0
  152. recurvedata/operators/transfer_operator/load_task_mssql.py +153 -0
  153. recurvedata/operators/transfer_operator/load_task_mysql.py +157 -0
  154. recurvedata/operators/transfer_operator/load_task_owncloud.py +135 -0
  155. recurvedata/operators/transfer_operator/load_task_postgresql.py +109 -0
  156. recurvedata/operators/transfer_operator/load_task_qcloud_cos.py +119 -0
  157. recurvedata/operators/transfer_operator/load_task_recurve_data_prep.py +75 -0
  158. recurvedata/operators/transfer_operator/load_task_redshift.py +95 -0
  159. recurvedata/operators/transfer_operator/load_task_s3.py +150 -0
  160. recurvedata/operators/transfer_operator/load_task_sftp.py +90 -0
  161. recurvedata/operators/transfer_operator/load_task_starrocks.py +169 -0
  162. recurvedata/operators/transfer_operator/load_task_yicrowds.py +97 -0
  163. recurvedata/operators/transfer_operator/mixin.py +31 -0
  164. recurvedata/operators/transfer_operator/operator.py +231 -0
  165. recurvedata/operators/transfer_operator/task.py +223 -0
  166. recurvedata/operators/transfer_operator/utils.py +134 -0
  167. recurvedata/operators/ui.py +80 -0
  168. recurvedata/operators/utils/__init__.py +51 -0
  169. recurvedata/operators/utils/file_factory.py +150 -0
  170. recurvedata/operators/utils/fs.py +10 -0
  171. recurvedata/operators/utils/lineage.py +265 -0
  172. recurvedata/operators/web_init.py +15 -0
  173. recurvedata/pigeon/connector/__init__.py +294 -0
  174. recurvedata/pigeon/connector/_registry.py +17 -0
  175. recurvedata/pigeon/connector/aliyun_oss.py +80 -0
  176. recurvedata/pigeon/connector/awss3.py +123 -0
  177. recurvedata/pigeon/connector/azure_blob.py +176 -0
  178. recurvedata/pigeon/connector/azure_synapse.py +51 -0
  179. recurvedata/pigeon/connector/cass.py +151 -0
  180. recurvedata/pigeon/connector/clickhouse.py +403 -0
  181. recurvedata/pigeon/connector/clickhouse_native.py +351 -0
  182. recurvedata/pigeon/connector/dbapi.py +571 -0
  183. recurvedata/pigeon/connector/doris.py +166 -0
  184. recurvedata/pigeon/connector/es.py +176 -0
  185. recurvedata/pigeon/connector/feishu.py +1135 -0
  186. recurvedata/pigeon/connector/ftp.py +163 -0
  187. recurvedata/pigeon/connector/google_bigquery.py +283 -0
  188. recurvedata/pigeon/connector/google_cloud_storage.py +130 -0
  189. recurvedata/pigeon/connector/hbase_phoenix.py +108 -0
  190. recurvedata/pigeon/connector/hdfs.py +204 -0
  191. recurvedata/pigeon/connector/hive_impala.py +383 -0
  192. recurvedata/pigeon/connector/microsoft_fabric.py +95 -0
  193. recurvedata/pigeon/connector/mongodb.py +56 -0
  194. recurvedata/pigeon/connector/mssql.py +467 -0
  195. recurvedata/pigeon/connector/mysql.py +175 -0
  196. recurvedata/pigeon/connector/owncloud.py +92 -0
  197. recurvedata/pigeon/connector/postgresql.py +267 -0
  198. recurvedata/pigeon/connector/power_bi.py +179 -0
  199. recurvedata/pigeon/connector/qcloud_cos.py +79 -0
  200. recurvedata/pigeon/connector/redshift.py +123 -0
  201. recurvedata/pigeon/connector/sftp.py +73 -0
  202. recurvedata/pigeon/connector/sqlite.py +42 -0
  203. recurvedata/pigeon/connector/starrocks.py +144 -0
  204. recurvedata/pigeon/connector/tableau.py +162 -0
  205. recurvedata/pigeon/const.py +21 -0
  206. recurvedata/pigeon/csv.py +172 -0
  207. recurvedata/pigeon/docs/datasources-example.json +82 -0
  208. recurvedata/pigeon/docs/images/pigeon_design.png +0 -0
  209. recurvedata/pigeon/docs/lightweight-data-sync-solution.md +111 -0
  210. recurvedata/pigeon/dumper/__init__.py +171 -0
  211. recurvedata/pigeon/dumper/aliyun_sls.py +415 -0
  212. recurvedata/pigeon/dumper/base.py +141 -0
  213. recurvedata/pigeon/dumper/cass.py +213 -0
  214. recurvedata/pigeon/dumper/dbapi.py +346 -0
  215. recurvedata/pigeon/dumper/es.py +112 -0
  216. recurvedata/pigeon/dumper/ftp.py +64 -0
  217. recurvedata/pigeon/dumper/mongodb.py +103 -0
  218. recurvedata/pigeon/handler/__init__.py +4 -0
  219. recurvedata/pigeon/handler/base.py +153 -0
  220. recurvedata/pigeon/handler/csv_handler.py +290 -0
  221. recurvedata/pigeon/loader/__init__.py +87 -0
  222. recurvedata/pigeon/loader/base.py +83 -0
  223. recurvedata/pigeon/loader/csv_to_azure_synapse.py +214 -0
  224. recurvedata/pigeon/loader/csv_to_clickhouse.py +152 -0
  225. recurvedata/pigeon/loader/csv_to_doris.py +215 -0
  226. recurvedata/pigeon/loader/csv_to_es.py +51 -0
  227. recurvedata/pigeon/loader/csv_to_google_bigquery.py +169 -0
  228. recurvedata/pigeon/loader/csv_to_hive.py +468 -0
  229. recurvedata/pigeon/loader/csv_to_microsoft_fabric.py +242 -0
  230. recurvedata/pigeon/loader/csv_to_mssql.py +174 -0
  231. recurvedata/pigeon/loader/csv_to_mysql.py +180 -0
  232. recurvedata/pigeon/loader/csv_to_postgresql.py +248 -0
  233. recurvedata/pigeon/loader/csv_to_redshift.py +240 -0
  234. recurvedata/pigeon/loader/csv_to_starrocks.py +233 -0
  235. recurvedata/pigeon/meta.py +116 -0
  236. recurvedata/pigeon/row_factory.py +42 -0
  237. recurvedata/pigeon/schema/__init__.py +124 -0
  238. recurvedata/pigeon/schema/types.py +13 -0
  239. recurvedata/pigeon/sync.py +283 -0
  240. recurvedata/pigeon/transformer.py +146 -0
  241. recurvedata/pigeon/utils/__init__.py +134 -0
  242. recurvedata/pigeon/utils/bloomfilter.py +181 -0
  243. recurvedata/pigeon/utils/date_time.py +323 -0
  244. recurvedata/pigeon/utils/escape.py +15 -0
  245. recurvedata/pigeon/utils/fs.py +266 -0
  246. recurvedata/pigeon/utils/json.py +44 -0
  247. recurvedata/pigeon/utils/keyed_tuple.py +85 -0
  248. recurvedata/pigeon/utils/mp.py +156 -0
  249. recurvedata/pigeon/utils/sql.py +328 -0
  250. recurvedata/pigeon/utils/timing.py +155 -0
  251. recurvedata/provider_manager.py +0 -0
  252. recurvedata/providers/__init__.py +0 -0
  253. recurvedata/providers/dbapi/__init__.py +0 -0
  254. recurvedata/providers/flywheel/__init__.py +0 -0
  255. recurvedata/providers/mysql/__init__.py +0 -0
  256. recurvedata/schedulers/__init__.py +1 -0
  257. recurvedata/schedulers/airflow.py +974 -0
  258. recurvedata/schedulers/airflow_db_process.py +331 -0
  259. recurvedata/schedulers/airflow_operators.py +61 -0
  260. recurvedata/schedulers/airflow_plugin.py +9 -0
  261. recurvedata/schedulers/airflow_trigger_dag_patch.py +117 -0
  262. recurvedata/schedulers/base.py +99 -0
  263. recurvedata/schedulers/cli.py +228 -0
  264. recurvedata/schedulers/client.py +56 -0
  265. recurvedata/schedulers/consts.py +52 -0
  266. recurvedata/schedulers/debug_celery.py +62 -0
  267. recurvedata/schedulers/model.py +63 -0
  268. recurvedata/schedulers/schemas.py +97 -0
  269. recurvedata/schedulers/service.py +20 -0
  270. recurvedata/schedulers/system_dags.py +59 -0
  271. recurvedata/schedulers/task_status.py +279 -0
  272. recurvedata/schedulers/utils.py +73 -0
  273. recurvedata/schema/__init__.py +0 -0
  274. recurvedata/schema/field.py +88 -0
  275. recurvedata/schema/schema.py +55 -0
  276. recurvedata/schema/types.py +17 -0
  277. recurvedata/schema.py +0 -0
  278. recurvedata/server/__init__.py +0 -0
  279. recurvedata/server/app.py +7 -0
  280. recurvedata/server/connector/__init__.py +0 -0
  281. recurvedata/server/connector/api.py +79 -0
  282. recurvedata/server/connector/schemas.py +28 -0
  283. recurvedata/server/data_service/__init__.py +0 -0
  284. recurvedata/server/data_service/api.py +126 -0
  285. recurvedata/server/data_service/client.py +18 -0
  286. recurvedata/server/data_service/consts.py +1 -0
  287. recurvedata/server/data_service/schemas.py +68 -0
  288. recurvedata/server/data_service/service.py +218 -0
  289. recurvedata/server/dbt/__init__.py +0 -0
  290. recurvedata/server/dbt/api.py +116 -0
  291. recurvedata/server/error_code.py +49 -0
  292. recurvedata/server/exceptions.py +19 -0
  293. recurvedata/server/executor/__init__.py +0 -0
  294. recurvedata/server/executor/api.py +37 -0
  295. recurvedata/server/executor/schemas.py +30 -0
  296. recurvedata/server/executor/service.py +220 -0
  297. recurvedata/server/main.py +32 -0
  298. recurvedata/server/schedulers/__init__.py +0 -0
  299. recurvedata/server/schedulers/api.py +252 -0
  300. recurvedata/server/schedulers/schemas.py +50 -0
  301. recurvedata/server/schemas.py +50 -0
  302. recurvedata/utils/__init__.py +15 -0
  303. recurvedata/utils/_typer.py +61 -0
  304. recurvedata/utils/attrdict.py +19 -0
  305. recurvedata/utils/command_helper.py +20 -0
  306. recurvedata/utils/compat.py +12 -0
  307. recurvedata/utils/compression.py +203 -0
  308. recurvedata/utils/crontab.py +42 -0
  309. recurvedata/utils/crypto_util.py +305 -0
  310. recurvedata/utils/dataclass.py +11 -0
  311. recurvedata/utils/date_time.py +464 -0
  312. recurvedata/utils/dispatch.py +114 -0
  313. recurvedata/utils/email_util.py +104 -0
  314. recurvedata/utils/files.py +386 -0
  315. recurvedata/utils/helpers.py +170 -0
  316. recurvedata/utils/httputil.py +117 -0
  317. recurvedata/utils/imports.py +132 -0
  318. recurvedata/utils/json.py +80 -0
  319. recurvedata/utils/log.py +117 -0
  320. recurvedata/utils/log_capture.py +153 -0
  321. recurvedata/utils/mp.py +178 -0
  322. recurvedata/utils/normalizer.py +102 -0
  323. recurvedata/utils/redis_lock.py +474 -0
  324. recurvedata/utils/registry.py +54 -0
  325. recurvedata/utils/shell.py +15 -0
  326. recurvedata/utils/singleton.py +33 -0
  327. recurvedata/utils/sql.py +6 -0
  328. recurvedata/utils/timeout.py +28 -0
  329. recurvedata/utils/tracing.py +14 -0
  330. recurvedata_lib-0.1.487.dist-info/METADATA +605 -0
  331. recurvedata_lib-0.1.487.dist-info/RECORD +333 -0
  332. recurvedata_lib-0.1.487.dist-info/WHEEL +5 -0
  333. recurvedata_lib-0.1.487.dist-info/entry_points.txt +6 -0
@@ -0,0 +1,28 @@
1
+ import os
2
+ import signal
3
+ from typing import ContextManager
4
+
5
+ from recurvedata.exceptions import TimeoutException
6
+
7
+
8
+ class timeout(ContextManager):
9
+ """Timeout context manager
10
+
11
+ Example:
12
+ with timeout(seconds=1):
13
+ do_something()
14
+ """
15
+
16
+ def __init__(self, seconds: float = 1.0, error_message: str = "Timeout"):
17
+ self.seconds = seconds
18
+ self.error_message = error_message + ", PID: " + str(os.getpid())
19
+
20
+ def handle_timeout(self, signum, frame):
21
+ raise TimeoutException(self.error_message)
22
+
23
+ def __enter__(self):
24
+ signal.signal(signal.SIGALRM, self.handle_timeout)
25
+ signal.setitimer(signal.ITIMER_REAL, self.seconds)
26
+
27
+ def __exit__(self, type_, value, traceback):
28
+ signal.setitimer(signal.ITIMER_REAL, 0)
@@ -0,0 +1,14 @@
1
+ from recurvedata.client import Client
2
+ from recurvedata.core.tracing import Tracing
3
+
4
+
5
+ def create_dp_tracer(service: str) -> Tracing:
6
+ if not Tracing.is_instantiated():
7
+ client = Client()
8
+ kwargs = {}
9
+ client.prepare_header(kwargs)
10
+ tracer = Tracing()
11
+ tracer.init(endpoint=f"{client._config.server_url}/api/tracing/traces", service=service)
12
+ tracer.set_auth_headers(kwargs["headers"])
13
+ return tracer
14
+ return Tracing()
@@ -0,0 +1,605 @@
1
+ Metadata-Version: 2.4
2
+ Name: recurvedata-lib
3
+ Version: 0.1.487
4
+ Summary: Common Library for ReOrc Data Platform
5
+ Author-email: Reorc Team <contact@recurvedata.com>
6
+ Requires-Dist: croniter
7
+ Requires-Dist: cytoolz
8
+ Requires-Dist: fsspec
9
+ Requires-Dist: httpx
10
+ Requires-Dist: jinja2
11
+ Requires-Dist: jsonschema
12
+ Requires-Dist: pendulum
13
+ Requires-Dist: pydantic
14
+ Requires-Dist: python-dateutil
15
+ Requires-Dist: sqlalchemy
16
+ Requires-Dist: sqlglot
17
+ Requires-Dist: typer
18
+ Provides-Extra: dbt
19
+ Requires-Dist: adlfs==2024.12.0; extra == 'dbt'
20
+ Requires-Dist: aenum==3.1.15; extra == 'dbt'
21
+ Requires-Dist: agate==1.9.1; extra == 'dbt'
22
+ Requires-Dist: aiobotocore==2.17.0; extra == 'dbt'
23
+ Requires-Dist: aiohappyeyeballs==2.4.4; extra == 'dbt'
24
+ Requires-Dist: aiohttp==3.10.5; extra == 'dbt'
25
+ Requires-Dist: aioitertools==0.12.0; extra == 'dbt'
26
+ Requires-Dist: aiooss2==0.2.10; extra == 'dbt'
27
+ Requires-Dist: aiosignal==1.3.2; extra == 'dbt'
28
+ Requires-Dist: aliyun-log-python-sdk==0.9.24; extra == 'dbt'
29
+ Requires-Dist: aliyun-python-sdk-core==2.16.0; extra == 'dbt'
30
+ Requires-Dist: aliyun-python-sdk-kms==2.16.5; extra == 'dbt'
31
+ Requires-Dist: annotated-types==0.7.0; extra == 'dbt'
32
+ Requires-Dist: anyio==4.8.0; extra == 'dbt'
33
+ Requires-Dist: asgiref==3.8.1; extra == 'dbt'
34
+ Requires-Dist: asn1crypto==1.5.1; extra == 'dbt'
35
+ Requires-Dist: astronomer-cosmos==1.6.0+recurve; extra == 'dbt'
36
+ Requires-Dist: asynch==0.2.5; extra == 'dbt'
37
+ Requires-Dist: attrs==24.3.0; extra == 'dbt'
38
+ Requires-Dist: azure-core==1.32.0; extra == 'dbt'
39
+ Requires-Dist: azure-datalake-store==0.0.53; extra == 'dbt'
40
+ Requires-Dist: azure-identity==1.19.0; extra == 'dbt'
41
+ Requires-Dist: azure-storage-blob==12.24.0; extra == 'dbt'
42
+ Requires-Dist: babel==2.16.0; extra == 'dbt'
43
+ Requires-Dist: backoff==2.2.1; extra == 'dbt'
44
+ Requires-Dist: bcrypt==4.2.1; extra == 'dbt'
45
+ Requires-Dist: beautifulsoup4==4.12.3; extra == 'dbt'
46
+ Requires-Dist: bitarray==3.0.0; extra == 'dbt'
47
+ Requires-Dist: boto3==1.35.93; extra == 'dbt'
48
+ Requires-Dist: botocore==1.35.93; extra == 'dbt'
49
+ Requires-Dist: cachetools==5.5.0; extra == 'dbt'
50
+ Requires-Dist: certifi==2024.12.14; extra == 'dbt'
51
+ Requires-Dist: cffi==1.17.1; extra == 'dbt'
52
+ Requires-Dist: chardet==5.2.0; extra == 'dbt'
53
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'dbt'
54
+ Requires-Dist: ciso8601==2.3.2; extra == 'dbt'
55
+ Requires-Dist: click==8.1.8; extra == 'dbt'
56
+ Requires-Dist: clickhouse-cityhash==1.0.2.4; extra == 'dbt'
57
+ Requires-Dist: clickhouse-driver==0.2.9; extra == 'dbt'
58
+ Requires-Dist: clickhouse-sqlalchemy==0.3.2; extra == 'dbt'
59
+ Requires-Dist: colorama==0.4.6; extra == 'dbt'
60
+ Requires-Dist: cos-python-sdk-v5==1.9.33; extra == 'dbt'
61
+ Requires-Dist: crcmod==1.7; extra == 'dbt'
62
+ Requires-Dist: croniter==6.0.0; extra == 'dbt'
63
+ Requires-Dist: cryptography==44.0.0; extra == 'dbt'
64
+ Requires-Dist: cssselect==1.2.0; extra == 'dbt'
65
+ Requires-Dist: cssutils==2.11.1; extra == 'dbt'
66
+ Requires-Dist: cython==3.0.11; extra == 'dbt'
67
+ Requires-Dist: cytoolz==1.0.1; extra == 'dbt'
68
+ Requires-Dist: daff==1.3.46; extra == 'dbt'
69
+ Requires-Dist: dateparser==1.2.2; extra == 'dbt'
70
+ Requires-Dist: db-dtypes==1.3.1; extra == 'dbt'
71
+ Requires-Dist: dbt-adapters==1.9.0; extra == 'dbt'
72
+ Requires-Dist: dbt-bigquery==1.8.3; extra == 'dbt'
73
+ Requires-Dist: dbt-common==1.12.0; extra == 'dbt'
74
+ Requires-Dist: dbt-core==1.8.0; extra == 'dbt'
75
+ Requires-Dist: dbt-doris==0.3.4+recurve.11; extra == 'dbt'
76
+ Requires-Dist: dbt-duckdb==1.8.4; extra == 'dbt'
77
+ Requires-Dist: dbt-extractor==0.5.1; extra == 'dbt'
78
+ Requires-Dist: dbt-fabric==1.9.4; extra == 'dbt'
79
+ Requires-Dist: dbt-impala==1.8.0; extra == 'dbt'
80
+ Requires-Dist: dbt-postgres==1.8.2; extra == 'dbt'
81
+ Requires-Dist: dbt-redshift==1.8.1; extra == 'dbt'
82
+ Requires-Dist: dbt-semantic-interfaces==0.5.1; extra == 'dbt'
83
+ Requires-Dist: dbt-starrocks==1.7.0; extra == 'dbt'
84
+ Requires-Dist: deepdiff==7.0.1; extra == 'dbt'
85
+ Requires-Dist: deprecated==1.2.15; extra == 'dbt'
86
+ Requires-Dist: distlib==0.3.9; extra == 'dbt'
87
+ Requires-Dist: dnspython==2.7.0; extra == 'dbt'
88
+ Requires-Dist: duckdb==1.1.3; extra == 'dbt'
89
+ Requires-Dist: elastic-transport==8.17.0; extra == 'dbt'
90
+ Requires-Dist: elasticsearch==8.17.0; extra == 'dbt'
91
+ Requires-Dist: emails==0.6; extra == 'dbt'
92
+ Requires-Dist: et-xmlfile==2.0.0; extra == 'dbt'
93
+ Requires-Dist: fastapi==0.115.6; extra == 'dbt'
94
+ Requires-Dist: filelock==3.16.1; extra == 'dbt'
95
+ Requires-Dist: frozenlist==1.5.0; extra == 'dbt'
96
+ Requires-Dist: fsspec==2024.12.0; extra == 'dbt'
97
+ Requires-Dist: future==1.0.0; extra == 'dbt'
98
+ Requires-Dist: google-api-core==2.24.0; extra == 'dbt'
99
+ Requires-Dist: google-auth-oauthlib==1.2.1; extra == 'dbt'
100
+ Requires-Dist: google-auth==2.37.0; extra == 'dbt'
101
+ Requires-Dist: google-cloud-bigquery-storage==2.27.0; extra == 'dbt'
102
+ Requires-Dist: google-cloud-bigquery==3.27.0; extra == 'dbt'
103
+ Requires-Dist: google-cloud-core==2.4.1; extra == 'dbt'
104
+ Requires-Dist: google-cloud-dataproc==5.16.0; extra == 'dbt'
105
+ Requires-Dist: google-cloud-storage==2.19.0; extra == 'dbt'
106
+ Requires-Dist: google-crc32c==1.6.0; extra == 'dbt'
107
+ Requires-Dist: google-resumable-media==2.7.2; extra == 'dbt'
108
+ Requires-Dist: googleapis-common-protos==1.66.0; extra == 'dbt'
109
+ Requires-Dist: grpc-google-iam-v1==0.14.0; extra == 'dbt'
110
+ Requires-Dist: grpcio-status==1.62.3; extra == 'dbt'
111
+ Requires-Dist: grpcio==1.69.0; extra == 'dbt'
112
+ Requires-Dist: gspread==6.1.4; extra == 'dbt'
113
+ Requires-Dist: gunicorn==23.0.0; extra == 'dbt'
114
+ Requires-Dist: h11==0.14.0; extra == 'dbt'
115
+ Requires-Dist: httpcore==1.0.7; extra == 'dbt'
116
+ Requires-Dist: httpx==0.28.1; extra == 'dbt'
117
+ Requires-Dist: humanize==4.11.0; extra == 'dbt'
118
+ Requires-Dist: idna==3.10; extra == 'dbt'
119
+ Requires-Dist: importlib-metadata==6.11.0; extra == 'dbt'
120
+ Requires-Dist: impyla==0.18.0; extra == 'dbt'
121
+ Requires-Dist: isodate==0.6.1; extra == 'dbt'
122
+ Requires-Dist: jinja2==3.1.5; extra == 'dbt'
123
+ Requires-Dist: jmespath==0.10.0; extra == 'dbt'
124
+ Requires-Dist: jsonschema-specifications==2024.10.1; extra == 'dbt'
125
+ Requires-Dist: jsonschema==4.23.0; extra == 'dbt'
126
+ Requires-Dist: larksuite-oapi==1.0.34; extra == 'dbt'
127
+ Requires-Dist: leather==0.4.0; extra == 'dbt'
128
+ Requires-Dist: leb128==1.0.8; extra == 'dbt'
129
+ Requires-Dist: logbook==1.5.3; extra == 'dbt'
130
+ Requires-Dist: loguru==0.7.3; extra == 'dbt'
131
+ Requires-Dist: lxml==5.3.0; extra == 'dbt'
132
+ Requires-Dist: lz4==4.3.3; extra == 'dbt'
133
+ Requires-Dist: markdown-it-py==3.0.0; extra == 'dbt'
134
+ Requires-Dist: markupsafe==3.0.2; extra == 'dbt'
135
+ Requires-Dist: mashumaro==3.15; extra == 'dbt'
136
+ Requires-Dist: mdurl==0.1.2; extra == 'dbt'
137
+ Requires-Dist: minimal-snowplow-tracker==0.0.2; extra == 'dbt'
138
+ Requires-Dist: more-itertools==10.5.0; extra == 'dbt'
139
+ Requires-Dist: msal-extensions==1.2.0; extra == 'dbt'
140
+ Requires-Dist: msal==1.31.1; extra == 'dbt'
141
+ Requires-Dist: msgpack==1.1.0; extra == 'dbt'
142
+ Requires-Dist: multidict==6.1.0; extra == 'dbt'
143
+ Requires-Dist: mysql-connector-python==9.1.0; extra == 'dbt'
144
+ Requires-Dist: networkx==3.4.2; extra == 'dbt'
145
+ Requires-Dist: numpy==2.2.1; extra == 'dbt'
146
+ Requires-Dist: oauthlib==3.2.2; extra == 'dbt'
147
+ Requires-Dist: openpyxl==3.1.5; extra == 'dbt'
148
+ Requires-Dist: opentelemetry-api==1.29.0; extra == 'dbt'
149
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.15.0; extra == 'dbt'
150
+ Requires-Dist: opentelemetry-proto==1.15.0; extra == 'dbt'
151
+ Requires-Dist: opentelemetry-sdk==1.29.0; extra == 'dbt'
152
+ Requires-Dist: opentelemetry-semantic-conventions==0.50b0; extra == 'dbt'
153
+ Requires-Dist: ordered-set==4.1.0; extra == 'dbt'
154
+ Requires-Dist: orjson==3.10.14; extra == 'dbt'
155
+ Requires-Dist: oss2==2.18.1; extra == 'dbt'
156
+ Requires-Dist: ossfs==2023.12.0; extra == 'dbt'
157
+ Requires-Dist: packaging==24.2; extra == 'dbt'
158
+ Requires-Dist: pandas==2.2.3; extra == 'dbt'
159
+ Requires-Dist: paramiko==3.5.0; extra == 'dbt'
160
+ Requires-Dist: parsedatetime==2.6; extra == 'dbt'
161
+ Requires-Dist: pathspec==0.12.1; extra == 'dbt'
162
+ Requires-Dist: pendulum==3.0.0; extra == 'dbt'
163
+ Requires-Dist: platformdirs==4.3.6; extra == 'dbt'
164
+ Requires-Dist: portalocker==2.10.1; extra == 'dbt'
165
+ Requires-Dist: premailer==3.10.0; extra == 'dbt'
166
+ Requires-Dist: propcache==0.2.1; extra == 'dbt'
167
+ Requires-Dist: proto-plus==1.25.0; extra == 'dbt'
168
+ Requires-Dist: protobuf==4.25.5; extra == 'dbt'
169
+ Requires-Dist: psycopg2-binary==2.9.10; extra == 'dbt'
170
+ Requires-Dist: pure-sasl==0.6.2; extra == 'dbt'
171
+ Requires-Dist: pyarrow==18.1.0; extra == 'dbt'
172
+ Requires-Dist: pyasn1-modules==0.4.1; extra == 'dbt'
173
+ Requires-Dist: pyasn1==0.6.1; extra == 'dbt'
174
+ Requires-Dist: pycparser==2.22; extra == 'dbt'
175
+ Requires-Dist: pycryptodome==3.21.0; extra == 'dbt'
176
+ Requires-Dist: pydantic-core==2.27.2; extra == 'dbt'
177
+ Requires-Dist: pydantic==2.10.5; extra == 'dbt'
178
+ Requires-Dist: pygments==2.19.1; extra == 'dbt'
179
+ Requires-Dist: pyhive==0.7.0; extra == 'dbt'
180
+ Requires-Dist: pyjwt==2.10.1; extra == 'dbt'
181
+ Requires-Dist: pymongo==4.10.1; extra == 'dbt'
182
+ Requires-Dist: pymysql==1.1.1; extra == 'dbt'
183
+ Requires-Dist: pynacl==1.5.0; extra == 'dbt'
184
+ Requires-Dist: pyocclient==0.6; extra == 'dbt'
185
+ Requires-Dist: pyodbc==5.1.0; extra == 'dbt'
186
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == 'dbt'
187
+ Requires-Dist: python-decouple==3.8; extra == 'dbt'
188
+ Requires-Dist: python-slugify==8.0.4; extra == 'dbt'
189
+ Requires-Dist: pytimeparse==1.1.8; extra == 'dbt'
190
+ Requires-Dist: pytz==2024.2; extra == 'dbt'
191
+ Requires-Dist: pywebhdfs==0.4.1; extra == 'dbt'
192
+ Requires-Dist: pyyaml==6.0.2; extra == 'dbt'
193
+ Requires-Dist: redis==5.2.1; extra == 'dbt'
194
+ Requires-Dist: redshift-connector==2.0.917; extra == 'dbt'
195
+ Requires-Dist: referencing==0.35.1; extra == 'dbt'
196
+ Requires-Dist: regex==2024.11.6; extra == 'dbt'
197
+ Requires-Dist: requests-oauthlib==2.0.0; extra == 'dbt'
198
+ Requires-Dist: requests==2.32.3; extra == 'dbt'
199
+ Requires-Dist: rich==13.9.4; extra == 'dbt'
200
+ Requires-Dist: rpds-py==0.22.3; extra == 'dbt'
201
+ Requires-Dist: rsa==4.9; extra == 'dbt'
202
+ Requires-Dist: s3fs==2024.12.0; extra == 'dbt'
203
+ Requires-Dist: s3transfer==0.10.4; extra == 'dbt'
204
+ Requires-Dist: scramp==1.4.5; extra == 'dbt'
205
+ Requires-Dist: setuptools==75.8.0; extra == 'dbt'
206
+ Requires-Dist: shellingham==1.5.4; extra == 'dbt'
207
+ Requires-Dist: six==1.17.0; extra == 'dbt'
208
+ Requires-Dist: sniffio==1.3.1; extra == 'dbt'
209
+ Requires-Dist: soupsieve==2.6; extra == 'dbt'
210
+ Requires-Dist: sqlalchemy-bigquery==1.12.0; extra == 'dbt'
211
+ Requires-Dist: sqlalchemy-doris==0.2.2; extra == 'dbt'
212
+ Requires-Dist: sqlalchemy-redshift==0.8.15+recurve; extra == 'dbt'
213
+ Requires-Dist: sqlalchemy-utils==0.41.2; extra == 'dbt'
214
+ Requires-Dist: sqlalchemy==2.0.37; extra == 'dbt'
215
+ Requires-Dist: sqlglot==26.1.3; extra == 'dbt'
216
+ Requires-Dist: sqlparse==0.5.3; extra == 'dbt'
217
+ Requires-Dist: sshtunnel==0.4.0; extra == 'dbt'
218
+ Requires-Dist: starlette==0.41.3; extra == 'dbt'
219
+ Requires-Dist: tenacity==8.5.0; extra == 'dbt'
220
+ Requires-Dist: text-unidecode==1.3; extra == 'dbt'
221
+ Requires-Dist: thrift-sasl==0.4.3; extra == 'dbt'
222
+ Requires-Dist: thrift==0.16.0; extra == 'dbt'
223
+ Requires-Dist: time-machine==2.16.0; extra == 'dbt'
224
+ Requires-Dist: toolz==1.0.0; extra == 'dbt'
225
+ Requires-Dist: typer==0.15.1; extra == 'dbt'
226
+ Requires-Dist: typing-extensions==4.12.2; extra == 'dbt'
227
+ Requires-Dist: tzdata==2024.2; extra == 'dbt'
228
+ Requires-Dist: tzlocal==5.2; extra == 'dbt'
229
+ Requires-Dist: ujson==5.10.0; extra == 'dbt'
230
+ Requires-Dist: urllib3==1.26.20; extra == 'dbt'
231
+ Requires-Dist: uvicorn==0.34.0; extra == 'dbt'
232
+ Requires-Dist: virtualenv==20.28.1; extra == 'dbt'
233
+ Requires-Dist: wrapt==1.17.1; extra == 'dbt'
234
+ Requires-Dist: xmltodict==0.14.2; extra == 'dbt'
235
+ Requires-Dist: yarl==1.18.3; extra == 'dbt'
236
+ Requires-Dist: zipp==3.21.0; extra == 'dbt'
237
+ Requires-Dist: zstd==1.5.6.1; extra == 'dbt'
238
+ Provides-Extra: slim
239
+ Requires-Dist: annotated-types==0.7.0; extra == 'slim'
240
+ Requires-Dist: anyio==4.9.0; extra == 'slim'
241
+ Requires-Dist: attrs==25.3.0; extra == 'slim'
242
+ Requires-Dist: certifi==2025.1.31; extra == 'slim'
243
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'slim'
244
+ Requires-Dist: click==8.1.8; extra == 'slim'
245
+ Requires-Dist: croniter==6.0.0; extra == 'slim'
246
+ Requires-Dist: cytoolz==1.0.1; extra == 'slim'
247
+ Requires-Dist: deprecated==1.2.18; extra == 'slim'
248
+ Requires-Dist: fsspec==2025.3.2; extra == 'slim'
249
+ Requires-Dist: googleapis-common-protos==1.70.0; extra == 'slim'
250
+ Requires-Dist: h11==0.14.0; extra == 'slim'
251
+ Requires-Dist: httpcore==1.0.8; extra == 'slim'
252
+ Requires-Dist: httpx==0.28.1; extra == 'slim'
253
+ Requires-Dist: humanize==4.12.2; extra == 'slim'
254
+ Requires-Dist: idna==3.10; extra == 'slim'
255
+ Requires-Dist: importlib-metadata==8.6.1; extra == 'slim'
256
+ Requires-Dist: jinja2==3.1.6; extra == 'slim'
257
+ Requires-Dist: jsonschema-specifications==2025.4.1; extra == 'slim'
258
+ Requires-Dist: jsonschema==4.23.0; extra == 'slim'
259
+ Requires-Dist: loguru==0.7.3; extra == 'slim'
260
+ Requires-Dist: markdown-it-py==3.0.0; extra == 'slim'
261
+ Requires-Dist: markupsafe==3.0.2; extra == 'slim'
262
+ Requires-Dist: mdurl==0.1.2; extra == 'slim'
263
+ Requires-Dist: opentelemetry-api==1.32.1; extra == 'slim'
264
+ Requires-Dist: opentelemetry-exporter-otlp-proto-common==1.32.1; extra == 'slim'
265
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.32.1; extra == 'slim'
266
+ Requires-Dist: opentelemetry-proto==1.32.1; extra == 'slim'
267
+ Requires-Dist: opentelemetry-sdk==1.32.1; extra == 'slim'
268
+ Requires-Dist: opentelemetry-semantic-conventions==0.53b1; extra == 'slim'
269
+ Requires-Dist: pendulum==3.1.0; extra == 'slim'
270
+ Requires-Dist: protobuf==5.29.4; extra == 'slim'
271
+ Requires-Dist: pydantic-core==2.33.1; extra == 'slim'
272
+ Requires-Dist: pydantic==2.11.3; extra == 'slim'
273
+ Requires-Dist: pygments==2.19.1; extra == 'slim'
274
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == 'slim'
275
+ Requires-Dist: pytz==2025.2; extra == 'slim'
276
+ Requires-Dist: referencing==0.36.2; extra == 'slim'
277
+ Requires-Dist: requests==2.32.3; extra == 'slim'
278
+ Requires-Dist: rich==14.0.0; extra == 'slim'
279
+ Requires-Dist: rpds-py==0.24.0; extra == 'slim'
280
+ Requires-Dist: shellingham==1.5.4; extra == 'slim'
281
+ Requires-Dist: six==1.17.0; extra == 'slim'
282
+ Requires-Dist: sniffio==1.3.1; extra == 'slim'
283
+ Requires-Dist: sqlalchemy==2.0.40; extra == 'slim'
284
+ Requires-Dist: sqlglot==26.16.0; extra == 'slim'
285
+ Requires-Dist: sqlparse==0.5.3; extra == 'slim'
286
+ Requires-Dist: toolz==1.0.0; extra == 'slim'
287
+ Requires-Dist: typer==0.15.2; extra == 'slim'
288
+ Requires-Dist: typing-extensions==4.13.2; extra == 'slim'
289
+ Requires-Dist: typing-inspection==0.4.0; extra == 'slim'
290
+ Requires-Dist: tzdata==2025.2; extra == 'slim'
291
+ Requires-Dist: urllib3==2.4.0; extra == 'slim'
292
+ Requires-Dist: wrapt==1.17.2; extra == 'slim'
293
+ Requires-Dist: zipp==3.21.0; extra == 'slim'
294
+ Provides-Extra: worker
295
+ Requires-Dist: adlfs==2024.12.0; extra == 'worker'
296
+ Requires-Dist: aiobotocore==2.17.0; extra == 'worker'
297
+ Requires-Dist: aiohappyeyeballs==2.4.4; extra == 'worker'
298
+ Requires-Dist: aiohttp==3.10.5; extra == 'worker'
299
+ Requires-Dist: aioitertools==0.12.0; extra == 'worker'
300
+ Requires-Dist: aiooss2==0.2.10; extra == 'worker'
301
+ Requires-Dist: aiosignal==1.3.2; extra == 'worker'
302
+ Requires-Dist: aliyun-log-python-sdk==0.9.24; extra == 'worker'
303
+ Requires-Dist: aliyun-python-sdk-core==2.16.0; extra == 'worker'
304
+ Requires-Dist: aliyun-python-sdk-kms==2.16.5; extra == 'worker'
305
+ Requires-Dist: annotated-types==0.7.0; extra == 'worker'
306
+ Requires-Dist: anyio==4.8.0; extra == 'worker'
307
+ Requires-Dist: asgiref==3.8.1; extra == 'worker'
308
+ Requires-Dist: asn1crypto==1.5.1; extra == 'worker'
309
+ Requires-Dist: asynch==0.2.5; extra == 'worker'
310
+ Requires-Dist: attrs==24.3.0; extra == 'worker'
311
+ Requires-Dist: azure-core==1.32.0; extra == 'worker'
312
+ Requires-Dist: azure-datalake-store==0.0.53; extra == 'worker'
313
+ Requires-Dist: azure-identity==1.19.0; extra == 'worker'
314
+ Requires-Dist: azure-storage-blob==12.24.0; extra == 'worker'
315
+ Requires-Dist: backoff==2.2.1; extra == 'worker'
316
+ Requires-Dist: bcrypt==4.2.1; extra == 'worker'
317
+ Requires-Dist: beautifulsoup4==4.12.3; extra == 'worker'
318
+ Requires-Dist: bitarray==3.0.0; extra == 'worker'
319
+ Requires-Dist: boto3==1.35.93; extra == 'worker'
320
+ Requires-Dist: botocore==1.35.93; extra == 'worker'
321
+ Requires-Dist: cachetools==5.5.0; extra == 'worker'
322
+ Requires-Dist: certifi==2024.12.14; extra == 'worker'
323
+ Requires-Dist: cffi==1.17.1; extra == 'worker'
324
+ Requires-Dist: chardet==5.2.0; extra == 'worker'
325
+ Requires-Dist: charset-normalizer==3.4.1; extra == 'worker'
326
+ Requires-Dist: ciso8601==2.3.2; extra == 'worker'
327
+ Requires-Dist: click==8.1.8; extra == 'worker'
328
+ Requires-Dist: clickhouse-cityhash==1.0.2.4; extra == 'worker'
329
+ Requires-Dist: clickhouse-driver==0.2.9; extra == 'worker'
330
+ Requires-Dist: clickhouse-sqlalchemy==0.3.2; extra == 'worker'
331
+ Requires-Dist: cos-python-sdk-v5==1.9.10; extra == 'worker'
332
+ Requires-Dist: crcmod==1.7; extra == 'worker'
333
+ Requires-Dist: croniter==6.0.0; extra == 'worker'
334
+ Requires-Dist: cryptography==44.0.0; extra == 'worker'
335
+ Requires-Dist: cssselect==1.2.0; extra == 'worker'
336
+ Requires-Dist: cssutils==2.11.1; extra == 'worker'
337
+ Requires-Dist: cython==3.0.11; extra == 'worker'
338
+ Requires-Dist: cytoolz==1.0.1; extra == 'worker'
339
+ Requires-Dist: dateparser==1.2.2; extra == 'worker'
340
+ Requires-Dist: deprecated==1.2.15; extra == 'worker'
341
+ Requires-Dist: dicttoxml==1.7.16; extra == 'worker'
342
+ Requires-Dist: dnspython==2.7.0; extra == 'worker'
343
+ Requires-Dist: elastic-transport==8.17.0; extra == 'worker'
344
+ Requires-Dist: elasticsearch==8.17.0; extra == 'worker'
345
+ Requires-Dist: emails==0.6; extra == 'worker'
346
+ Requires-Dist: et-xmlfile==2.0.0; extra == 'worker'
347
+ Requires-Dist: fastapi==0.115.6; extra == 'worker'
348
+ Requires-Dist: frozenlist==1.5.0; extra == 'worker'
349
+ Requires-Dist: fsspec==2024.12.0; extra == 'worker'
350
+ Requires-Dist: future==1.0.0; extra == 'worker'
351
+ Requires-Dist: google-api-core==2.24.0; extra == 'worker'
352
+ Requires-Dist: google-auth-oauthlib==1.2.1; extra == 'worker'
353
+ Requires-Dist: google-auth==2.37.0; extra == 'worker'
354
+ Requires-Dist: google-cloud-bigquery-storage==2.27.0; extra == 'worker'
355
+ Requires-Dist: google-cloud-bigquery==3.27.0; extra == 'worker'
356
+ Requires-Dist: google-cloud-core==2.4.1; extra == 'worker'
357
+ Requires-Dist: google-cloud-storage==2.19.0; extra == 'worker'
358
+ Requires-Dist: google-crc32c==1.6.0; extra == 'worker'
359
+ Requires-Dist: google-resumable-media==2.7.2; extra == 'worker'
360
+ Requires-Dist: googleapis-common-protos==1.66.0; extra == 'worker'
361
+ Requires-Dist: grpcio-status==1.62.3; extra == 'worker'
362
+ Requires-Dist: grpcio==1.69.0; extra == 'worker'
363
+ Requires-Dist: gspread==6.1.4; extra == 'worker'
364
+ Requires-Dist: gunicorn==23.0.0; extra == 'worker'
365
+ Requires-Dist: h11==0.14.0; extra == 'worker'
366
+ Requires-Dist: httpcore==1.0.7; extra == 'worker'
367
+ Requires-Dist: httpx==0.28.1; extra == 'worker'
368
+ Requires-Dist: humanize==4.11.0; extra == 'worker'
369
+ Requires-Dist: idna==3.10; extra == 'worker'
370
+ Requires-Dist: importlib-metadata==8.5.0; extra == 'worker'
371
+ Requires-Dist: impyla==0.19.0; extra == 'worker'
372
+ Requires-Dist: isodate==0.7.2; extra == 'worker'
373
+ Requires-Dist: jinja2==3.1.5; extra == 'worker'
374
+ Requires-Dist: jmespath==0.10.0; extra == 'worker'
375
+ Requires-Dist: jsonschema-specifications==2024.10.1; extra == 'worker'
376
+ Requires-Dist: jsonschema==4.23.0; extra == 'worker'
377
+ Requires-Dist: larksuite-oapi==1.0.34; extra == 'worker'
378
+ Requires-Dist: leb128==1.0.8; extra == 'worker'
379
+ Requires-Dist: loguru==0.7.3; extra == 'worker'
380
+ Requires-Dist: lxml==5.3.0; extra == 'worker'
381
+ Requires-Dist: lz4==4.3.3; extra == 'worker'
382
+ Requires-Dist: markdown-it-py==3.0.0; extra == 'worker'
383
+ Requires-Dist: markupsafe==3.0.2; extra == 'worker'
384
+ Requires-Dist: mdurl==0.1.2; extra == 'worker'
385
+ Requires-Dist: more-itertools==10.5.0; extra == 'worker'
386
+ Requires-Dist: msal-extensions==1.2.0; extra == 'worker'
387
+ Requires-Dist: msal==1.31.1; extra == 'worker'
388
+ Requires-Dist: multidict==6.1.0; extra == 'worker'
389
+ Requires-Dist: mysql-connector-python==9.1.0; extra == 'worker'
390
+ Requires-Dist: numpy==2.2.1; extra == 'worker'
391
+ Requires-Dist: oauthlib==3.2.2; extra == 'worker'
392
+ Requires-Dist: openpyxl==3.1.5; extra == 'worker'
393
+ Requires-Dist: opentelemetry-api==1.29.0; extra == 'worker'
394
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.15.0; extra == 'worker'
395
+ Requires-Dist: opentelemetry-proto==1.15.0; extra == 'worker'
396
+ Requires-Dist: opentelemetry-sdk==1.29.0; extra == 'worker'
397
+ Requires-Dist: opentelemetry-semantic-conventions==0.50b0; extra == 'worker'
398
+ Requires-Dist: orjson==3.10.14; extra == 'worker'
399
+ Requires-Dist: oss2==2.18.1; extra == 'worker'
400
+ Requires-Dist: ossfs==2023.12.0; extra == 'worker'
401
+ Requires-Dist: packaging==24.2; extra == 'worker'
402
+ Requires-Dist: pandas==2.2.3; extra == 'worker'
403
+ Requires-Dist: paramiko==2.7.1; extra == 'worker'
404
+ Requires-Dist: pendulum==3.0.0; extra == 'worker'
405
+ Requires-Dist: portalocker==2.10.1; extra == 'worker'
406
+ Requires-Dist: premailer==3.10.0; extra == 'worker'
407
+ Requires-Dist: propcache==0.2.1; extra == 'worker'
408
+ Requires-Dist: proto-plus==1.25.0; extra == 'worker'
409
+ Requires-Dist: protobuf==4.25.5; extra == 'worker'
410
+ Requires-Dist: psycopg2-binary==2.9.10; extra == 'worker'
411
+ Requires-Dist: pure-sasl==0.6.2; extra == 'worker'
412
+ Requires-Dist: pyarrow==18.1.0; extra == 'worker'
413
+ Requires-Dist: pyasn1-modules==0.4.1; extra == 'worker'
414
+ Requires-Dist: pyasn1==0.6.1; extra == 'worker'
415
+ Requires-Dist: pycparser==2.22; extra == 'worker'
416
+ Requires-Dist: pycryptodome==3.21.0; extra == 'worker'
417
+ Requires-Dist: pydantic-core==2.27.2; extra == 'worker'
418
+ Requires-Dist: pydantic==2.10.5; extra == 'worker'
419
+ Requires-Dist: pygments==2.19.1; extra == 'worker'
420
+ Requires-Dist: pyhive==0.7.0; extra == 'worker'
421
+ Requires-Dist: pyjwt==2.10.1; extra == 'worker'
422
+ Requires-Dist: pymongo==4.10.1; extra == 'worker'
423
+ Requires-Dist: pymysql==1.1.1; extra == 'worker'
424
+ Requires-Dist: pynacl==1.5.0; extra == 'worker'
425
+ Requires-Dist: pyocclient==0.6; extra == 'worker'
426
+ Requires-Dist: pyodbc==5.2.0; extra == 'worker'
427
+ Requires-Dist: python-dateutil==2.9.0.post0; extra == 'worker'
428
+ Requires-Dist: pytz==2024.2; extra == 'worker'
429
+ Requires-Dist: pywebhdfs==0.4.1; extra == 'worker'
430
+ Requires-Dist: pyyaml==6.0.2; extra == 'worker'
431
+ Requires-Dist: redis==5.2.1; extra == 'worker'
432
+ Requires-Dist: redshift-connector==2.1.5; extra == 'worker'
433
+ Requires-Dist: referencing==0.35.1; extra == 'worker'
434
+ Requires-Dist: regex==2024.11.6; extra == 'worker'
435
+ Requires-Dist: requests-oauthlib==2.0.0; extra == 'worker'
436
+ Requires-Dist: requests==2.32.3; extra == 'worker'
437
+ Requires-Dist: rich==13.9.4; extra == 'worker'
438
+ Requires-Dist: rpds-py==0.22.3; extra == 'worker'
439
+ Requires-Dist: rsa==4.9; extra == 'worker'
440
+ Requires-Dist: s3fs==2024.12.0; extra == 'worker'
441
+ Requires-Dist: s3transfer==0.10.4; extra == 'worker'
442
+ Requires-Dist: scramp==1.4.5; extra == 'worker'
443
+ Requires-Dist: setuptools==75.8.0; extra == 'worker'
444
+ Requires-Dist: shellingham==1.5.4; extra == 'worker'
445
+ Requires-Dist: six==1.17.0; extra == 'worker'
446
+ Requires-Dist: sniffio==1.3.1; extra == 'worker'
447
+ Requires-Dist: soupsieve==2.6; extra == 'worker'
448
+ Requires-Dist: sqlalchemy-bigquery==1.12.0; extra == 'worker'
449
+ Requires-Dist: sqlalchemy-doris==0.2.2; extra == 'worker'
450
+ Requires-Dist: sqlalchemy-redshift==0.8.15+recurve; extra == 'worker'
451
+ Requires-Dist: sqlalchemy-utils==0.41.2; extra == 'worker'
452
+ Requires-Dist: sqlalchemy==2.0.37; extra == 'worker'
453
+ Requires-Dist: sqlglot==26.1.3; extra == 'worker'
454
+ Requires-Dist: sqlparse==0.5.3; extra == 'worker'
455
+ Requires-Dist: sshtunnel==0.3.2; extra == 'worker'
456
+ Requires-Dist: starlette==0.41.3; extra == 'worker'
457
+ Requires-Dist: tenacity==8.5.0; extra == 'worker'
458
+ Requires-Dist: thrift-sasl==0.4.3; extra == 'worker'
459
+ Requires-Dist: thrift==0.16.0; extra == 'worker'
460
+ Requires-Dist: time-machine==2.16.0; extra == 'worker'
461
+ Requires-Dist: toolz==1.0.0; extra == 'worker'
462
+ Requires-Dist: typer==0.15.1; extra == 'worker'
463
+ Requires-Dist: typing-extensions==4.12.2; extra == 'worker'
464
+ Requires-Dist: tzdata==2024.2; extra == 'worker'
465
+ Requires-Dist: tzlocal==5.2; extra == 'worker'
466
+ Requires-Dist: ujson==5.10.0; extra == 'worker'
467
+ Requires-Dist: urllib3==2.3.0; extra == 'worker'
468
+ Requires-Dist: uvicorn==0.34.0; extra == 'worker'
469
+ Requires-Dist: wrapt==1.17.1; extra == 'worker'
470
+ Requires-Dist: yarl==1.18.3; extra == 'worker'
471
+ Requires-Dist: zipp==3.21.0; extra == 'worker'
472
+ Requires-Dist: zstd==1.5.6.1; extra == 'worker'
473
+ Description-Content-Type: text/markdown
474
+
475
+ # Recurve Libraries
476
+
477
+ For the unified maintenance of public components of the Recurve platform,
478
+ these codes may be used in both Server and Executor (Worker) environments.
479
+
480
+ Only Python 3.11+ are supported.
481
+
482
+ ## Components
483
+
484
+ This code repository consists of the following core components:
485
+
486
+ ### Core
487
+ The foundation of the Recurve platform that provides:
488
+
489
+ - Base classes and interfaces for platform components
490
+ - Jinja2 templating engine integration
491
+ - Core configuration management
492
+ - Common platform abstractions
493
+
494
+ ### Utils
495
+ A comprehensive utility library offering:
496
+
497
+ - Time handling and date manipulation
498
+ - Concurrent processing tools
499
+ - File system operations and path handling
500
+ - String manipulation and text processing
501
+ - Logging and error handling utilities
502
+ - Data validation helpers
503
+
504
+ ### Connectors
505
+ A robust data connectivity layer supporting:
506
+ - Database connections (MySQL, PostgreSQL, Redshift, BigQuery, etc.)
507
+ - Cloud storage (S3, GCS, Azure Blob Storage)
508
+ - Messaging services and APIs
509
+ - Custom connector development framework
510
+
511
+ Note: Run `make update-connector-schema` after updating connector config schemas to regenerate config_schema.py
512
+
513
+ ### Schedulers
514
+ Airflow integration components including:
515
+
516
+ - Custom Airflow operators and sensors
517
+ - DAG generation utilities
518
+ - Workflow scheduling interfaces
519
+ - Task dependency management
520
+
521
+ ### Operators
522
+ Task-specific operators for:
523
+
524
+ - Data extraction and loading
525
+ - Data transformation and processing
526
+ - Running Python code
527
+ - Running SQL code
528
+ - Building and running DBT jobs
529
+
530
+
531
+ ### Client
532
+ A flexible client interface providing:
533
+
534
+ - Platform API abstractions
535
+ - Authentication handling
536
+ - Resource management
537
+ - Extensible base classes for custom clients
538
+ - Connection pooling and retry logic
539
+
540
+ ### Executors
541
+
542
+ Core job execution engine that:
543
+
544
+ - Manages job submissions and execution flows
545
+ - Orchestrates task execution on infrastructure
546
+ - Handles job lifecycle and state management
547
+ - Provides infrastructure abstraction layer
548
+
549
+ ## Development Workflow
550
+
551
+ ### Requirements management
552
+
553
+ We use `uv` to manage Python package dependencies. The workflow is:
554
+
555
+ 1. Update source requirements in `.in` files:
556
+ - [`requirements.in`](./requirements.in) - All dependencies
557
+ - [`requirements/worker.in`](requirements/worker.in) - Worker-specific dependencies
558
+ - [`requirements/dbt.in`](requirements/dbt.in) - DBT-specific dependencies
559
+ - [`requirements-dev.in`](requirements-dev.in) - Development dependencies
560
+
561
+ 2. Compile locked requirements:
562
+ ```bash
563
+ make compile-requirements # Compiles all requirements files
564
+ ```
565
+ Or compile individual files:
566
+ ```bash
567
+ make compile-worker # Just worker requirements
568
+ make compile-dbt # Just DBT requirements
569
+ ```
570
+
571
+ 3. After compiling requirements, update optional dependencies in pyproject.toml:
572
+ ```bash
573
+ make update-optional-deps
574
+ ```
575
+
576
+ This ensures consistent dependencies across development and production environments.
577
+
578
+ ### Release Process
579
+
580
+ 1. Update version number in [`recurvedata/__version__.py`](recurvedata/__version__.py)
581
+ 2. Build and publish package:
582
+ ```bash
583
+ make publish
584
+ ```
585
+ This will clean build artifacts, build new package, and publish to Recurve PyPI.
586
+
587
+ ### Available Commands
588
+
589
+ The following make commands are available:
590
+
591
+ Build and Publishing:
592
+ - `make clean` - Remove build artifacts (dist directory)
593
+ - `make build` - Clean and build the package
594
+ - `make publish` - Build and publish package to Recurve PyPI
595
+
596
+ Requirements Management:
597
+ - `make upgrade-uv` - Upgrade the uv package installer
598
+ - `make compile-worker` - Compile worker-specific requirements
599
+ - `make compile-dbt` - Compile DBT-specific requirements
600
+ - `make compile-requirements` - Compile all requirements files and sync environment
601
+ - `make install-requirements` - Install requirements files
602
+
603
+ Maintenance Scripts:
604
+ - `make update-optional-deps` - Update optional dependencies in pyproject.toml
605
+ - `make update-connector-schema` - Update connector configuration schemas