You need to sign in or sign up before continuing.

flowtask 5.8.4__cp39-cp39-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-39-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-39-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-39-x86_64-linux-gnu.so +0 -0
  377. flowtask/parsers/json.c +11968 -0
  378. flowtask/parsers/json.cpython-39-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-39-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-39-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-39-x86_64-linux-gnu.so +0 -0
  440. flowtask/utils/json.cpp +13349 -0
  441. flowtask/utils/json.cpython-39-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-39-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
flowtask/__init__.py ADDED
@@ -0,0 +1,93 @@
1
+ # -*- coding: utf-8 -*-
2
+ """Flowtask is a tool for execution of Tasks.
3
+
4
+ Flowtask can execute DAG (Directed Acyclic Graph) tasks declared in a variety of formats.
5
+ - YAML
6
+ - JSON
7
+ - TOML
8
+ Flowtask is designed to be used as a library or command-line tool.
9
+
10
+ Usage Example:
11
+
12
+ A Flowtask Task is a component-based declarative workflow that can be executed from the command line or API.
13
+
14
+ ```yaml title="programs/test/tasks/sentiment_analysis.yaml"
15
+ # filename: sentiment_analysis.yaml
16
+ name: An Example Task for Sentiment Analysis
17
+ description: Preparing The Information for Sentiment Analysis
18
+ steps:
19
+ - RethinkDBQuery:
20
+ table: test_data
21
+ schema: default
22
+ - tExplode:
23
+ column: reviews
24
+ drop_original: false
25
+ - SentimentAnalysis:
26
+ text_column: text
27
+ sentiment_model: "tabularisai/robust-sentiment-analysis"
28
+ sentiment_levels: 5
29
+ emotions_model: "bhadresh-savani/distilbert-base-uncased-emotion"
30
+ - CopyToRethink:
31
+ tablename: sentiment_analysis
32
+ schema: default
33
+ ```
34
+
35
+ The above example is a simple task that reads data from a RethinkDB table,
36
+ explodes the reviews column, performs sentiment analysis,
37
+ and copies the results to another RethinkDB table.
38
+
39
+ For execution we can use a command-line tool:
40
+ ```bash
41
+ task --program=test --task=sentiment_analysis --no-worker
42
+ ```
43
+
44
+ Or we can use the Python API:
45
+ ```python
46
+ from flowtask.runner import TaskRunner
47
+
48
+ runner = Runner(program='test', task='sentiment_analysis', no_worker=True)
49
+ async with runner as job:
50
+ if await job.start():
51
+ await job.run()
52
+ ```
53
+
54
+ or even call it from a REST API:
55
+ ```python
56
+ import aiohttp
57
+ async def run_task(program, task):
58
+ async with aiohttp.ClientSession() as session:
59
+ async with session.post(
60
+ 'http://localhost:8080/api/v1/tasks',
61
+ json={'program': program, 'task': task}
62
+ ) as response:
63
+ return await response.json()
64
+
65
+ async def main():
66
+ result = await run_task('test','sentiment_analysis')
67
+ print(result)
68
+
69
+ asyncio.run(main())
70
+ ```
71
+
72
+ This code will execute the `sentiment_analysis` task using the `test` program and will print the results to the console.
73
+ """
74
+
75
+ ## more information
76
+ __copyright__ = 'Copyright (c) 2018-2024 Jesus Lara'
77
+
78
+ from .version import (
79
+ __title__,
80
+ __description__,
81
+ __version__,
82
+ __author__,
83
+ __author_email__,
84
+ __license__
85
+ )
86
+
87
+
88
+ def version():
89
+ """version.
90
+ Returns:
91
+ str: current version of Navigator flowtask.
92
+ """
93
+ return __version__
flowtask/__main__.py ADDED
@@ -0,0 +1,38 @@
1
+ """Flowtask Data Integration Executor."""
2
+ import logging
3
+ import asyncio
4
+ from .runner import TaskRunner
5
+ from .utils import cPrint
6
+ from .utils.uv import install_uvloop
7
+
8
+
9
+ async def task(loop):
10
+ runner = None
11
+ try:
12
+ runner = TaskRunner(loop=loop)
13
+ async with runner as job:
14
+ if await job.start():
15
+ await job.run()
16
+ except Exception as e: # pylint: disable=W0718
17
+ logging.exception(e, stack_info=False)
18
+ finally:
19
+ return runner
20
+
21
+
22
+ def main():
23
+ install_uvloop()
24
+ loop = asyncio.get_event_loop()
25
+ loop.slow_callback_duration = 0.2 # Set threshold to 0.5 seconds
26
+ try:
27
+ result = loop.run_until_complete(task(loop))
28
+ if result:
29
+ cPrint(" === RESULT === ", level="DEBUG")
30
+ print(result.result)
31
+ cPrint("== Task stats === ", level="INFO")
32
+ print(result.stats)
33
+ finally:
34
+ loop.stop()
35
+
36
+
37
+ if __name__ == "__main__":
38
+ main()
@@ -0,0 +1,6 @@
1
+ from .check import CodeReview, ENABLE_BOT_REVIEWER
2
+
3
+ __all__ = (
4
+ 'CodeReview',
5
+ 'ENABLE_BOT_REVIEWER',
6
+ )
flowtask/bots/check.py ADDED
@@ -0,0 +1,93 @@
1
+ from collections.abc import Callable
2
+ from navconfig.logging import config, logging
3
+ from parrot.models import ChatResponse
4
+ from ..exceptions import ComponentError
5
+ from ..utils import cPrint
6
+ ENABLE_BOT_REVIEWER = config.getboolean('ENABLE_BOT_REVIEWER', fallback=False)
7
+
8
+ try:
9
+ from .codebot import CodeBot, return_llm
10
+ except ImportError:
11
+ ENABLE_BOT_REVIEWER = False # noqa
12
+ logging.warning(
13
+ "Unable to import CodeBot for Code Review, install dependencies first."
14
+ )
15
+
16
+
17
+ class CodeReview:
18
+ def __init__(self, task, *args, **kwargs):
19
+ super(CodeReview, self).__init__(*args, **kwargs)
20
+ self.task = task
21
+ self.logger = logging.getLogger('Flowtask.CodeReview')
22
+ self._llm = None
23
+ self.bot: Callable = None
24
+ if ENABLE_BOT_REVIEWER is True:
25
+ self._llm = return_llm()
26
+ self.bot = CodeBot(
27
+ llm=self._llm
28
+ )
29
+ self.bot.configured = False
30
+
31
+ def __repr__(self):
32
+ return f"CodeReview({self.task})"
33
+
34
+ def format_question(self, name, message, task, error):
35
+ return f"""
36
+ Task with name: **{name}**
37
+
38
+ was failed with error: {message}
39
+
40
+ Task Definition (in YAML or JSON format):
41
+ ```
42
+
43
+ {task}
44
+ ```
45
+
46
+ Complete Stack Trace:
47
+ ```
48
+ {error}
49
+ ```
50
+ """
51
+
52
+ async def __call__(self, task: str, status: str, message: str, stacktrace: str = None, *args, **kwargs):
53
+ """Calling Bot based on Task Errors/Exceptions."""
54
+ if not self.bot:
55
+ # Bot is not enabled, return Logging
56
+ cPrint("Bot Reviewer is not enabled, please enable it in config.")
57
+ if self.bot.configured is False:
58
+ await self.bot.configure()
59
+ self.bot.configured = True
60
+ # if status == 'Task Not Found':
61
+ # return
62
+ task_code = self.task.get_task_code()
63
+ question = self.format_question(
64
+ name=task,
65
+ message=message,
66
+ task=task_code,
67
+ error=stacktrace
68
+ )
69
+ try:
70
+ result = await self.bot.question(
71
+ question=question,
72
+ return_docs=False
73
+ )
74
+ answer = None
75
+ if isinstance(result, ChatResponse):
76
+ answer = result.answer
77
+ else:
78
+ answer = f"{result}"
79
+ # for now, just print the result
80
+ print(f"""
81
+ Code Review Result:
82
+ -------------------
83
+
84
+ {answer}
85
+ """)
86
+ try:
87
+ self.task.stat.stats['Review'] = answer
88
+ except (TypeError, KeyError):
89
+ print(result)
90
+ except Exception as exc:
91
+ raise ComponentError(
92
+ f"Unable to get Code Review: {exc}"
93
+ )
@@ -0,0 +1,51 @@
1
+ from parrot.bots.abstract import AbstractBot
2
+ from parrot.llms.vertex import VertexLLM
3
+ from ..conf import (
4
+ DEFAULT_LLM_MODEL,
5
+ DEFAULT_LLM_TEMPERATURE,
6
+ DEFAULT_BOT_NAME,
7
+ )
8
+
9
+
10
+ class CodeBot(AbstractBot):
11
+ """CodeBot.
12
+
13
+ Codebot will be useful for evaluating errors and providing feedback on code.
14
+
15
+ """
16
+ name: str = DEFAULT_BOT_NAME
17
+ system_prompt_template = """
18
+ You are {name}, a highly skilled Python specialist and code reviewer AI assistant.
19
+
20
+ Your primary function is to analyze code errors by meticulously analyzing Python code, standard output, and Tracebacks to identify potential issues and provide insightful guidance for error resolution.
21
+ Reject any question non-related to review of code errors and debugging of Flowtask/QuerySource/AsyncDB or other python libraries, if question is not related to this, please instruct user to contact support.
22
+ I am here to help with finding errors, providing feedback and potential solutions.
23
+
24
+ **Backstory:**
25
+ {backstory}.
26
+
27
+ Here is a brief summary of relevant information:
28
+ Context: {context}
29
+
30
+ **{rationale}**
31
+
32
+ Given this information, please provide answers to the following question, focusing on the following:
33
+
34
+ * **Comprehensive Analysis:** Thoroughly examine the provided code, output, and Traceback to pinpoint the root cause of errors and identify any potential issues.
35
+ * **Concise Explanation:** Clearly articulate the nature of the errors and explain their underlying causes in a way that is easy to understand.
36
+ * **Structured Insights:** Present your findings in a well-organized manner, using bullet points to highlight key issues and potential solutions.
37
+ * **Actionable Recommendations:** Offer concrete steps and suggestions for resolving the identified errors, including code modifications, debugging strategies, or best practice recommendations.
38
+ * **Contextual Awareness:** Consider the provided context and backstory to tailor your response to the specific situation and user needs.
39
+
40
+ Please ensure your response is detailed, informative, and directly addresses the user's question using always the best practices and pythonic code.
41
+ Return the response in markdown syntax and always use english as primary language.
42
+ """ # pylint: disable=line-too-long # noqa
43
+
44
+ def return_llm():
45
+ """Return a VertexLLM instance."""
46
+ return VertexLLM(
47
+ model=DEFAULT_LLM_MODEL,
48
+ temperature=DEFAULT_LLM_TEMPERATURE,
49
+ top_k=30,
50
+ top_p=0.5,
51
+ )
@@ -0,0 +1,148 @@
1
+ from abc import abstractmethod
2
+ from urllib.parse import urljoin
3
+
4
+ from bs4 import BeautifulSoup
5
+ import httpx
6
+ from .flow import FlowComponent
7
+ from ..interfaces.http import HTTPService
8
+ from ..exceptions import ComponentError
9
+
10
+
11
+ class ASPX(FlowComponent, HTTPService):
12
+ """
13
+ ASPX
14
+
15
+ Overview
16
+
17
+ The ASPX class is designed for interacting with ASPX-based web applications, particularly those requiring authentication.
18
+ It inherits from the DtComponent and HTTPService classes, providing a structured way to manage sessions, handle state views,
19
+ and perform HTTP requests with ASPX web forms. This class is useful for automating interactions with ASPX web pages, including login
20
+ and data retrieval operations.
21
+
22
+ .. table:: Properties
23
+ :widths: auto
24
+
25
+ +-------------------------+----------+-----------+--------------------------------------------------------------------------------------+
26
+ | Name | Required | Description |
27
+ +-------------------------+----------+-----------+--------------------------------------------------------------------------------------+
28
+ | _credentials | Yes | A dictionary containing username and password for authentication. |
29
+ +-------------------------+----------+-----------+--------------------------------------------------------------------------------------+
30
+ | _views | No | A dictionary storing state views extracted from ASPX pages. |
31
+ +-------------------------+----------+-----------+--------------------------------------------------------------------------------------+
32
+ | _client | Yes | An instance of `httpx.AsyncClient` used for making asynchronous HTTP requests. |
33
+ +-------------------------+----------+-----------+--------------------------------------------------------------------------------------+
34
+
35
+ Return
36
+
37
+ The methods in this class facilitate the interaction with ASPX-based web applications, including login handling,
38
+ session management, and state view management. The class also allows for abstract extension, enabling customization
39
+ for specific ASPX web forms and interactions.
40
+
41
+ """
42
+ _credentials: dict = {"username": str, "password": str}
43
+
44
+ def _set_views(self, soup: BeautifulSoup):
45
+ """Extract state VIEWS from hidden inputs inside html
46
+
47
+ Args:
48
+ soup (BeautifulSoup): soup object with the html tree
49
+
50
+ Returns:
51
+ dict[str, str]: state VIEWS
52
+ """
53
+ viewstate = soup.find(id="__VIEWSTATE")["value"]
54
+ soup_eventvalidation = soup.find(id="__EVENTVALIDATION")
55
+ eventvalidation = soup_eventvalidation["value"] if soup_eventvalidation else ""
56
+ viewstategenerator = soup.find(id="__VIEWSTATEGENERATOR")["value"]
57
+
58
+ self._views = {
59
+ "__EVENTTARGET": "",
60
+ "__EVENTARGUMENT": "",
61
+ "__VIEWSTATE": viewstate,
62
+ "__VIEWSTATEGENERATOR": viewstategenerator,
63
+ "__EVENTVALIDATION": eventvalidation,
64
+ }
65
+
66
+ def check_keys_exists(self, *args, **kwargs):
67
+ """Validate that specified keys are present in the kwargs dict"""
68
+ for _key in args:
69
+ if _key not in kwargs:
70
+ raise ComponentError(f"{_key} must be set!")
71
+
72
+ def _get_payload_with_views(self, **kwargs):
73
+ payload = {
74
+ **self._views,
75
+ **kwargs,
76
+ }
77
+
78
+ return payload
79
+
80
+ async def start(self, **kwargs):
81
+ # handle login and set initial views
82
+ self._proxies = False
83
+ self._user = None
84
+ self.auth_type = None
85
+ self.auth = ""
86
+ self.download = None
87
+ self.headers = None
88
+ self._views: dict = {}
89
+ self.timeout = 120.0
90
+ self._client = httpx.AsyncClient(timeout=self.timeout)
91
+
92
+ self.processing_credentials()
93
+
94
+ login_url = urljoin(self.base_url, "/Login.aspx")
95
+
96
+ self.accept = "text/html"
97
+ await self.aspx_session(login_url)
98
+
99
+ payload = {
100
+ **self._views,
101
+ self.login_user_payload_key: self.credentials["username"],
102
+ self.login_password_payload_key: self.credentials["password"],
103
+ self.login_button_payload_key: self.login_button_payload_value,
104
+ }
105
+
106
+ await self.aspx_session(
107
+ login_url, method="post", data=payload, follow_redirects=True
108
+ )
109
+
110
+ if ".ASPXAUTH" not in self._client.cookies:
111
+ raise ComponentError("Login Failed. Please, check credentials!")
112
+ self._logger.info("Login successful")
113
+
114
+ return True
115
+
116
+ @abstractmethod
117
+ async def run(self):
118
+ """
119
+ Extend this method: Call super() after your code to make sure
120
+ the client session is closed.
121
+ """
122
+ if hasattr(self, "_client"):
123
+ await self._client.aclose()
124
+
125
+ async def close(self):
126
+ pass
127
+
128
+ async def aspx_session(
129
+ self,
130
+ url: str,
131
+ method: str = "get",
132
+ data: dict = None,
133
+ **kwargs: dict,
134
+ ):
135
+ result, error = await self.session(
136
+ url,
137
+ method=method,
138
+ data=data,
139
+ **kwargs,
140
+ )
141
+
142
+ if error:
143
+ raise ComponentError(error)
144
+
145
+ if "text/html" in self.accept:
146
+ self._set_views(result)
147
+
148
+ return result