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,262 @@
1
+ from typing import Any
2
+ from querysource.exceptions import (
3
+ DriverError,
4
+ QueryError,
5
+ DataNotFound,
6
+ ConfigError
7
+ )
8
+ from querysource.providers.sources import restSource
9
+
10
+ gql = '''
11
+ {{
12
+ actor {{
13
+ account(id: {account_id}) {{
14
+ nrql(timeout: 120 query: "{sql}") {{
15
+ results
16
+ }}
17
+ }}
18
+ }}
19
+ }}
20
+ '''
21
+
22
+
23
+ class newrelic(restSource):
24
+ """
25
+ New Relic NQL
26
+ API for get events from NewRelic
27
+ """
28
+ url: str = 'https://api.newrelic.com/graphql'
29
+ nrql = "SELECT {fields} FROM {object} {options}"
30
+ auth_type: str = 'api_key'
31
+ method: str = 'post' # All calls will be POST
32
+ data_format: str = 'json'
33
+ accept: str = "*/*"
34
+
35
+ def __post_init__(
36
+ self,
37
+ definition: dict = None,
38
+ conditions: dict = None,
39
+ request: Any = None,
40
+ **kwargs
41
+ ) -> None:
42
+
43
+ args = {}
44
+ print('NewRelic CONDITIONS> ', conditions)
45
+ self._query: dict = {}
46
+ self._range: str = '7 DAYS'
47
+ self._limit: str = 'MAX'
48
+ self.auth: dict = {
49
+ "API-Key": None
50
+ }
51
+ try:
52
+ self.type = definition.params['type']
53
+ except (ValueError, AttributeError):
54
+ self.type = None
55
+
56
+ if 'type' in self._conditions:
57
+ self.type = self._conditions['type']
58
+ del self._conditions['type']
59
+
60
+ if 'range' in self._conditions:
61
+ self._range = self._conditions['range']
62
+ del self._conditions['range']
63
+
64
+ if 'limit' in self._conditions:
65
+ self._limit = self._conditions['limit']
66
+ del self._conditions['limit']
67
+
68
+ if 'account_id' not in self._conditions:
69
+ self._conditions['account_id'] = self._env.get('NEW_RELIC_ACCOUNT')
70
+ if not self._conditions['account_id']:
71
+ try:
72
+ self._conditions['account_id'] = definition.params['account_id']
73
+ except (ValueError, AttributeError) as ex:
74
+ raise ConfigError(
75
+ "NewRelic: Missing Account ID"
76
+ ) from ex
77
+ if 'api_key' in self._conditions:
78
+ self.auth['API-Key'] = self._conditions['api_key']
79
+ del self._conditions['api_key']
80
+ else:
81
+ self.auth['API-Key'] = self._env.get('NEW_RELIC_API_KEY')
82
+ if not self.auth['API-Key']:
83
+ try:
84
+ self.auth['API-Key'] = definition.params['api_key']
85
+ except (ValueError, AttributeError) as ex:
86
+ raise ConfigError(
87
+ "NewRelic: Missing API Key"
88
+ ) from ex
89
+
90
+ # can build the Query
91
+ try:
92
+ self._fields = self._conditions['fields']
93
+ del self._conditions['fields']
94
+ except KeyError:
95
+ self._fields = '*'
96
+ # event name
97
+ try:
98
+ self._event = self._conditions['event']
99
+ del self._conditions['event']
100
+ except KeyError:
101
+ self._event = 'Agents'
102
+
103
+ ## URL parameters
104
+ self._args = args
105
+
106
+ if self.type == 'eventlist':
107
+ self._query = gql.format(
108
+ account_id=self._conditions['account_id'],
109
+ sql="SHOW EVENT TYPES SINCE 30 days AGO"
110
+ )
111
+ elif self.type == 'events':
112
+ try:
113
+ sql = self.nrql.format(
114
+ fields=self._fields,
115
+ object=self._event,
116
+ options=f'SINCE {self._range} AGO LIMIT {self._limit}'
117
+ )
118
+ except Exception as err:
119
+ print(err)
120
+ raise
121
+ self._query = gql.format(
122
+ account_id=self._conditions['account_id'],
123
+ sql=sql
124
+ )
125
+ elif self.type == 'agents':
126
+ sql = self.nrql.format(
127
+ fields=self._fields,
128
+ object='Agents',
129
+ options=f'SINCE {self._range} AGO LIMIT {self._limit}'
130
+ )
131
+ self._query = gql.format(
132
+ account_id=self._conditions['account_id'],
133
+ sql=sql
134
+ )
135
+ elif self.type == 'sip':
136
+ sql = self.nrql.format(
137
+ fields=self._fields,
138
+ object='Sip',
139
+ options=f'SINCE {self._range} AGO TIMESERIES'
140
+ )
141
+ self._query = gql.format(
142
+ account_id=self._conditions['account_id'],
143
+ sql=sql
144
+ )
145
+
146
+ async def eventlist(self):
147
+ try:
148
+ query = gql.format(
149
+ account_id=self._conditions['account_id'],
150
+ sql="SHOW EVENT TYPES SINCE 30 days AGO"
151
+ )
152
+ except KeyError as err:
153
+ self.logger.error(f'NewRelic: Missing key: {err}')
154
+ try:
155
+ self._result = await self.query(query)
156
+ return self._result
157
+ except Exception as ex:
158
+ self.logger.exception(ex)
159
+ raise QueryError(
160
+ f"NewRelic: {ex}"
161
+ ) from ex
162
+
163
+ async def events(self):
164
+ try:
165
+ sql = self.nrql.format(
166
+ fields=self._fields,
167
+ object=self._event,
168
+ options=f'SINCE {self._range} AGO LIMIT {self._limit}'
169
+ )
170
+ except Exception as err:
171
+ print(err)
172
+ raise
173
+ query = gql.format(
174
+ account_id=self._conditions['account_id'],
175
+ sql=sql
176
+ )
177
+ try:
178
+ self._result = await self.query(query)
179
+ return self._result
180
+ except Exception as ex:
181
+ self.logger.exception(ex)
182
+ raise QueryError(
183
+ f"NewRelic: {ex}"
184
+ ) from ex
185
+
186
+ async def sip(self):
187
+ sql = self.nrql.format(
188
+ fields=self._fields,
189
+ object='Sip',
190
+ options=f'SINCE {self._range} AGO TIMESERIES'
191
+ )
192
+ query = gql.format(
193
+ account_id=self._conditions['account_id'],
194
+ sql=sql
195
+ )
196
+ try:
197
+ self._result = await self.query(query)
198
+ return self._result
199
+ except Exception as ex:
200
+ self.logger.exception(ex)
201
+ raise QueryError(
202
+ f"NewRelic: {ex}"
203
+ ) from ex
204
+
205
+ async def agents(self):
206
+ sql = self.nrql.format(
207
+ fields=self._fields,
208
+ object='Agents',
209
+ options=f'SINCE {self._range} AGO LIMIT {self._limit}'
210
+ )
211
+ query = gql.format(
212
+ account_id=self._conditions['account_id'],
213
+ sql=sql
214
+ )
215
+ try:
216
+ self._result = await self.query(query)
217
+ return self._result
218
+ except Exception as ex:
219
+ self.logger.exception(ex)
220
+ raise QueryError(
221
+ f"NewRelic: {ex}"
222
+ ) from ex
223
+
224
+ async def query(self, data: str = None):
225
+ result = None
226
+ if not data:
227
+ data = self._query
228
+ if not data:
229
+ raise DriverError(
230
+ "New Relic: GraphQL query is missing"
231
+ )
232
+ try:
233
+ result, error = await self.request(
234
+ self.url,
235
+ self.method,
236
+ data=data
237
+ )
238
+ if not result:
239
+ raise DataNotFound(
240
+ f"NewRelic: No Data was found: {error}".format(error)
241
+ )
242
+ elif error:
243
+ raise DriverError(str(error))
244
+ elif 'errors' in result:
245
+ raise DriverError(result['errors'][0]['message'])
246
+ except DataNotFound:
247
+ raise
248
+ except Exception as ex:
249
+ self.logger.exception(ex)
250
+ raise QueryError(
251
+ f"NewRelic: {ex}"
252
+ ) from ex
253
+ # if result then
254
+ try:
255
+ # {'data': {'actor': {'account': {'nrql': {'results'
256
+ result = result['data']['actor']['account']['nrql']['results']
257
+ except (ValueError, KeyError) as ex:
258
+ raise QueryError(
259
+ f'NewRelic: Incorrect Data result format: {ex}'
260
+ ) from ex
261
+ self._result = result
262
+ return result
plugins/sources/uap.py ADDED
@@ -0,0 +1,268 @@
1
+ from typing import Any
2
+ from urllib.parse import urlencode
3
+ from asyncdb.exceptions import NoDataFound, ProviderError
4
+ from navconfig.logging import logging
5
+ from querysource.exceptions import DataNotFound, DriverError, QueryException
6
+ from querysource.providers.sources import restSource
7
+
8
+
9
+ class uap(restSource):
10
+ """UAP.
11
+
12
+ Get all information from UAP API
13
+ """
14
+ base_url: str = 'https://{uap_url}/api/v1/{type}'
15
+ type = 'adp_workers'
16
+ _token = ''
17
+ _page = 1
18
+ _more_results: bool = True
19
+ _page_size: int = 1000
20
+
21
+ def __post_init__(
22
+ self,
23
+ definition: dict = None,
24
+ conditions: dict = None,
25
+ request: Any = None,
26
+ **kwargs
27
+ ) -> None:
28
+
29
+ args = {}
30
+
31
+ print('UAP CONDITIONS> ', conditions)
32
+ try:
33
+ self._program = self._conditions['var']
34
+ del self._conditions['var']
35
+ except KeyError:
36
+ self._program = None
37
+
38
+ if 'program' in self._conditions:
39
+ self._program = self._conditions['program']
40
+ del self._conditions['program']
41
+
42
+ try:
43
+ self.type = definition.params['type']
44
+ except (ValueError, AttributeError):
45
+ try:
46
+ self.type = self.kwargs['method']
47
+ except KeyError:
48
+ pass
49
+
50
+ if 'type' in self._conditions:
51
+ self.type = self._conditions['type']
52
+ del self._conditions['type']
53
+
54
+ if 'method' in self._conditions:
55
+ self.type = self._conditions['method']
56
+ del self._conditions['method']
57
+
58
+ # define type of function:
59
+ args['type'] = self.type
60
+
61
+ # authentication
62
+ if 'token' not in conditions:
63
+ self._token = self._env.get('UAP_TOKEN')
64
+ if not self._token:
65
+ try:
66
+ self._token = definition.params['token']
67
+ except (ValueError, AttributeError) as ex:
68
+ raise ValueError(
69
+ "UAP: Token missing"
70
+ ) from ex
71
+ else:
72
+ self._token = self._conditions['token']
73
+ del self._conditions['token']
74
+
75
+ try:
76
+ host = definition.params['host']
77
+ except (KeyError, ValueError, AttributeError):
78
+ host = 'uap.trocglobal.com'
79
+
80
+ args['uap_url'] = self._env.get(
81
+ 'UAP_API',
82
+ fallback=host
83
+ )
84
+
85
+ try:
86
+ self._page_size = self._conditions['pagesize']
87
+ del self._conditions['pagesize']
88
+ except (ValueError, KeyError):
89
+ try:
90
+ self._page_size = definition.params['pagesize']
91
+ except (AttributeError, KeyError):
92
+ pass
93
+
94
+ self._conditions['page_size'] = self._page_size
95
+
96
+ try:
97
+ self._more_results = self._conditions['more_results']
98
+ del self._conditions['more_results']
99
+ except (ValueError, KeyError):
100
+ self._more_results = True
101
+
102
+ try:
103
+ self._pages = self._conditions['pages']
104
+ del self._conditions['pages']
105
+ except (ValueError, KeyError):
106
+ self._pages = None
107
+
108
+ self._headers = {
109
+ "Authorization": f"Token {self._token}",
110
+ "Accept-Encoding": "gzip, deflate, br",
111
+ "Content-Type": "application/json",
112
+ "Host": host,
113
+ **self._headers
114
+ }
115
+
116
+ try:
117
+ del self._conditions['refresh']
118
+ del self._conditions['ENV']
119
+ except (KeyError, ValueError, TypeError):
120
+ pass
121
+
122
+ if self.type in ('adp-workers', 'adp_workers'):
123
+ self.url = 'https://{uap_url}/api/v1/adp-workers'
124
+ else:
125
+ if not self._program:
126
+ self.url = 'https://{uap_url}/api/v1/volt/{type}'
127
+ else:
128
+ self.url = 'https://{uap_url}/api/v1/volt/{type}/{program}'
129
+
130
+ ## URL parameters
131
+ self._args = args
132
+
133
+ async def get_next_result(self, result):
134
+ r = result['results']
135
+ _next = True
136
+ while _next is True:
137
+ if self._pages:
138
+ if self._page > self._pages:
139
+ # no more pages
140
+ break
141
+ self._page = self._page + 1
142
+ url = self.build_url(self.url, queryparams=urlencode(
143
+ {"page": self._page}
144
+ )
145
+ )
146
+ print(f'Fetching page {self._page}')
147
+ try:
148
+ res, error = await self.request(url)
149
+ if res:
150
+ pg = res['pagination']
151
+ r = r + res['results']
152
+ _next = bool(pg['next'])
153
+ else:
154
+ print('Error Continue')
155
+ print(error)
156
+ continue
157
+ except Exception as err: # pylint: disable=W0703
158
+ print('Error HERE')
159
+ print(err)
160
+ _next = False
161
+ print(':: Returning Results')
162
+ return r
163
+
164
+ async def adp_workers(self):
165
+ self.type = 'adp-workers'
166
+ self._args['type'] = self.type
167
+ try:
168
+ self._result = await self.query()
169
+ return self._result
170
+ except Exception as err:
171
+ logging.exception(str(err))
172
+ raise
173
+
174
+
175
+ async def events(self):
176
+ self.type = 'events'
177
+ self._args['type'] = self.type
178
+ self._args['program'] = self._program
179
+ try:
180
+ self._result = await self.query()
181
+ return self._result
182
+ except Exception as e: # pylint: disable=W0703
183
+ logging.exception(e)
184
+ return False
185
+
186
+ async def users(self):
187
+ self.type = 'users'
188
+ self._args['type'] = self.type
189
+ self._args['program'] = self._program
190
+ try:
191
+ self._result = await self.query()
192
+ return self._result
193
+ except Exception as e: # pylint: disable=W0703
194
+ logging.exception(e)
195
+ return False
196
+
197
+
198
+ async def query(self, url:str = None, params: dict = None, data: dict = None): # pylint: disable=W0237
199
+ self._result = None
200
+ if url:
201
+ self._args['program'] = self._program
202
+ self.url = self.build_url(
203
+ url,
204
+ queryparams=urlencode(params)
205
+ )
206
+ else:
207
+ self._args['program'] = self._program
208
+ # create URL
209
+ self.url = self.build_url(
210
+ self.url,
211
+ args=self._args,
212
+ queryparams=urlencode(self._conditions)
213
+ )
214
+ try:
215
+ result, error = await self.request(
216
+ self.url, self.method, data=data
217
+ )
218
+ if not result:
219
+ raise DataNotFound(
220
+ f"UAP: No Data was found: {error}"
221
+ )
222
+ elif error:
223
+ raise DriverError(str(error))
224
+ else:
225
+ try:
226
+ if result['errorCode']:
227
+ raise NoDataFound(
228
+ message=result['errorMessage'],
229
+ code=result['errorCode']
230
+ )
231
+ except (TypeError, KeyError):
232
+ pass
233
+ # processing data:
234
+ pagination = {}
235
+ try:
236
+ pagination = result['pagination']
237
+ except KeyError:
238
+ pagination['next'] = False
239
+ if self._more_results is True and bool(pagination['next']) is True:
240
+ self._result = await self.get_next_result(result)
241
+ else:
242
+ try:
243
+ self._result = result['results']
244
+ except (TypeError, KeyError) as ex:
245
+ raise DataNotFound(
246
+ "Data not found: {ex}"
247
+ ) from ex
248
+ return self._result
249
+ except (DataNotFound, NoDataFound) as err:
250
+ raise DataNotFound(
251
+ str(err)
252
+ ) from err
253
+ except NoDataFound as err:
254
+ print("UAP NO DATA FOUND: === ", err)
255
+ raise DataNotFound(
256
+ message=str(err)
257
+ ) from err
258
+ except (ProviderError, DriverError) as err:
259
+ print("UAP PROVIDER ERROR: === ", err)
260
+ raise DriverError(
261
+ message=err.message, code=err.status_code
262
+ ) from err
263
+ except Exception as err:
264
+ print("UAP ERROR: === ", err)
265
+ self._result = None
266
+ raise QueryException(
267
+ message=str(err)
268
+ ) from err