flowtask 5.8.4__cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. flowtask/__init__.py +93 -0
  2. flowtask/__main__.py +38 -0
  3. flowtask/bots/__init__.py +6 -0
  4. flowtask/bots/check.py +93 -0
  5. flowtask/bots/codebot.py +51 -0
  6. flowtask/components/ASPX.py +148 -0
  7. flowtask/components/AddDataset.py +352 -0
  8. flowtask/components/Amazon.py +523 -0
  9. flowtask/components/AutoTask.py +314 -0
  10. flowtask/components/Azure.py +80 -0
  11. flowtask/components/AzureUsers.py +106 -0
  12. flowtask/components/BaseAction.py +91 -0
  13. flowtask/components/BaseLoop.py +198 -0
  14. flowtask/components/BestBuy.py +800 -0
  15. flowtask/components/CSVToGCS.py +120 -0
  16. flowtask/components/CompanyScraper/__init__.py +1 -0
  17. flowtask/components/CompanyScraper/parsers/__init__.py +6 -0
  18. flowtask/components/CompanyScraper/parsers/base.py +102 -0
  19. flowtask/components/CompanyScraper/parsers/explorium.py +192 -0
  20. flowtask/components/CompanyScraper/parsers/leadiq.py +206 -0
  21. flowtask/components/CompanyScraper/parsers/rocket.py +133 -0
  22. flowtask/components/CompanyScraper/parsers/siccode.py +109 -0
  23. flowtask/components/CompanyScraper/parsers/visualvisitor.py +130 -0
  24. flowtask/components/CompanyScraper/parsers/zoominfo.py +118 -0
  25. flowtask/components/CompanyScraper/scrapper.py +1054 -0
  26. flowtask/components/CopyTo.py +177 -0
  27. flowtask/components/CopyToBigQuery.py +243 -0
  28. flowtask/components/CopyToMongoDB.py +291 -0
  29. flowtask/components/CopyToPg.py +609 -0
  30. flowtask/components/CopyToRethink.py +207 -0
  31. flowtask/components/CreateGCSBucket.py +102 -0
  32. flowtask/components/CreateReport/CreateReport.py +228 -0
  33. flowtask/components/CreateReport/__init__.py +9 -0
  34. flowtask/components/CreateReport/charts/__init__.py +15 -0
  35. flowtask/components/CreateReport/charts/bar.py +51 -0
  36. flowtask/components/CreateReport/charts/base.py +66 -0
  37. flowtask/components/CreateReport/charts/pie.py +64 -0
  38. flowtask/components/CreateReport/utils.py +9 -0
  39. flowtask/components/CustomerSatisfaction.py +196 -0
  40. flowtask/components/DataInput.py +200 -0
  41. flowtask/components/DateList.py +255 -0
  42. flowtask/components/DbClient.py +163 -0
  43. flowtask/components/DialPad.py +146 -0
  44. flowtask/components/DocumentDBQuery.py +200 -0
  45. flowtask/components/DownloadFrom.py +371 -0
  46. flowtask/components/DownloadFromD2L.py +113 -0
  47. flowtask/components/DownloadFromFTP.py +181 -0
  48. flowtask/components/DownloadFromIMAP.py +315 -0
  49. flowtask/components/DownloadFromS3.py +198 -0
  50. flowtask/components/DownloadFromSFTP.py +265 -0
  51. flowtask/components/DownloadFromSharepoint.py +110 -0
  52. flowtask/components/DownloadFromSmartSheet.py +114 -0
  53. flowtask/components/DownloadS3File.py +229 -0
  54. flowtask/components/Dummy.py +59 -0
  55. flowtask/components/DuplicatePhoto.py +411 -0
  56. flowtask/components/EmployeeEvaluation.py +237 -0
  57. flowtask/components/ExecuteSQL.py +323 -0
  58. flowtask/components/ExtractHTML.py +178 -0
  59. flowtask/components/FileBase.py +178 -0
  60. flowtask/components/FileCopy.py +181 -0
  61. flowtask/components/FileDelete.py +82 -0
  62. flowtask/components/FileExists.py +146 -0
  63. flowtask/components/FileIteratorDelete.py +112 -0
  64. flowtask/components/FileList.py +194 -0
  65. flowtask/components/FileOpen.py +75 -0
  66. flowtask/components/FileRead.py +120 -0
  67. flowtask/components/FileRename.py +106 -0
  68. flowtask/components/FilterIf.py +284 -0
  69. flowtask/components/FilterRows/FilterRows.py +200 -0
  70. flowtask/components/FilterRows/__init__.py +10 -0
  71. flowtask/components/FilterRows/functions.py +4 -0
  72. flowtask/components/GCSToBigQuery.py +103 -0
  73. flowtask/components/GoogleA4.py +150 -0
  74. flowtask/components/GoogleGeoCoding.py +344 -0
  75. flowtask/components/GooglePlaces.py +315 -0
  76. flowtask/components/GoogleSearch.py +539 -0
  77. flowtask/components/HTTPClient.py +268 -0
  78. flowtask/components/ICIMS.py +146 -0
  79. flowtask/components/IF.py +179 -0
  80. flowtask/components/IcimsFolderCopy.py +173 -0
  81. flowtask/components/ImageFeatures/__init__.py +5 -0
  82. flowtask/components/ImageFeatures/process.py +233 -0
  83. flowtask/components/IteratorBase.py +251 -0
  84. flowtask/components/LangchainLoader/__init__.py +5 -0
  85. flowtask/components/LangchainLoader/loader.py +194 -0
  86. flowtask/components/LangchainLoader/loaders/__init__.py +22 -0
  87. flowtask/components/LangchainLoader/loaders/abstract.py +362 -0
  88. flowtask/components/LangchainLoader/loaders/basepdf.py +50 -0
  89. flowtask/components/LangchainLoader/loaders/docx.py +91 -0
  90. flowtask/components/LangchainLoader/loaders/html.py +119 -0
  91. flowtask/components/LangchainLoader/loaders/pdfblocks.py +146 -0
  92. flowtask/components/LangchainLoader/loaders/pdfmark.py +79 -0
  93. flowtask/components/LangchainLoader/loaders/pdftables.py +135 -0
  94. flowtask/components/LangchainLoader/loaders/qa.py +67 -0
  95. flowtask/components/LangchainLoader/loaders/txt.py +55 -0
  96. flowtask/components/LeadIQ.py +650 -0
  97. flowtask/components/Loop.py +253 -0
  98. flowtask/components/Lowes.py +334 -0
  99. flowtask/components/MS365Usage.py +156 -0
  100. flowtask/components/MSTeamsMessages.py +320 -0
  101. flowtask/components/MarketClustering.py +1051 -0
  102. flowtask/components/MergeFiles.py +362 -0
  103. flowtask/components/MilvusOutput.py +87 -0
  104. flowtask/components/NearByStores.py +175 -0
  105. flowtask/components/NetworkNinja/__init__.py +6 -0
  106. flowtask/components/NetworkNinja/models/__init__.py +52 -0
  107. flowtask/components/NetworkNinja/models/abstract.py +177 -0
  108. flowtask/components/NetworkNinja/models/account.py +39 -0
  109. flowtask/components/NetworkNinja/models/client.py +19 -0
  110. flowtask/components/NetworkNinja/models/district.py +14 -0
  111. flowtask/components/NetworkNinja/models/events.py +101 -0
  112. flowtask/components/NetworkNinja/models/forms.py +499 -0
  113. flowtask/components/NetworkNinja/models/market.py +16 -0
  114. flowtask/components/NetworkNinja/models/organization.py +34 -0
  115. flowtask/components/NetworkNinja/models/photos.py +125 -0
  116. flowtask/components/NetworkNinja/models/project.py +44 -0
  117. flowtask/components/NetworkNinja/models/region.py +28 -0
  118. flowtask/components/NetworkNinja/models/store.py +203 -0
  119. flowtask/components/NetworkNinja/models/user.py +151 -0
  120. flowtask/components/NetworkNinja/router.py +854 -0
  121. flowtask/components/Odoo.py +175 -0
  122. flowtask/components/OdooInjector.py +192 -0
  123. flowtask/components/OpenFromXML.py +126 -0
  124. flowtask/components/OpenWeather.py +41 -0
  125. flowtask/components/OpenWithBase.py +616 -0
  126. flowtask/components/OpenWithPandas.py +715 -0
  127. flowtask/components/PGPDecrypt.py +199 -0
  128. flowtask/components/PandasIterator.py +187 -0
  129. flowtask/components/PandasToFile.py +189 -0
  130. flowtask/components/Paradox.py +339 -0
  131. flowtask/components/ParamIterator.py +117 -0
  132. flowtask/components/ParseHTML.py +84 -0
  133. flowtask/components/PlacerStores.py +249 -0
  134. flowtask/components/Pokemon.py +507 -0
  135. flowtask/components/PositiveBot.py +62 -0
  136. flowtask/components/PowerPointSlide.py +400 -0
  137. flowtask/components/PrintMessage.py +127 -0
  138. flowtask/components/ProductCompetitors/__init__.py +5 -0
  139. flowtask/components/ProductCompetitors/parsers/__init__.py +7 -0
  140. flowtask/components/ProductCompetitors/parsers/base.py +72 -0
  141. flowtask/components/ProductCompetitors/parsers/bestbuy.py +86 -0
  142. flowtask/components/ProductCompetitors/parsers/lowes.py +103 -0
  143. flowtask/components/ProductCompetitors/scrapper.py +155 -0
  144. flowtask/components/ProductCompliant.py +169 -0
  145. flowtask/components/ProductInfo/__init__.py +1 -0
  146. flowtask/components/ProductInfo/parsers/__init__.py +5 -0
  147. flowtask/components/ProductInfo/parsers/base.py +83 -0
  148. flowtask/components/ProductInfo/parsers/brother.py +97 -0
  149. flowtask/components/ProductInfo/parsers/canon.py +167 -0
  150. flowtask/components/ProductInfo/parsers/epson.py +118 -0
  151. flowtask/components/ProductInfo/parsers/hp.py +131 -0
  152. flowtask/components/ProductInfo/parsers/samsung.py +97 -0
  153. flowtask/components/ProductInfo/scraper.py +319 -0
  154. flowtask/components/ProductPricing.py +118 -0
  155. flowtask/components/QS.py +261 -0
  156. flowtask/components/QSBase.py +201 -0
  157. flowtask/components/QueryIterator.py +273 -0
  158. flowtask/components/QueryToInsert.py +327 -0
  159. flowtask/components/QueryToPandas.py +432 -0
  160. flowtask/components/RESTClient.py +195 -0
  161. flowtask/components/RethinkDBQuery.py +189 -0
  162. flowtask/components/Rsync.py +74 -0
  163. flowtask/components/RunSSH.py +59 -0
  164. flowtask/components/RunShell.py +71 -0
  165. flowtask/components/SalesForce.py +20 -0
  166. flowtask/components/SaveImageBank/__init__.py +257 -0
  167. flowtask/components/SchedulingVisits.py +592 -0
  168. flowtask/components/ScrapPage.py +216 -0
  169. flowtask/components/ScrapSearch.py +79 -0
  170. flowtask/components/SendNotify.py +257 -0
  171. flowtask/components/SentimentAnalysis.py +694 -0
  172. flowtask/components/ServiceScrapper/__init__.py +5 -0
  173. flowtask/components/ServiceScrapper/parsers/__init__.py +1 -0
  174. flowtask/components/ServiceScrapper/parsers/base.py +94 -0
  175. flowtask/components/ServiceScrapper/parsers/costco.py +93 -0
  176. flowtask/components/ServiceScrapper/scrapper.py +199 -0
  177. flowtask/components/SetVariables.py +156 -0
  178. flowtask/components/SubTask.py +182 -0
  179. flowtask/components/SuiteCRM.py +48 -0
  180. flowtask/components/Switch.py +175 -0
  181. flowtask/components/TableBase.py +148 -0
  182. flowtask/components/TableDelete.py +312 -0
  183. flowtask/components/TableInput.py +143 -0
  184. flowtask/components/TableOutput/TableOutput.py +384 -0
  185. flowtask/components/TableOutput/__init__.py +3 -0
  186. flowtask/components/TableSchema.py +534 -0
  187. flowtask/components/Target.py +223 -0
  188. flowtask/components/ThumbnailGenerator.py +156 -0
  189. flowtask/components/ToPandas.py +67 -0
  190. flowtask/components/TransformRows/TransformRows.py +507 -0
  191. flowtask/components/TransformRows/__init__.py +9 -0
  192. flowtask/components/TransformRows/functions.py +559 -0
  193. flowtask/components/TransposeRows.py +176 -0
  194. flowtask/components/UPCDatabase.py +86 -0
  195. flowtask/components/UnGzip.py +171 -0
  196. flowtask/components/Uncompress.py +172 -0
  197. flowtask/components/UniqueRows.py +126 -0
  198. flowtask/components/Unzip.py +107 -0
  199. flowtask/components/UpdateOperationalVars.py +147 -0
  200. flowtask/components/UploadTo.py +299 -0
  201. flowtask/components/UploadToS3.py +136 -0
  202. flowtask/components/UploadToSFTP.py +160 -0
  203. flowtask/components/UploadToSharepoint.py +205 -0
  204. flowtask/components/UserFunc.py +122 -0
  205. flowtask/components/VivaTracker.py +140 -0
  206. flowtask/components/WSDLClient.py +123 -0
  207. flowtask/components/Wait.py +18 -0
  208. flowtask/components/Walmart.py +199 -0
  209. flowtask/components/Workplace.py +134 -0
  210. flowtask/components/XMLToPandas.py +267 -0
  211. flowtask/components/Zammad/__init__.py +41 -0
  212. flowtask/components/Zammad/models.py +0 -0
  213. flowtask/components/ZoomInfoScraper.py +409 -0
  214. flowtask/components/__init__.py +104 -0
  215. flowtask/components/abstract.py +18 -0
  216. flowtask/components/flow.py +530 -0
  217. flowtask/components/google.py +335 -0
  218. flowtask/components/group.py +221 -0
  219. flowtask/components/py.typed +0 -0
  220. flowtask/components/reviewscrap.py +132 -0
  221. flowtask/components/tAutoincrement.py +117 -0
  222. flowtask/components/tConcat.py +109 -0
  223. flowtask/components/tExplode.py +119 -0
  224. flowtask/components/tFilter.py +184 -0
  225. flowtask/components/tGroup.py +236 -0
  226. flowtask/components/tJoin.py +270 -0
  227. flowtask/components/tMap/__init__.py +9 -0
  228. flowtask/components/tMap/functions.py +54 -0
  229. flowtask/components/tMap/tMap.py +450 -0
  230. flowtask/components/tMelt.py +112 -0
  231. flowtask/components/tMerge.py +114 -0
  232. flowtask/components/tOrder.py +93 -0
  233. flowtask/components/tPandas.py +94 -0
  234. flowtask/components/tPivot.py +71 -0
  235. flowtask/components/tPluckCols.py +76 -0
  236. flowtask/components/tUnnest.py +82 -0
  237. flowtask/components/user.py +401 -0
  238. flowtask/conf.py +457 -0
  239. flowtask/download.py +102 -0
  240. flowtask/events/__init__.py +11 -0
  241. flowtask/events/events/__init__.py +20 -0
  242. flowtask/events/events/abstract.py +95 -0
  243. flowtask/events/events/alerts/__init__.py +362 -0
  244. flowtask/events/events/alerts/colfunctions.py +131 -0
  245. flowtask/events/events/alerts/functions.py +158 -0
  246. flowtask/events/events/dummy.py +12 -0
  247. flowtask/events/events/exec.py +124 -0
  248. flowtask/events/events/file/__init__.py +7 -0
  249. flowtask/events/events/file/base.py +51 -0
  250. flowtask/events/events/file/copy.py +23 -0
  251. flowtask/events/events/file/delete.py +16 -0
  252. flowtask/events/events/interfaces/__init__.py +9 -0
  253. flowtask/events/events/interfaces/client.py +67 -0
  254. flowtask/events/events/interfaces/credentials.py +28 -0
  255. flowtask/events/events/interfaces/notifications.py +58 -0
  256. flowtask/events/events/jira.py +122 -0
  257. flowtask/events/events/log.py +26 -0
  258. flowtask/events/events/logerr.py +52 -0
  259. flowtask/events/events/notify.py +59 -0
  260. flowtask/events/events/notify_event.py +160 -0
  261. flowtask/events/events/publish.py +54 -0
  262. flowtask/events/events/sendfile.py +104 -0
  263. flowtask/events/events/task.py +97 -0
  264. flowtask/events/events/teams.py +98 -0
  265. flowtask/events/events/webhook.py +58 -0
  266. flowtask/events/manager.py +287 -0
  267. flowtask/exceptions.c +39393 -0
  268. flowtask/exceptions.cpython-310-x86_64-linux-gnu.so +0 -0
  269. flowtask/extensions/__init__.py +3 -0
  270. flowtask/extensions/abstract.py +82 -0
  271. flowtask/extensions/logging/__init__.py +65 -0
  272. flowtask/hooks/__init__.py +9 -0
  273. flowtask/hooks/actions/__init__.py +22 -0
  274. flowtask/hooks/actions/abstract.py +66 -0
  275. flowtask/hooks/actions/dummy.py +23 -0
  276. flowtask/hooks/actions/jira.py +74 -0
  277. flowtask/hooks/actions/rest.py +320 -0
  278. flowtask/hooks/actions/sampledata.py +37 -0
  279. flowtask/hooks/actions/sensor.py +23 -0
  280. flowtask/hooks/actions/task.py +9 -0
  281. flowtask/hooks/actions/ticket.py +37 -0
  282. flowtask/hooks/actions/zammad.py +55 -0
  283. flowtask/hooks/hook.py +62 -0
  284. flowtask/hooks/models.py +17 -0
  285. flowtask/hooks/service.py +187 -0
  286. flowtask/hooks/step.py +91 -0
  287. flowtask/hooks/types/__init__.py +23 -0
  288. flowtask/hooks/types/base.py +129 -0
  289. flowtask/hooks/types/brokers/__init__.py +11 -0
  290. flowtask/hooks/types/brokers/base.py +54 -0
  291. flowtask/hooks/types/brokers/mqtt.py +35 -0
  292. flowtask/hooks/types/brokers/rabbitmq.py +82 -0
  293. flowtask/hooks/types/brokers/redis.py +83 -0
  294. flowtask/hooks/types/brokers/sqs.py +44 -0
  295. flowtask/hooks/types/fs.py +232 -0
  296. flowtask/hooks/types/http.py +49 -0
  297. flowtask/hooks/types/imap.py +200 -0
  298. flowtask/hooks/types/jira.py +279 -0
  299. flowtask/hooks/types/mail.py +205 -0
  300. flowtask/hooks/types/postgres.py +98 -0
  301. flowtask/hooks/types/responses/__init__.py +8 -0
  302. flowtask/hooks/types/responses/base.py +5 -0
  303. flowtask/hooks/types/sharepoint.py +288 -0
  304. flowtask/hooks/types/ssh.py +141 -0
  305. flowtask/hooks/types/tagged.py +59 -0
  306. flowtask/hooks/types/upload.py +85 -0
  307. flowtask/hooks/types/watch.py +71 -0
  308. flowtask/hooks/types/web.py +36 -0
  309. flowtask/interfaces/AzureClient.py +137 -0
  310. flowtask/interfaces/AzureGraph.py +839 -0
  311. flowtask/interfaces/Boto3Client.py +326 -0
  312. flowtask/interfaces/DropboxClient.py +173 -0
  313. flowtask/interfaces/ExcelHandler.py +94 -0
  314. flowtask/interfaces/FTPClient.py +131 -0
  315. flowtask/interfaces/GoogleCalendar.py +201 -0
  316. flowtask/interfaces/GoogleClient.py +133 -0
  317. flowtask/interfaces/GoogleDrive.py +127 -0
  318. flowtask/interfaces/GoogleGCS.py +89 -0
  319. flowtask/interfaces/GoogleGeocoding.py +93 -0
  320. flowtask/interfaces/GoogleLang.py +114 -0
  321. flowtask/interfaces/GooglePub.py +61 -0
  322. flowtask/interfaces/GoogleSheet.py +68 -0
  323. flowtask/interfaces/IMAPClient.py +137 -0
  324. flowtask/interfaces/O365Calendar.py +113 -0
  325. flowtask/interfaces/O365Client.py +220 -0
  326. flowtask/interfaces/OneDrive.py +284 -0
  327. flowtask/interfaces/Outlook.py +155 -0
  328. flowtask/interfaces/ParrotBot.py +130 -0
  329. flowtask/interfaces/SSHClient.py +378 -0
  330. flowtask/interfaces/Sharepoint.py +496 -0
  331. flowtask/interfaces/__init__.py +36 -0
  332. flowtask/interfaces/azureauth.py +119 -0
  333. flowtask/interfaces/cache.py +201 -0
  334. flowtask/interfaces/client.py +82 -0
  335. flowtask/interfaces/compress.py +525 -0
  336. flowtask/interfaces/credentials.py +124 -0
  337. flowtask/interfaces/d2l.py +239 -0
  338. flowtask/interfaces/databases/__init__.py +5 -0
  339. flowtask/interfaces/databases/db.py +223 -0
  340. flowtask/interfaces/databases/documentdb.py +55 -0
  341. flowtask/interfaces/databases/rethink.py +39 -0
  342. flowtask/interfaces/dataframes/__init__.py +11 -0
  343. flowtask/interfaces/dataframes/abstract.py +21 -0
  344. flowtask/interfaces/dataframes/arrow.py +71 -0
  345. flowtask/interfaces/dataframes/dt.py +69 -0
  346. flowtask/interfaces/dataframes/pandas.py +167 -0
  347. flowtask/interfaces/dataframes/polars.py +60 -0
  348. flowtask/interfaces/db.py +263 -0
  349. flowtask/interfaces/env.py +46 -0
  350. flowtask/interfaces/func.py +137 -0
  351. flowtask/interfaces/http.py +1780 -0
  352. flowtask/interfaces/locale.py +40 -0
  353. flowtask/interfaces/log.py +75 -0
  354. flowtask/interfaces/mask.py +143 -0
  355. flowtask/interfaces/notification.py +154 -0
  356. flowtask/interfaces/playwright.py +339 -0
  357. flowtask/interfaces/powerpoint.py +368 -0
  358. flowtask/interfaces/py.typed +0 -0
  359. flowtask/interfaces/qs.py +376 -0
  360. flowtask/interfaces/result.py +87 -0
  361. flowtask/interfaces/selenium_service.py +779 -0
  362. flowtask/interfaces/smartsheet.py +154 -0
  363. flowtask/interfaces/stat.py +39 -0
  364. flowtask/interfaces/task.py +96 -0
  365. flowtask/interfaces/template.py +118 -0
  366. flowtask/interfaces/vectorstores/__init__.py +1 -0
  367. flowtask/interfaces/vectorstores/abstract.py +133 -0
  368. flowtask/interfaces/vectorstores/milvus.py +669 -0
  369. flowtask/interfaces/zammad.py +107 -0
  370. flowtask/models.py +193 -0
  371. flowtask/parsers/__init__.py +15 -0
  372. flowtask/parsers/_yaml.c +11978 -0
  373. flowtask/parsers/_yaml.cpython-310-x86_64-linux-gnu.so +0 -0
  374. flowtask/parsers/argparser.py +235 -0
  375. flowtask/parsers/base.c +15155 -0
  376. flowtask/parsers/base.cpython-310-x86_64-linux-gnu.so +0 -0
  377. flowtask/parsers/json.c +11968 -0
  378. flowtask/parsers/json.cpython-310-x86_64-linux-gnu.so +0 -0
  379. flowtask/parsers/maps.py +49 -0
  380. flowtask/parsers/toml.c +11968 -0
  381. flowtask/parsers/toml.cpython-310-x86_64-linux-gnu.so +0 -0
  382. flowtask/plugins/__init__.py +16 -0
  383. flowtask/plugins/components/__init__.py +0 -0
  384. flowtask/plugins/handler/__init__.py +45 -0
  385. flowtask/plugins/importer.py +31 -0
  386. flowtask/plugins/sources/__init__.py +0 -0
  387. flowtask/runner.py +283 -0
  388. flowtask/scheduler/__init__.py +9 -0
  389. flowtask/scheduler/functions.py +493 -0
  390. flowtask/scheduler/handlers/__init__.py +8 -0
  391. flowtask/scheduler/handlers/manager.py +504 -0
  392. flowtask/scheduler/handlers/models.py +58 -0
  393. flowtask/scheduler/handlers/service.py +72 -0
  394. flowtask/scheduler/notifications.py +65 -0
  395. flowtask/scheduler/scheduler.py +993 -0
  396. flowtask/services/__init__.py +0 -0
  397. flowtask/services/bots/__init__.py +0 -0
  398. flowtask/services/bots/telegram.py +264 -0
  399. flowtask/services/files/__init__.py +11 -0
  400. flowtask/services/files/manager.py +522 -0
  401. flowtask/services/files/model.py +37 -0
  402. flowtask/services/files/service.py +767 -0
  403. flowtask/services/jira/__init__.py +3 -0
  404. flowtask/services/jira/jira_actions.py +191 -0
  405. flowtask/services/tasks/__init__.py +13 -0
  406. flowtask/services/tasks/launcher.py +213 -0
  407. flowtask/services/tasks/manager.py +323 -0
  408. flowtask/services/tasks/service.py +275 -0
  409. flowtask/services/tasks/task_manager.py +376 -0
  410. flowtask/services/tasks/tasks.py +155 -0
  411. flowtask/storages/__init__.py +16 -0
  412. flowtask/storages/exceptions.py +12 -0
  413. flowtask/storages/files/__init__.py +8 -0
  414. flowtask/storages/files/abstract.py +29 -0
  415. flowtask/storages/files/filesystem.py +66 -0
  416. flowtask/storages/tasks/__init__.py +19 -0
  417. flowtask/storages/tasks/abstract.py +26 -0
  418. flowtask/storages/tasks/database.py +33 -0
  419. flowtask/storages/tasks/filesystem.py +108 -0
  420. flowtask/storages/tasks/github.py +119 -0
  421. flowtask/storages/tasks/memory.py +45 -0
  422. flowtask/storages/tasks/row.py +25 -0
  423. flowtask/tasks/__init__.py +0 -0
  424. flowtask/tasks/abstract.py +526 -0
  425. flowtask/tasks/command.py +118 -0
  426. flowtask/tasks/pile.py +486 -0
  427. flowtask/tasks/py.typed +0 -0
  428. flowtask/tasks/task.py +778 -0
  429. flowtask/template/__init__.py +161 -0
  430. flowtask/tests.py +257 -0
  431. flowtask/types/__init__.py +8 -0
  432. flowtask/types/typedefs.c +11347 -0
  433. flowtask/types/typedefs.cpython-310-x86_64-linux-gnu.so +0 -0
  434. flowtask/utils/__init__.py +24 -0
  435. flowtask/utils/constants.py +117 -0
  436. flowtask/utils/encoders.py +21 -0
  437. flowtask/utils/executor.py +112 -0
  438. flowtask/utils/functions.cpp +14280 -0
  439. flowtask/utils/functions.cpython-310-x86_64-linux-gnu.so +0 -0
  440. flowtask/utils/json.cpp +13349 -0
  441. flowtask/utils/json.cpython-310-x86_64-linux-gnu.so +0 -0
  442. flowtask/utils/mail.py +63 -0
  443. flowtask/utils/parseqs.c +13324 -0
  444. flowtask/utils/parserqs.cpython-310-x86_64-linux-gnu.so +0 -0
  445. flowtask/utils/stats.py +308 -0
  446. flowtask/utils/transformations.py +74 -0
  447. flowtask/utils/uv.py +12 -0
  448. flowtask/utils/validators.py +97 -0
  449. flowtask/version.py +11 -0
  450. flowtask-5.8.4.dist-info/LICENSE +201 -0
  451. flowtask-5.8.4.dist-info/METADATA +209 -0
  452. flowtask-5.8.4.dist-info/RECORD +470 -0
  453. flowtask-5.8.4.dist-info/WHEEL +6 -0
  454. flowtask-5.8.4.dist-info/entry_points.txt +3 -0
  455. flowtask-5.8.4.dist-info/top_level.txt +2 -0
  456. plugins/components/CreateQR.py +39 -0
  457. plugins/components/TestComponent.py +28 -0
  458. plugins/components/Use1.py +13 -0
  459. plugins/components/Workplace.py +117 -0
  460. plugins/components/__init__.py +3 -0
  461. plugins/sources/__init__.py +0 -0
  462. plugins/sources/get_populartimes.py +78 -0
  463. plugins/sources/google.py +150 -0
  464. plugins/sources/hubspot.py +679 -0
  465. plugins/sources/icims.py +679 -0
  466. plugins/sources/mobileinsight.py +501 -0
  467. plugins/sources/newrelic.py +262 -0
  468. plugins/sources/uap.py +268 -0
  469. plugins/sources/venu.py +244 -0
  470. plugins/sources/vocinity.py +314 -0
@@ -0,0 +1,93 @@
1
+ import asyncio
2
+ from typing import Union
3
+ from collections.abc import Callable
4
+ from ..exceptions import ComponentError, ConfigError
5
+ from .tPandas import tPandas
6
+
7
+ class tOrder(tPandas):
8
+ """
9
+ tOrder
10
+
11
+ Overview
12
+
13
+ The `tOrder` class is a component designed to order a Pandas DataFrame by a specified column.
14
+ It allows sorting the DataFrame either in ascending or descending order based on the specified column.
15
+
16
+ Properties
17
+
18
+ .. table:: Properties
19
+ :widths: auto
20
+
21
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
22
+ | Name | Required | Type | Description |
23
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
24
+ | columns | Yes | str | The name of the column to sort the DataFrame by. |
25
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
26
+ | ascending | No | bool | Specifies whether to sort the DataFrame in ascending order. Defaults to True. |
27
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
28
+
29
+ Return
30
+ The dataframe ordinated by the column give it in the order_by either ascending or descending.
31
+
32
+
33
+
34
+ Example:
35
+
36
+ ```yaml
37
+ tOrder:
38
+ columns:
39
+ - district_id
40
+ ascending: true
41
+ ```
42
+
43
+ """ # noqa
44
+
45
+ def __init__(
46
+ self,
47
+ loop: asyncio.AbstractEventLoop = None,
48
+ job: Callable = None,
49
+ stat: Callable = None,
50
+ **kwargs,
51
+ ):
52
+ """Init Method."""
53
+ self._column: Union[str, list] = kwargs.pop("columns", None)
54
+ if isinstance(self._column, list):
55
+ ascending = [True for x in self._column]
56
+ elif isinstance(self._column, str):
57
+ ascending = [True]
58
+ self._column = [self._column]
59
+ self._ascending: Union[bool, list] = kwargs.pop("ascending", ascending)
60
+ if not self._column:
61
+ raise ConfigError(
62
+ "tOrder requires a column for ordering => **columns**"
63
+ )
64
+ super().__init__(loop=loop, job=job, stat=stat, **kwargs)
65
+
66
+ async def _run(self):
67
+ try:
68
+ # Check if the specified column exists in the DataFrame
69
+ columns = self.data.columns
70
+ for col in self._column:
71
+ if col not in columns:
72
+ self._logger.warning(
73
+ f"The column '{self._column}' does not exist in the DataFrame."
74
+ )
75
+ return self.data # Return the unsorted DataFrame
76
+ # Check if the specified column is empty
77
+ if self.data[self._column].empty:
78
+ self._logger.warning(
79
+ f"The column '{self._column}' is empty."
80
+ )
81
+ return self.data
82
+ # Sort the DataFrame by the specified column
83
+ df = self.data.sort_values(
84
+ by=self._column,
85
+ ascending=self._ascending,
86
+ **self.pd_args
87
+ ).reset_index(drop=True)
88
+ self.add_metric('ORDER_BY', self._column)
89
+ return df
90
+ except Exception as err:
91
+ raise ComponentError(
92
+ f"Generic Error on Data: error: {err}"
93
+ ) from err
@@ -0,0 +1,94 @@
1
+ import asyncio
2
+ from typing import Any, Union
3
+ from collections.abc import Callable
4
+ import pandas
5
+ from pandas import DataFrame
6
+ from ..exceptions import ComponentError, DataNotFound
7
+ from .flow import FlowComponent
8
+
9
+
10
+ class tPandas(FlowComponent):
11
+ """
12
+ tPandas
13
+
14
+ Overview
15
+
16
+ The tPandas class is an abstract interface for performing various data transformations on Pandas DataFrames.
17
+ It provides foundational methods and structure for components that need to apply transformations, merges, or other
18
+ DataFrame operations within a task.
19
+
20
+ This interface provides methods to initialize, transform, and debug Pandas DataFrame operations.
21
+ Concrete implementations using `tPandas` can define specific transformations. On execution, metrics
22
+ for rows and columns are recorded, and any transformation errors or data mismatches are raised as exceptions
23
+ with detailed error messages for effective debugging.
24
+ """
25
+
26
+ def __init__(
27
+ self,
28
+ loop: asyncio.AbstractEventLoop = None,
29
+ job: Callable = None,
30
+ stat: Callable = None,
31
+ **kwargs,
32
+ ):
33
+ """Init Method."""
34
+ self.df1: Union[DataFrame, Any] = None
35
+ self.df2: Union[DataFrame, Any] = None
36
+ self.type: str = None
37
+ self.condition: str = ''
38
+ # Pandas Arguments:
39
+ self.pd_args = kwargs.pop("pd_args", {})
40
+ super().__init__(loop=loop, job=job, stat=stat, **kwargs)
41
+
42
+ async def start(self, **kwargs):
43
+ if self.previous:
44
+ self.data: DataFrame = self.input
45
+
46
+ if hasattr(self, "_multi") and self._multi:
47
+ self.df1: DataFrame = self.previous[0].output()
48
+ try:
49
+ self.df2: DataFrame = self.previous[1].output()
50
+ except IndexError:
51
+ self.df2 = None
52
+ else:
53
+ if not isinstance(self.data, DataFrame):
54
+ raise ComponentError("Incompatible Pandas Dataframe", status=404)
55
+ else:
56
+ raise DataNotFound("Data Not Found", status=404)
57
+
58
+ await super().start(**kwargs)
59
+ return True
60
+
61
+ async def close(self):
62
+ pass
63
+
64
+ async def run(self):
65
+ self._result = self.data
66
+ try:
67
+ df = await self._run()
68
+ if df.empty:
69
+ raise DataNotFound(
70
+ f"Data not Found over {self.__name__}"
71
+ )
72
+ self._result = df
73
+ self.add_metric("NUM_ROWS", self._result.shape[0])
74
+ self.add_metric("NUM_COLUMNS", self._result.shape[1])
75
+ if self._debug:
76
+ print(f"Debugging: {self.__name__} ===")
77
+ print(self._result)
78
+ columns = list(self._result.columns)
79
+ for column in columns:
80
+ t = self._result[column].dtype
81
+ print(
82
+ column, "->", t, "->", self._result[column].iloc[0]
83
+ )
84
+ return self._result
85
+ except DataNotFound:
86
+ raise
87
+ except (ValueError, KeyError) as err:
88
+ raise ComponentError(
89
+ f"{self.__name__} Error: {err!s}"
90
+ ) from err
91
+ except Exception as err:
92
+ raise ComponentError(
93
+ f"{self.__name__} Exception {err!s}"
94
+ ) from err
@@ -0,0 +1,71 @@
1
+ import asyncio
2
+ from typing import Union
3
+ from collections.abc import Callable
4
+ from ..exceptions import ComponentError, ConfigError
5
+ from .tPandas import tPandas
6
+
7
+ class tPivot(tPandas):
8
+ """
9
+ tPivot
10
+
11
+ Overview
12
+
13
+ Pivoting a Dataframe to transpose a column into other columns.
14
+
15
+ Properties
16
+
17
+ .. table:: Properties
18
+ :widths: auto
19
+
20
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
21
+ | Name | Required | Type | Description |
22
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
23
+ | columns | Yes | list | The List of Columns to be Pivoted. |
24
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
25
+ | index | No | list | List of columns to be preserved, default to all columns less "values" |
26
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
27
+ | values | Yes | str | Columns that transpose the values for pivoted column(s). |
28
+ +------------------+----------+-----------+-----------------------------------------------------------------------------------+
29
+
30
+ Return
31
+ The dataframe Pivoted by "columns" with values using the list of "values".
32
+
33
+ """ # noqa
34
+ def __init__(
35
+ self,
36
+ loop: asyncio.AbstractEventLoop = None,
37
+ job: Callable = None,
38
+ stat: Callable = None,
39
+ **kwargs,
40
+ ):
41
+ """Init Method."""
42
+ self._columns: Union[str, list] = kwargs.pop("columns", None)
43
+ self._index: list = kwargs.pop("index", [])
44
+ self._values: list = kwargs.pop("values", [])
45
+ self._aggfunc: str = kwargs.pop('aggfunc', 'sum')
46
+ self._sort: list = kwargs.pop('sort_by', [])
47
+ super().__init__(
48
+ loop=loop, job=job, stat=stat, **kwargs
49
+ )
50
+
51
+ async def _run(self):
52
+ try:
53
+ df_pivot = self.data.pivot_table(
54
+ index=self._index,
55
+ columns=self._columns,
56
+ values=self._values,
57
+ aggfunc=self._aggfunc,
58
+ dropna=False
59
+ ).reset_index()
60
+ # Renaming the columns to match the desired output
61
+ df_pivot.columns.name = None # Remove the index name
62
+ if self._sort:
63
+ df_pivot = df_pivot.sort_values(
64
+ by=self._sort,
65
+ ascending=True
66
+ ).reset_index(drop=True)
67
+ return df_pivot
68
+ except Exception as err:
69
+ raise ComponentError(
70
+ f"Generic Error on Data: error: {err}"
71
+ ) from err
@@ -0,0 +1,76 @@
1
+ import asyncio
2
+ from typing import List
3
+ from collections.abc import Callable
4
+ import pandas
5
+ from ..exceptions import ComponentError
6
+ from .tPandas import tPandas
7
+
8
+
9
+ class tPluckCols(tPandas):
10
+ """
11
+ tPluckCols
12
+
13
+ Overview
14
+
15
+ The tPluckCols class is a component for selecting a specific subset of columns from a Pandas DataFrame.
16
+ It provides a streamlined way to filter columns, allowing only specified columns to be retained in the output.
17
+
18
+ .. table:: Properties
19
+ :widths: auto
20
+
21
+ +-------------+----------+-----------+---------------------------------------------------------------+
22
+ | Name | Required | Summary |
23
+ +-------------+----------+-----------+---------------------------------------------------------------+
24
+ | columns | Yes | A list of column names to retain in the DataFrame. |
25
+ +-------------+----------+-----------+---------------------------------------------------------------+
26
+
27
+ Returns
28
+
29
+ This component returns a Pandas DataFrame containing only the specified columns listed in `columns`.
30
+ If no columns are provided, it raises an error. The resulting DataFrame is a copy to ensure
31
+ any modifications do not affect the original DataFrame.
32
+
33
+
34
+ Example:
35
+
36
+ ```yaml
37
+ tPluckCols:
38
+ depends:
39
+ - TransformRows_11
40
+ columns:
41
+ - location_code
42
+ - ss_market
43
+ - store_id
44
+ - store_number
45
+ - company_id
46
+ - pt_ft
47
+ - is_covered
48
+ - endcap
49
+ - rev_band
50
+ - comparison_store
51
+ ```
52
+
53
+ """ #noqa
54
+
55
+
56
+
57
+ def __init__(
58
+ self,
59
+ loop: asyncio.AbstractEventLoop = None,
60
+ job: Callable = None,
61
+ stat: Callable = None,
62
+ **kwargs,
63
+ ):
64
+ """Init Method."""
65
+ self.columns: List = None
66
+ super(tPluckCols, self).__init__(loop=loop, job=job, stat=stat, **kwargs)
67
+
68
+ async def start(self, **kwargs):
69
+ """Obtain Pandas Dataframe."""
70
+ await super().start(**kwargs)
71
+ if not self.columns:
72
+ raise ComponentError("Error: need to specify a list of *columns*")
73
+ return True
74
+
75
+ async def _run(self):
76
+ return self.data[self.columns].copy()
@@ -0,0 +1,82 @@
1
+ import asyncio
2
+ from collections.abc import Callable
3
+ from ..exceptions import ComponentError, ConfigError
4
+ from .tPandas import tPandas
5
+
6
+
7
+ class tUnnest(tPandas):
8
+ """
9
+ tUnnest
10
+
11
+ Overview
12
+
13
+ The tUnnest class is a component for splitting a column in a DataFrame into multiple rows, based on a specified
14
+ separator. This component supports options to drop the original column after splitting and to define a new column
15
+ for the split values.
16
+
17
+ .. table:: Properties
18
+ :widths: auto
19
+
20
+ +----------------+----------+-----------+---------------------------------------------------------------+
21
+ | Name | Required | Summary |
22
+ +----------------+----------+-----------+---------------------------------------------------------------+
23
+ | source_column | Yes | The name of the column to split into multiple rows. |
24
+ +----------------+----------+-----------+---------------------------------------------------------------+
25
+ | destination | No | The name of the column to store the split values. Defaults to source. |
26
+ +----------------+----------+-----------+---------------------------------------------------------------+
27
+ | drop_source | No | Boolean indicating if the original column should be dropped after split.|
28
+ +----------------+----------+-----------+---------------------------------------------------------------+
29
+ | separator | No | The separator used to split the values. Defaults to ", ". |
30
+ +----------------+----------+-----------+---------------------------------------------------------------+
31
+
32
+ Returns
33
+
34
+ This component returns a DataFrame where the specified `source_column` is split into multiple rows based on the
35
+ `separator`. If `drop_source` is set to True, the original column is removed after the split. Errors related to
36
+ column splitting are logged and raised as exceptions.
37
+
38
+
39
+ Example:
40
+
41
+ ```yaml
42
+ tUnnest:
43
+ source_column: warehouse_store_ids
44
+ destination: store_id
45
+ drop_source: true
46
+ ```
47
+
48
+ """ #noqa
49
+ def __init__(
50
+ self,
51
+ loop: asyncio.AbstractEventLoop = None,
52
+ job: Callable = None,
53
+ stat: Callable = None,
54
+ **kwargs,
55
+ ):
56
+ """Init Method."""
57
+ self.source_column: str = kwargs.pop('source_column', None)
58
+ self.destination: str = kwargs.get('destination', None)
59
+ self.drop_source: bool = kwargs.get('drop_source', False)
60
+ self.separator: str = kwargs.get('separator', ', ')
61
+ if not self.source_column:
62
+ raise ConfigError(
63
+ "Missing Source_column for making unnest."
64
+ )
65
+ super().__init__(loop=loop, job=job, stat=stat, **kwargs)
66
+
67
+ async def _run(self):
68
+ try:
69
+ # Split the column into multiple rows
70
+ df = self.data.assign(
71
+ **{
72
+ self.destination: self.data[self.source_column].str.split(self.separator)
73
+ }
74
+ ).explode(self.destination)
75
+ if self.drop_source is True:
76
+ # Drop the original column
77
+ df = df.drop(columns=[self.source_column])
78
+ return df
79
+ except Exception as err:
80
+ raise ComponentError(
81
+ f"Unknown error {err!s}"
82
+ ) from err