flowtask 5.8.4__cp312-cp312-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-312-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-312-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-312-x86_64-linux-gnu.so +0 -0
  377. flowtask/parsers/json.c +11968 -0
  378. flowtask/parsers/json.cpython-312-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-312-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-312-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-312-x86_64-linux-gnu.so +0 -0
  440. flowtask/utils/json.cpp +13349 -0
  441. flowtask/utils/json.cpython-312-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-312-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,117 @@
1
+ import pprint
2
+ from asyncdb.utils.types import SafeDict
3
+ from flowtask.components import UserComponent
4
+ from settings.settings import WORKPLACE_ACCESS_TOKEN
5
+
6
+ class Workplace(UserComponent):
7
+ _messages_url = 'https://graph.facebook.com/{thread_id}/messages?access_token={access_token}&limit=20&user={member_id}&fields=id,message,created_time,attachments,from,to,tags'
8
+ _members_url = 'https://graph.facebook.com/community/members?access_token={access_token}&limit=100&fields=member_id,first_name,last_name,name,email,title,organization,division,department,primary_phone,primary_address,picture,link,locale,updated_time,account_invite_time,account_claim_time,account_deactivate_time,external_id,start_date,about,cost_center,work_locale,frontline,active'
9
+ _member_threads = 'https://graph.facebook.com/{member_id}/conversations/?access_token={access_token}&limit=100&fields=id,name,subject,participants,updated_time,messages'
10
+ accept = 'application/json'
11
+
12
+ async def start(self, **kwargs):
13
+ ## Access Token
14
+ if hasattr(self, 'access_token'):
15
+ access_token = self.access_token
16
+ else:
17
+ access_token = WORKPLACE_ACCESS_TOKEN
18
+ # Workplaces APIs.
19
+ if self.type == 'messages':
20
+ self.member_id = self.set_variables(self.member_id)
21
+ self.thread_id = self.set_variables(self.thread_id)
22
+ self.messages_url = self._messages_url.format_map(
23
+ SafeDict(
24
+ access_token=access_token,
25
+ member_id=self.member_id,
26
+ thread_id=self.thread_id,
27
+ )
28
+ )
29
+ self._kwargs = {
30
+ "url": self.messages_url,
31
+ "method": "get"
32
+ }
33
+ elif self.type == 'members':
34
+ self.members_url = self._members_url.format_map(SafeDict(access_token=access_token))
35
+ self._kwargs = {
36
+ "url": self.members_url,
37
+ "method": "get"
38
+ }
39
+ elif self.type == 'member_threads':
40
+ self.member_id = self.set_variables(self.member_id)
41
+ self.member_threads_url = self._member_threads.format_map(
42
+ SafeDict(access_token=access_token, member_id=self.member_id)
43
+ )
44
+ self._kwargs = {
45
+ "url": self.member_threads_url,
46
+ "method": "get"
47
+ }
48
+
49
+ async def run(self):
50
+ results = []
51
+ result = await self.session(
52
+ **self._kwargs
53
+ )
54
+ if not result:
55
+ return False
56
+ if 'data' in result:
57
+ results += result['data']
58
+ if 'paging' in result:
59
+ url = result['paging']['next'] if 'next' in result['paging'] else None
60
+ while url is not None:
61
+ self._kwargs['url'] = url
62
+ resultset = await self.session(
63
+ **self._kwargs
64
+ )
65
+ results += resultset['data']
66
+ if 'paging' in result:
67
+ url = resultset['paging']['next'] if 'next' in resultset['paging'] else None
68
+ else:
69
+ url = None
70
+ # Iterate over a field to download more results:
71
+ if hasattr(self, 'page_over'):
72
+ columns = self.page_over
73
+ for row in results:
74
+ for column in columns:
75
+ try:
76
+ rw = row[column]
77
+ except KeyError:
78
+ # there is no messages in this thread
79
+ continue
80
+ if 'data' in rw:
81
+ # replacing "data" with current value of data:
82
+ row[column] = row[column]['data']
83
+ if 'paging' in row[column]:
84
+ url = row[column]['paging']['next'] if 'next' in row[column]['paging'] else None
85
+ while url is not None:
86
+ resultset = await self.session(
87
+ url=url,
88
+ method='get'
89
+ )
90
+ row[column] += resultset['data']
91
+ if 'paging' in result:
92
+ url = resultset['paging']['next'] if 'next' in resultset['paging'] else None
93
+ else:
94
+ url = None
95
+ if hasattr(self, 'flatten_cols'):
96
+ columns = self.flatten_cols
97
+ for row in results:
98
+ for column in columns:
99
+ try:
100
+ if 'data' in row[column]:
101
+ # replacing "data" with current value of data:
102
+ row[column] = row[column]['data']
103
+ except KeyError:
104
+ # there is no column in this thread
105
+ continue
106
+ # Create a Dataframe from Results:
107
+ self._result = self.create_dataframe(results)
108
+ if self.type == 'member_threads':
109
+ # add the value of member_id over all rows:
110
+ self._result['member_id'] = self.member_id
111
+ elif self.type == 'messages':
112
+ self._result['member_id'] = self.member_id
113
+ self._result['thread_id'] = self.thread_id
114
+ return self._result
115
+
116
+ async def close(self):
117
+ pass
@@ -0,0 +1,3 @@
1
+ """
2
+ Directory for saving user-defined components and functions.
3
+ """
File without changes
@@ -0,0 +1,78 @@
1
+ import logging
2
+ import copy
3
+ from querysource.exceptions import *
4
+ from asyncdb.exceptions import NoDataFound
5
+ import populartimes
6
+ import livepopulartimes
7
+ import numpy as np
8
+ from .rest import restSource
9
+
10
+ def resume_populartimes(data):
11
+ hours = np.array([data[i]['data'] for i in range(len(data))]).T
12
+ #visits_by_hour = []{'{}h'.format(str(i)): np.sum(hours[i]) for i in range(len(hours))}
13
+ visits_by_hour = [{"hour": i,f"{i}h": np.sum(hours[i])} for i in range(len(hours))]
14
+ visits = [{'day': data[i]['name'].lower(),'{}_total'.format(data[i]['name']).lower() :np.sum(data[i]['data']),'{}_avg'.format(data[i]['name']).lower():np.mean(data[i]['data'])} for i in range(len(data))]
15
+ hours = {x['name']:x['data'] for x in data}
16
+ result = {"visits": visits,"visits_by_hour": visits_by_hour, "hours": hours}
17
+ # for key,val in cols.items():
18
+ # result[key] = val
19
+ return result
20
+
21
+
22
+ class get_populartimes(restSource):
23
+ """
24
+ PopularTimes Google API
25
+ Get populartimes from api
26
+ """
27
+ _url = ''
28
+ _place_id = ''
29
+
30
+ def __init__(self, definition=None, params={}, loop=None, env=None):
31
+ super(get_populartimes, self).__init__(definition, params, loop, env)
32
+ conditions = copy.deepcopy(params)
33
+ try:
34
+ self.type = definition.params['type']
35
+ except (ValueError, KeyError):
36
+ self.type = 'get_id'
37
+
38
+ try:
39
+ self.api_key = conditions['api_key']
40
+ del conditions['api_key']
41
+ except (ValueError, KeyError):
42
+ try:
43
+ self.api_key = definition.params['api_key']
44
+ except (ValueError, KeyError):
45
+ raise "PopularTimes: No API KEY defined"
46
+
47
+ # Place ID
48
+ try:
49
+ self._place_id = conditions['place_id']
50
+ except (ValueError, KeyError):
51
+ raise
52
+
53
+ async def connect(self):
54
+ result = None
55
+ if self.type == 'get_id':
56
+ try:
57
+ result = livepopulartimes.get_populartimes_by_PlaceID(self.api_key, self._place_id)
58
+ except Exception as err:
59
+ print('ERROR: ', err)
60
+ return False
61
+ try:
62
+ if result:
63
+ try:
64
+ pt = result['populartimes']
65
+ popular = resume_populartimes(pt)
66
+ result = {
67
+ **result,
68
+ **popular
69
+ }
70
+ except Exception as err:
71
+ print(err)
72
+ except KeyError:
73
+ # store doesnt have PopularTimes
74
+ pass
75
+ except (ValueError, TypeError):
76
+ raise NoDataFound("PopularTimes Error: Empty Result")
77
+ finally:
78
+ return result
@@ -0,0 +1,150 @@
1
+ import populartimes
2
+ import livepopulartimes
3
+ import time
4
+ import copy
5
+ from asyncdb.exceptions import ProviderError, NoDataFound
6
+ from querysource.exceptions import DriverError
7
+ from .rest import restSource
8
+
9
+
10
+ class google(restSource):
11
+ """
12
+ Google API
13
+ Get all information from Google API (MAPS, geolocation, etc).
14
+ """
15
+ method: str = 'GET'
16
+
17
+ def __init__(self, definition=None, params: dict = {}, **kwargs):
18
+ self._place_id = ''
19
+ super(google, self).__init__(definition, params, **kwargs)
20
+
21
+ conditions = copy.deepcopy(params)
22
+
23
+ try:
24
+ self.type = definition.params['type']
25
+ except (ValueError, KeyError):
26
+ self.type = None
27
+
28
+ if 'type' in params:
29
+ self.type = params['type']
30
+ del params['type']
31
+
32
+ try:
33
+ self.api_key = params['api_key']
34
+ del params['api_key']
35
+ except (ValueError, KeyError):
36
+ try:
37
+ self.api_key = definition.params['api_key']
38
+ except (ValueError, AttributeError, KeyError):
39
+ raise "Google: No API KEY defined"
40
+
41
+ # get other params
42
+ conditions['sensor'] = 'false'
43
+ if self.type == 'textsearch':
44
+ conditions['query'] = conditions['filter']
45
+ try:
46
+ del conditions['filter']
47
+ del conditions['filterdate']
48
+ del conditions['refresh']
49
+ del conditions['place_id']
50
+ except (KeyError, ValueError, TypeError):
51
+ pass
52
+ try:
53
+ conditions['type'] = definition.params['store_type']
54
+ except (KeyError, ValueError, TypeError):
55
+ pass
56
+ self.url = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
57
+ elif self.type == 'place_details':
58
+ # Place ID
59
+ if not 'place_id' in conditions and 'placeid' in conditions:
60
+ conditions['place_id'] = conditions['placeid']
61
+ try:
62
+ self._place_id = conditions['place_id']
63
+ except (ValueError, KeyError):
64
+ raise
65
+ try:
66
+ del conditions['filter']
67
+ del conditions['placeid']
68
+ except (KeyError, ValueError, TypeError):
69
+ pass
70
+ self.url = 'https://maps.googleapis.com/maps/api/place/details/json'
71
+ elif self.type == 'nearby':
72
+ conditions['query'] = conditions['filter']
73
+ try:
74
+ del conditions['filter']
75
+ del conditions['filterdate']
76
+ del conditions['refresh']
77
+ except (KeyError, ValueError, TypeError):
78
+ pass
79
+ try:
80
+ conditions['location'] = "{},{}".format(conditions['lat'], conditions['lng'])
81
+ del conditions['lng']
82
+ del conditions['lat']
83
+ except (KeyError, ValueError, TypeError):
84
+ pass
85
+ try:
86
+ conditions['radius'] = conditions['radius']
87
+ except (KeyError, ValueError, TypeError):
88
+ conditions['radius'] = 10000
89
+ self.url = 'https://maps.googleapis.com/maps/api/place/textsearch/json'
90
+ try:
91
+ if conditions['required_fields']:
92
+ conditions['fields'] = conditions['required_fields']
93
+ del conditions['required_fields']
94
+ except (KeyError, ValueError, TypeError):
95
+ pass
96
+ try:
97
+ if definition.params['store_type']:
98
+ conditions['type'] = definition.params['store_type']
99
+ except (KeyError, ValueError, TypeError):
100
+ pass
101
+ # API key
102
+ conditions['key'] = self.api_key
103
+ self._params = conditions
104
+
105
+ # create URL
106
+ #self._url = self.build_url(self._url, args = None, queryparams = urlencode(conditions))
107
+
108
+ async def get_next_result(self, result):
109
+ r = []
110
+ token = result['next_page_token']
111
+ time.sleep(3)
112
+ if self.type == 'textsearch':
113
+ url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?pagetoken={token}&key={key}'.format(token=token,key=self.api_key)
114
+ elif self.type == 'nearby':
115
+ url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?pagetoken={token}&key={key}'.format(token=token,key=self.api_key)
116
+ try:
117
+ r = await self.request(url)
118
+ if r["status"] and r["status"] == "OK":
119
+ return r
120
+ else:
121
+ return []
122
+ except Exception as err:
123
+ print(err)
124
+ return []
125
+
126
+
127
+ async def query(self, url: str = None, params: dict = {}):
128
+ result = await super(google, self).query(url, params)
129
+ resultset = None
130
+ try:
131
+ if self.type == 'textsearch' or self.type == 'nearby':
132
+ resultset = result['results']
133
+ # TODO build the iteration based on next page token
134
+ try:
135
+ #TODO making recursive queries
136
+ if result['next_page_token']:
137
+ r = await self.get_next_result(result)
138
+ resultset = [*resultset, *r["results"]]
139
+ if r['next_page_token']:
140
+ r = await self.get_next_result(r)
141
+ resultset = [*resultset, *r["results"]]
142
+ except(KeyError, ValueError):
143
+ pass
144
+ result = resultset
145
+ elif self.type == 'place_details':
146
+ result = result['result']
147
+ except Exception as err:
148
+ raise NoDataFound(f"Google Error: {err!s}")
149
+ finally:
150
+ return result