flowtask 5.12.2__tar.gz → 5.12.4__tar.gz

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 (828) hide show
  1. {flowtask-5.12.2 → flowtask-5.12.4}/PKG-INFO +5 -3
  2. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CallAnalysis.py +83 -1
  3. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWithBase.py +7 -9
  4. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWithPandas.py +15 -9
  5. flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/__init__.py +5 -0
  6. flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/loader.py +439 -0
  7. flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/payload.py +26 -0
  8. flowtask-5.12.4/flowtask/components/SearchQuery.py +204 -0
  9. flowtask-5.12.4/flowtask/components/tFlatten.py +141 -0
  10. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/categories.json +1 -0
  11. flowtask-5.12.4/flowtask/documentation/generated/components/CreateReport.doc.json +49 -0
  12. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PandasToFile.doc.json +4 -0
  13. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/RESTClient.doc.json +4 -0
  14. flowtask-5.12.4/flowtask/documentation/generated/components/SearchQuery.doc.json +53 -0
  15. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/index.json +403 -508
  16. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/notify_event.py +8 -1
  17. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/local.py +9 -0
  18. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/__init__.py +4 -0
  19. flowtask-5.12.4/flowtask/interfaces/search.py +589 -0
  20. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +2 -0
  21. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +2 -0
  22. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_blocks.py +5 -1
  23. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/clock_event.py +5 -0
  24. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/runner.py +8 -6
  25. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/version.py +1 -1
  26. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/PKG-INFO +5 -3
  27. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/SOURCES.txt +8 -0
  28. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/requires.txt +4 -2
  29. {flowtask-5.12.2 → flowtask-5.12.4}/pyproject.toml +29 -6
  30. {flowtask-5.12.2 → flowtask-5.12.4}/CONTRIBUTING.md +0 -0
  31. {flowtask-5.12.2 → flowtask-5.12.4}/INSTALL +0 -0
  32. {flowtask-5.12.2 → flowtask-5.12.4}/LICENSE +0 -0
  33. {flowtask-5.12.2 → flowtask-5.12.4}/MANIFEST.in +0 -0
  34. {flowtask-5.12.2 → flowtask-5.12.4}/README.md +0 -0
  35. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/__init__.py +0 -0
  36. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/__main__.py +0 -0
  37. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/__init__.py +0 -0
  38. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/check.py +0 -0
  39. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/codebot.py +0 -0
  40. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ASPX.py +0 -0
  41. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ATT.py +0 -0
  42. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AddDataset.py +0 -0
  43. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Amazon.py +0 -0
  44. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AutoTask.py +0 -0
  45. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Azure.py +0 -0
  46. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AzureUsers.py +0 -0
  47. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BaseAction.py +0 -0
  48. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BaseLoop.py +0 -0
  49. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BestBuy.py +0 -0
  50. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CSVToGCS.py +0 -0
  51. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CallSummary.py +0 -0
  52. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CensusData.py +0 -0
  53. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CensusVariables.py +0 -0
  54. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/__init__.py +0 -0
  55. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
  56. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
  57. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
  58. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
  59. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
  60. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
  61. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
  62. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
  63. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/scrapper.py +0 -0
  64. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromBase.py +0 -0
  65. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromS3.py +0 -0
  66. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromSharepoint.py +0 -0
  67. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyTo.py +0 -0
  68. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToBigQuery.py +0 -0
  69. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToFileBase.py +0 -0
  70. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToMongoDB.py +0 -0
  71. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToPg.py +0 -0
  72. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToRethink.py +0 -0
  73. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToS3.py +0 -0
  74. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToSharepoint.py +0 -0
  75. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Costco.py +0 -0
  76. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateGCSBucket.py +0 -0
  77. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/CreateReport.py +0 -0
  78. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/__init__.py +0 -0
  79. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/__init__.py +0 -0
  80. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/bar.py +0 -0
  81. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/base.py +0 -0
  82. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/pie.py +0 -0
  83. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/utils.py +0 -0
  84. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CustomerSatisfaction.py +0 -0
  85. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DataInput.py +0 -0
  86. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DateList.py +0 -0
  87. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DbClient.py +0 -0
  88. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DialPad.py +0 -0
  89. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DispatchMe.py +0 -0
  90. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DocumentDBQuery.py +0 -0
  91. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFrom.py +0 -0
  92. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromD2L.py +0 -0
  93. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromFTP.py +0 -0
  94. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromGamma.py +0 -0
  95. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromIMAP.py +0 -0
  96. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromS3.py +0 -0
  97. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSFTP.py +0 -0
  98. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSharepoint.py +0 -0
  99. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSmartSheet.py +0 -0
  100. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSmartsheet.py +0 -0
  101. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadS3File.py +0 -0
  102. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Dummy.py +0 -0
  103. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DuplicatePhoto.py +0 -0
  104. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/EmployeeEvaluation.py +0 -0
  105. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExecuteSQL.py +0 -0
  106. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExtractHTML.py +0 -0
  107. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExtractTranscript.py +0 -0
  108. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileBase.py +0 -0
  109. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileCopy.py +0 -0
  110. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileDelete.py +0 -0
  111. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileExists.py +0 -0
  112. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileIteratorDelete.py +0 -0
  113. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileList.py +0 -0
  114. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileOpen.py +0 -0
  115. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileRead.py +0 -0
  116. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileRename.py +0 -0
  117. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterIf.py +0 -0
  118. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/FilterRows.py +0 -0
  119. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/__init__.py +0 -0
  120. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/functions.py +0 -0
  121. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GCSToBigQuery.py +0 -0
  122. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GenData.py +0 -0
  123. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleA4.py +0 -0
  124. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleGeoCoding.py +0 -0
  125. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GooglePlaces.py +0 -0
  126. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleSearch.py +0 -0
  127. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/HTTPClient.py +0 -0
  128. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ICIMS.py +0 -0
  129. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IF.py +0 -0
  130. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IcimsFolderCopy.py +0 -0
  131. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ImageFeatures/__init__.py +0 -0
  132. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ImageFeatures/process.py +0 -0
  133. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IteratorBase.py +0 -0
  134. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/LeadIQ.py +0 -0
  135. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Loop.py +0 -0
  136. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Lowes.py +0 -0
  137. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MS365Usage.py +0 -0
  138. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MSTeamsMessages.py +0 -0
  139. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MarkdownMaker.py +0 -0
  140. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MarketClustering.py +0 -0
  141. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MergeFileList.py +0 -0
  142. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MergeFiles.py +0 -0
  143. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MilvusOutput.py +0 -0
  144. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NearByStores.py +0 -0
  145. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/__init__.py +0 -0
  146. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
  147. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
  148. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/account.py +0 -0
  149. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/client.py +0 -0
  150. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/district.py +0 -0
  151. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/events.py +0 -0
  152. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/forms.py +0 -0
  153. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/market.py +0 -0
  154. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/organization.py +0 -0
  155. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/photos.py +0 -0
  156. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/project.py +0 -0
  157. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/region.py +0 -0
  158. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/store.py +0 -0
  159. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/user.py +0 -0
  160. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/router.py +0 -0
  161. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinjaClaims.py +0 -0
  162. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NextStopAgent.py +0 -0
  163. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Odoo.py +0 -0
  164. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OdooInjector.py +0 -0
  165. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenFromXML.py +0 -0
  166. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenStreetMap.py +0 -0
  167. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWeather.py +0 -0
  168. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PDFGenerator.py +0 -0
  169. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PGPDecrypt.py +0 -0
  170. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasIterator.py +0 -0
  171. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasToFile.py +0 -0
  172. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasToPowerPoint.py +0 -0
  173. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Paradox.py +0 -0
  174. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParamIterator.py +0 -0
  175. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParrotLoader/__init__.py +0 -0
  176. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParrotLoader/loader.py +0 -0
  177. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParseHTML.py +0 -0
  178. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PgVectorOutput.py +0 -0
  179. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PlacerStores.py +0 -0
  180. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PlanogramCompliance.py +0 -0
  181. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PodcastMaker.py +0 -0
  182. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Pokemon.py +0 -0
  183. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PositiveBot.py +0 -0
  184. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PowerPointSlide.py +0 -0
  185. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PrintMessage.py +0 -0
  186. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/__init__.py +0 -0
  187. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
  188. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
  189. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
  190. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
  191. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
  192. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompliant.py +0 -0
  193. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/__init__.py +0 -0
  194. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
  195. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/base.py +0 -0
  196. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
  197. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
  198. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
  199. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
  200. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
  201. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/scraper.py +0 -0
  202. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductPricing.py +0 -0
  203. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductReportBot.py +0 -0
  204. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QS.py +0 -0
  205. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QSBase.py +0 -0
  206. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryIterator.py +0 -0
  207. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryToInsert.py +0 -0
  208. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryToPandas.py +0 -0
  209. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RESTClient.py +0 -0
  210. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RethinkDBQuery.py +0 -0
  211. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Rsync.py +0 -0
  212. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RunSSH.py +0 -0
  213. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RunShell.py +0 -0
  214. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SAPExtraction.py +0 -0
  215. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SMSAnalysis.py +0 -0
  216. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SMSSummary.py +0 -0
  217. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SalesForce.py +0 -0
  218. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Sassie.py +0 -0
  219. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SaveImageBank/__init__.py +0 -0
  220. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SchedulingVisits.py +0 -0
  221. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapPage.py +0 -0
  222. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapSearch.py +0 -0
  223. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapTool.py +0 -0
  224. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendEmail.py +0 -0
  225. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/__init__.py +0 -0
  226. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/component.py +0 -0
  227. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/__init__.py +0 -0
  228. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/abstract.py +0 -0
  229. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/zoom.py +0 -0
  230. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SentimentAnalysis.py +0 -0
  231. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/__init__.py +0 -0
  232. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
  233. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
  234. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
  235. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
  236. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SetVariables.py +0 -0
  237. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SplitPDF.py +0 -0
  238. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Staples.py +0 -0
  239. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SubTask.py +0 -0
  240. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SuiteCRM.py +0 -0
  241. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Switch.py +0 -0
  242. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableBase.py +0 -0
  243. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableDelete.py +0 -0
  244. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableInput.py +0 -0
  245. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableOutput/TableOutput.py +0 -0
  246. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableOutput/__init__.py +0 -0
  247. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableSchema.py +0 -0
  248. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Target.py +0 -0
  249. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ThumbnailGenerator.py +0 -0
  250. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ToPandas.py +0 -0
  251. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/TransformRows.py +0 -0
  252. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/__init__.py +0 -0
  253. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/functions.py +0 -0
  254. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransposeRows.py +0 -0
  255. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UPCDatabase.py +0 -0
  256. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UnGzip.py +0 -0
  257. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Uncompress.py +0 -0
  258. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UniqueRows.py +0 -0
  259. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Unzip.py +0 -0
  260. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UpdateOperationalVars.py +0 -0
  261. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadTo.py +0 -0
  262. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToS3.py +0 -0
  263. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToSFTP.py +0 -0
  264. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToSharepoint.py +0 -0
  265. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UserFunc.py +0 -0
  266. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/VideoUnderstanding.py +0 -0
  267. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/VivaTracker.py +0 -0
  268. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/WSDLClient.py +0 -0
  269. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Wait.py +0 -0
  270. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Walmart.py +0 -0
  271. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/__init__.py +0 -0
  272. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/__init__.py +0 -0
  273. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/applicant.py +0 -0
  274. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/candidate.py +0 -0
  275. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/cost_center.py +0 -0
  276. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
  277. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_posting.py +0 -0
  278. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_posting_site.py +0 -0
  279. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_requisition.py +0 -0
  280. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/location.py +0 -0
  281. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
  282. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/organizations.py +0 -0
  283. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/reference.py +0 -0
  284. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_block.py +0 -0
  285. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_off_balance.py +0 -0
  286. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_request.py +0 -0
  287. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/worker.py +0 -0
  288. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/__init__.py +0 -0
  289. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
  290. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
  291. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
  292. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
  293. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
  294. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
  295. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
  296. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  297. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
  298. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
  299. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
  300. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
  301. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
  302. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
  303. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
  304. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/__init__.py +0 -0
  305. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/applicants.py +0 -0
  306. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/base.py +0 -0
  307. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/candidates.py +0 -0
  308. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/cost_centers.py +0 -0
  309. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
  310. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
  311. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_report.py +0 -0
  312. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
  313. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_postings.py +0 -0
  314. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_requisitions.py +0 -0
  315. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
  316. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/locations.py +0 -0
  317. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/organization_single.py +0 -0
  318. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/organizations.py +0 -0
  319. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
  320. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/references.py +0 -0
  321. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_block_report.py +0 -0
  322. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_blocks.py +0 -0
  323. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_off_balances.py +0 -0
  324. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_requests.py +0 -0
  325. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/workers.py +0 -0
  326. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/utils/__init__.py +0 -0
  327. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/utils/utils.py +0 -0
  328. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/workday.py +0 -0
  329. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/WorkdayReport.py +0 -0
  330. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workplace.py +0 -0
  331. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/XMLToPandas.py +0 -0
  332. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zammad/__init__.py +0 -0
  333. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zammad/models.py +0 -0
  334. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zoom.py +0 -0
  335. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ZoomInfoScraper.py +0 -0
  336. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ZoomUs.py +0 -0
  337. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/__init__.py +0 -0
  338. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/__init__.py +0 -0
  339. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/cache.py +0 -0
  340. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/fetch.py +0 -0
  341. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/resolver.py +0 -0
  342. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/transform.py +0 -0
  343. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/abstract.py +0 -0
  344. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/flow.py +0 -0
  345. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/__init__.py +0 -0
  346. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/date_sequence.py +0 -0
  347. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/static_list.py +0 -0
  348. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/google.py +0 -0
  349. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/group.py +0 -0
  350. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/pandas_io.py +0 -0
  351. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/py.typed +0 -0
  352. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/reviewscrap.py +0 -0
  353. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tAddTotalRow.py +0 -0
  354. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tAutoincrement.py +0 -0
  355. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tConcat.py +0 -0
  356. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tConditionalMultiply.py +0 -0
  357. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tCrosstab.py +0 -0
  358. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tDictKey.py +0 -0
  359. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tExplode.py +0 -0
  360. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFilter.py +0 -0
  361. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFilterCommonValues.py +0 -0
  362. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFrequencyWeights.py +0 -0
  363. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tGroup.py +0 -0
  364. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tJoin.py +0 -0
  365. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/__init__.py +0 -0
  366. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/functions.py +0 -0
  367. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/tMap.py +0 -0
  368. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMelt.py +0 -0
  369. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMerge.py +0 -0
  370. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tOrder.py +0 -0
  371. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPandas.py +0 -0
  372. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPivot.py +0 -0
  373. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPluckCols.py +0 -0
  374. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tUnnest.py +0 -0
  375. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/user.py +0 -0
  376. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/conf.py +0 -0
  377. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/__init__.py +0 -0
  378. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/cli.py +0 -0
  379. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
  380. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
  381. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
  382. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
  383. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
  384. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
  385. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
  386. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
  387. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
  388. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
  389. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
  390. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
  391. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
  392. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
  393. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
  394. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
  395. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
  396. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
  397. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
  398. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
  399. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
  400. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
  401. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
  402. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
  403. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
  404. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
  405. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
  406. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
  407. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
  408. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
  409. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
  410. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
  411. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
  412. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
  413. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
  414. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
  415. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
  416. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
  417. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
  418. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
  419. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
  420. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
  421. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
  422. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
  423. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
  424. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
  425. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
  426. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
  427. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
  428. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
  429. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
  430. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
  431. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
  432. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
  433. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
  434. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
  435. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
  436. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
  437. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
  438. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
  439. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
  440. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
  441. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
  442. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
  443. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
  444. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
  445. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
  446. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
  447. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
  448. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QS.doc.json +0 -0
  449. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
  450. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
  451. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
  452. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
  453. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
  454. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
  455. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
  456. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
  457. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
  458. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
  459. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
  460. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
  461. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
  462. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
  463. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
  464. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
  465. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
  466. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
  467. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
  468. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
  469. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
  470. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
  471. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
  472. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
  473. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
  474. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
  475. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
  476. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
  477. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
  478. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
  479. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
  480. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
  481. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
  482. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
  483. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
  484. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
  485. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
  486. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
  487. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
  488. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
  489. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
  490. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
  491. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
  492. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
  493. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
  494. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
  495. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
  496. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generator.py +0 -0
  497. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/models.py +0 -0
  498. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/parser.py +0 -0
  499. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/schema.py +0 -0
  500. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/toolkit.py +0 -0
  501. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/download.py +0 -0
  502. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/__init__.py +0 -0
  503. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/__init__.py +0 -0
  504. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/abstract.py +0 -0
  505. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/__init__.py +0 -0
  506. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/colfunctions.py +0 -0
  507. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/functions.py +0 -0
  508. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/dummy.py +0 -0
  509. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/exec.py +0 -0
  510. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/__init__.py +0 -0
  511. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/base.py +0 -0
  512. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/copy.py +0 -0
  513. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/delete.py +0 -0
  514. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/__init__.py +0 -0
  515. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/client.py +0 -0
  516. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/credentials.py +0 -0
  517. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/notifications.py +0 -0
  518. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/jira.py +0 -0
  519. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/log.py +0 -0
  520. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/logerr.py +0 -0
  521. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/notify.py +0 -0
  522. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/publish.py +0 -0
  523. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/sendfile.py +0 -0
  524. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/task.py +0 -0
  525. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/teams.py +0 -0
  526. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/webhook.py +0 -0
  527. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/manager.py +0 -0
  528. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/exceptions.py +0 -0
  529. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/__init__.py +0 -0
  530. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/base.py +0 -0
  531. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/docker.py +0 -0
  532. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/events.py +0 -0
  533. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/exceptions.py +0 -0
  534. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/k8s.py +0 -0
  535. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/models.py +0 -0
  536. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/publish.py +0 -0
  537. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/qworker.py +0 -0
  538. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/registry.py +0 -0
  539. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/resolver.py +0 -0
  540. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/__init__.py +0 -0
  541. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/abstract.py +0 -0
  542. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/component_docs.py +0 -0
  543. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/logging/__init__.py +0 -0
  544. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/__init__.py +0 -0
  545. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/agent.py +0 -0
  546. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/composer.py +0 -0
  547. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/parser.py +0 -0
  548. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/validator.py +0 -0
  549. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/handlers/__init__.py +0 -0
  550. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/handlers/component.py +0 -0
  551. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/__init__.py +0 -0
  552. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/__init__.py +0 -0
  553. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/abstract.py +0 -0
  554. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/dummy.py +0 -0
  555. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/jira.py +0 -0
  556. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/rest.py +0 -0
  557. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/sampledata.py +0 -0
  558. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/sensor.py +0 -0
  559. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/task.py +0 -0
  560. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/ticket.py +0 -0
  561. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/zammad.py +0 -0
  562. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/zoom_event.py +0 -0
  563. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/hook.py +0 -0
  564. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/models.py +0 -0
  565. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/service.py +0 -0
  566. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/step.py +0 -0
  567. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/__init__.py +0 -0
  568. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/base.py +0 -0
  569. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/__init__.py +0 -0
  570. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/base.py +0 -0
  571. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/mqtt.py +0 -0
  572. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
  573. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/redis.py +0 -0
  574. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/sqs.py +0 -0
  575. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/fs.py +0 -0
  576. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/http.py +0 -0
  577. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/imap.py +0 -0
  578. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/jira.py +0 -0
  579. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/mail.py +0 -0
  580. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/postgres.py +0 -0
  581. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/responses/__init__.py +0 -0
  582. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/responses/base.py +0 -0
  583. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/sharepoint.py +0 -0
  584. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/ssh.py +0 -0
  585. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/tagged.py +0 -0
  586. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/upload.py +0 -0
  587. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/watch.py +0 -0
  588. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/web.py +0 -0
  589. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/zoom.py +0 -0
  590. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/AzureClient.py +0 -0
  591. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/AzureGraph.py +0 -0
  592. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Boto3Client.py +0 -0
  593. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/DropboxClient.py +0 -0
  594. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ExcelHandler.py +0 -0
  595. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/FTPClient.py +0 -0
  596. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleCalendar.py +0 -0
  597. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleClient.py +0 -0
  598. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleDrive.py +0 -0
  599. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleGCS.py +0 -0
  600. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleGeocoding.py +0 -0
  601. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleLang.py +0 -0
  602. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GooglePub.py +0 -0
  603. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleSheet.py +0 -0
  604. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/IMAPClient.py +0 -0
  605. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/LLMClient.py +0 -0
  606. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/O365Calendar.py +0 -0
  607. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/O365Client.py +0 -0
  608. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/OneDrive.py +0 -0
  609. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Outlook.py +0 -0
  610. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ParrotBot.py +0 -0
  611. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ParrotTool.py +0 -0
  612. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/SOAPClient.py +0 -0
  613. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/SSHClient.py +0 -0
  614. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Sharepoint.py +0 -0
  615. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/abstract.py +0 -0
  616. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/azure_component.py +0 -0
  617. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/azureauth.py +0 -0
  618. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/base_action.py +0 -0
  619. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/base_loop.py +0 -0
  620. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/cache.py +0 -0
  621. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/client.py +0 -0
  622. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/compress.py +0 -0
  623. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_from_base.py +0 -0
  624. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_to.py +0 -0
  625. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_to_file_base.py +0 -0
  626. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/credentials.py +0 -0
  627. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/d2l.py +0 -0
  628. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/__init__.py +0 -0
  629. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/db.py +0 -0
  630. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/documentdb.py +0 -0
  631. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/rethink.py +0 -0
  632. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/__init__.py +0 -0
  633. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/abstract.py +0 -0
  634. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/arrow.py +0 -0
  635. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/dt.py +0 -0
  636. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/pandas.py +0 -0
  637. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/polars.py +0 -0
  638. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/db.py +0 -0
  639. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/db_client.py +0 -0
  640. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/download_from.py +0 -0
  641. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/env.py +0 -0
  642. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/file_base.py +0 -0
  643. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/flow.py +0 -0
  644. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/func.py +0 -0
  645. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/gamma.py +0 -0
  646. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/google_base.py +0 -0
  647. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/group.py +0 -0
  648. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/http.py +0 -0
  649. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/locale.py +0 -0
  650. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/log.py +0 -0
  651. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/mask.py +0 -0
  652. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/notification.py +0 -0
  653. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/__init__.py +0 -0
  654. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/agent.py +0 -0
  655. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/client.py +0 -0
  656. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/pipelines/__init__.py +0 -0
  657. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/pipelines/parrot.py +0 -0
  658. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/playwright.py +0 -0
  659. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/powerpoint.py +0 -0
  660. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ppt.py +0 -0
  661. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/py.typed +0 -0
  662. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/qs.py +0 -0
  663. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/qs_base.py +0 -0
  664. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/result.py +0 -0
  665. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/sassie.py +0 -0
  666. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/__init__.py +0 -0
  667. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/options.py +0 -0
  668. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/service.py +0 -0
  669. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium_service.py +0 -0
  670. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/smartsheet.py +0 -0
  671. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/stat.py +0 -0
  672. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/t_pandas.py +0 -0
  673. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/table_base.py +0 -0
  674. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/task.py +0 -0
  675. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/teams.py +0 -0
  676. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/template.py +0 -0
  677. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/tickets.py +0 -0
  678. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/upload_to.py +0 -0
  679. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/user.py +0 -0
  680. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/__init__.py +0 -0
  681. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/abstract.py +0 -0
  682. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/milvus.py +0 -0
  683. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/__init__.py +0 -0
  684. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/config.py +0 -0
  685. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
  686. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
  687. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/base.py +0 -0
  688. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
  689. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
  690. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
  691. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
  692. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_report.py +0 -0
  693. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
  694. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
  695. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
  696. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
  697. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
  698. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/locations.py +0 -0
  699. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
  700. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
  701. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
  702. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/references.py +0 -0
  703. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
  704. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
  705. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
  706. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/workers.py +0 -0
  707. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/__init__.py +0 -0
  708. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/applicant.py +0 -0
  709. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/candidate.py +0 -0
  710. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/cost_center.py +0 -0
  711. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
  712. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_posting.py +0 -0
  713. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
  714. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
  715. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/location.py +0 -0
  716. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
  717. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/organizations.py +0 -0
  718. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/reference.py +0 -0
  719. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_block.py +0 -0
  720. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
  721. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_request.py +0 -0
  722. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/worker.py +0 -0
  723. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
  724. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
  725. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
  726. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
  727. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
  728. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
  729. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
  730. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
  731. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  732. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
  733. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
  734. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
  735. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
  736. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
  737. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
  738. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
  739. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/service.py +0 -0
  740. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/utils/__init__.py +0 -0
  741. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/utils/utils.py +0 -0
  742. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/zammad.py +0 -0
  743. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/zoom.py +0 -0
  744. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/models.py +0 -0
  745. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/__init__.py +0 -0
  746. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/_yaml.pyx +0 -0
  747. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/argparser.py +0 -0
  748. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/base.pxd +0 -0
  749. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/base.pyx +0 -0
  750. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/json.pyx +0 -0
  751. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/maps.py +0 -0
  752. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/__init__.py +0 -0
  753. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/checker.py +0 -0
  754. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/detector.py +0 -0
  755. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/registry.py +0 -0
  756. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/report.py +0 -0
  757. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/schema.py +0 -0
  758. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/toml.pyx +0 -0
  759. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/__init__.py +0 -0
  760. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/components_/__init__.py +0 -0
  761. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/handler/__init__.py +0 -0
  762. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/importer.py +0 -0
  763. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/sources/__init__.py +0 -0
  764. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/__init__.py +0 -0
  765. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/functions.py +0 -0
  766. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/__init__.py +0 -0
  767. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/manager.py +0 -0
  768. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/models.py +0 -0
  769. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/service.py +0 -0
  770. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/notifications.py +0 -0
  771. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/scheduler.py +0 -0
  772. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/__init__.py +0 -0
  773. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/bots/__init__.py +0 -0
  774. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/bots/telegram.py +0 -0
  775. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/__init__.py +0 -0
  776. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/manager.py +0 -0
  777. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/model.py +0 -0
  778. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/service.py +0 -0
  779. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/jira/__init__.py +0 -0
  780. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/jira/jira_actions.py +0 -0
  781. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/__init__.py +0 -0
  782. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/launcher.py +0 -0
  783. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/manager.py +0 -0
  784. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/service.py +0 -0
  785. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/task_manager.py +0 -0
  786. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/tasks.py +0 -0
  787. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/__init__.py +0 -0
  788. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/exceptions.py +0 -0
  789. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/__init__.py +0 -0
  790. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/abstract.py +0 -0
  791. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/filesystem.py +0 -0
  792. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/__init__.py +0 -0
  793. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/abstract.py +0 -0
  794. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/database.py +0 -0
  795. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/filesystem.py +0 -0
  796. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/github.py +0 -0
  797. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/memory.py +0 -0
  798. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/row.py +0 -0
  799. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/__init__.py +0 -0
  800. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/abstract.py +0 -0
  801. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/command.py +0 -0
  802. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/pile.py +0 -0
  803. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/py.typed +0 -0
  804. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/task.py +0 -0
  805. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/workers.py +0 -0
  806. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/template/__init__.py +0 -0
  807. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tests.py +0 -0
  808. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/types/__init__.py +0 -0
  809. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/types/typedefs.pyx +0 -0
  810. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/__init__.py +0 -0
  811. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/constants.py +0 -0
  812. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/encoders.py +0 -0
  813. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/executor.py +0 -0
  814. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/functions.pyx +0 -0
  815. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/json.pxi +0 -0
  816. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/json.pyx +0 -0
  817. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/mail.py +0 -0
  818. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/msgraph_patch.py +0 -0
  819. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/parseqs.pyx +0 -0
  820. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/stats.py +0 -0
  821. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/transformations.py +0 -0
  822. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/uv.py +0 -0
  823. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/validators.py +0 -0
  824. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/dependency_links.txt +0 -0
  825. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/entry_points.txt +0 -0
  826. {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/top_level.txt +0 -0
  827. {flowtask-5.12.2 → flowtask-5.12.4}/setup.cfg +0 -0
  828. {flowtask-5.12.2 → flowtask-5.12.4}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowtask
3
- Version: 5.12.2
3
+ Version: 5.12.4
4
4
  Summary: Framework for Task orchestration
5
5
  Author-email: Jesus Lara <jesuslarag@gmail.com>
6
6
  License: Apache-2.0
@@ -37,7 +37,7 @@ Requires-Dist: selenium>=4.35.0
37
37
  Requires-Dist: snapshot-selenium==0.0.2
38
38
  Requires-Dist: httpx[http2,socks]>=0.26.0
39
39
  Requires-Dist: urllib3[socks]>=2.3.0
40
- Requires-Dist: requests==2.32.4
40
+ Requires-Dist: requests<2.34,>=2.33.0
41
41
  Requires-Dist: h2>=4.2.0
42
42
  Requires-Dist: blinker>=1.9.0
43
43
  Requires-Dist: webdriver-manager==4.0.2
@@ -127,10 +127,12 @@ Requires-Dist: kr8s>=0.16.0; extra == "k8s"
127
127
  Provides-Extra: git
128
128
  Requires-Dist: gitpython>=3.1.50; extra == "git"
129
129
  Provides-Extra: ai
130
- Requires-Dist: ai-parrot[agents,images,integrations,llms,scheduler]>=0.20.4; extra == "ai"
130
+ Requires-Dist: ai-parrot[agents,graphindex,images,llms,retrieval]>=0.20.4; extra == "ai"
131
131
  Requires-Dist: ai-parrot-loaders[audio,document,ebook,ml,pdf,scraping,video,web,youtube]>=0.1.0; extra == "ai"
132
132
  Requires-Dist: ai-parrot-tools[analysis,arxiv,aws,codeinterpreter,db,docker,excel,finance,flowtask,git,google,jira,messaging,pdf,pulumi,sandbox,scraping,sitesearch,slack,weather,wikipedia]>=0.1.0; extra == "ai"
133
133
  Requires-Dist: ai-parrot-pipelines>=0.1.0; extra == "ai"
134
+ Requires-Dist: ai-parrot-server[all]>=0.1.0; extra == "ai"
135
+ Requires-Dist: ai-parrot-integrations[all]>=0.0.17; extra == "ai"
134
136
  Provides-Extra: dev
135
137
  Requires-Dist: pytest>=5.4.0; extra == "dev"
136
138
  Requires-Dist: coverage; extra == "dev"
@@ -2,7 +2,7 @@ from collections.abc import Callable
2
2
  import asyncio
3
3
  import pandas as pd
4
4
  import orjson
5
- from ..exceptions import DataNotFound
5
+ from ..exceptions import DataNotFound, ComponentError
6
6
  from ..interfaces.ParrotBot import ParrotBot
7
7
  from ..interfaces.flow import FlowComponent
8
8
 
@@ -236,6 +236,49 @@ class CallAnalysis(ParrotBot, FlowComponent):
236
236
  self.skip_existing: bool = kwargs.get('skip_existing', True)
237
237
  self.lookup_schema_column: str = kwargs.get('schema_column', 'program_slug')
238
238
 
239
+ # Credentials/auth abort state (set per bot_evaluation run).
240
+ # When a non-retryable credentials error is detected, _auth_error holds
241
+ # the offending exception and _abort_event signals every in-flight/queued
242
+ # task to bail out so no further API calls are attempted.
243
+ self._auth_error: Exception | None = None
244
+ self._abort_event: asyncio.Event | None = None
245
+
246
+ # Substrings that flag a non-retryable credentials/permission failure.
247
+ # Retrying these only wastes API quota — the key/permissions must be fixed.
248
+ _CREDENTIALS_ERROR_MARKERS = (
249
+ "PERMISSION_DENIED",
250
+ "API_KEY_SERVICE_BLOCKED",
251
+ "API_KEY_INVALID",
252
+ "API key not valid",
253
+ "API_KEY_HTTP_REFERRER_BLOCKED",
254
+ "UNAUTHENTICATED",
255
+ "CONSUMER_INVALID",
256
+ )
257
+
258
+ def _is_credentials_error(self, exc: Exception) -> bool:
259
+ """Return True if ``exc`` is a non-retryable credentials/auth failure.
260
+
261
+ Detects the Google GenAI ``403 PERMISSION_DENIED`` /
262
+ ``API_KEY_SERVICE_BLOCKED`` family (and equivalent auth errors) so the
263
+ batch can fail fast instead of retrying a blocked API key.
264
+
265
+ Args:
266
+ exc: The exception raised by the LLM provider call.
267
+
268
+ Returns:
269
+ bool: True when the error indicates blocked/invalid credentials.
270
+ """
271
+ # HTTP status carried on the exception (google-genai / aiohttp styles).
272
+ status = (
273
+ getattr(exc, 'status_code', None)
274
+ or getattr(exc, 'code', None)
275
+ or getattr(exc, 'status', None)
276
+ )
277
+ if status in (401, 403):
278
+ return True
279
+ message = str(exc)
280
+ return any(marker in message for marker in self._CREDENTIALS_ERROR_MARKERS)
281
+
239
282
  def load_from_file(
240
283
  self,
241
284
  df: pd.DataFrame,
@@ -651,6 +694,13 @@ class CallAnalysis(ParrotBot, FlowComponent):
651
694
  """
652
695
  call_key = call_key or call_identifier
653
696
  async with semaphore:
697
+ # A fatal credentials error already aborted the batch — bail out
698
+ # without making another doomed API call.
699
+ if self._abort_event is not None and self._abort_event.is_set():
700
+ self._logger.debug(
701
+ f"Skipping {call_identifier} - batch aborted due to credentials error"
702
+ )
703
+ return (call_key, None)
654
704
  for attempt in range(self.retry_attempts):
655
705
  try:
656
706
  # Wait minimum interval before request to respect RPM limit
@@ -673,6 +723,23 @@ class CallAnalysis(ParrotBot, FlowComponent):
673
723
 
674
724
 
675
725
  except Exception as e:
726
+ # Credentials / permission errors are NOT retryable: retrying
727
+ # only burns API quota against a blocked key. Flag the batch
728
+ # for abort so no further calls are attempted and surface it
729
+ # clearly (distinct from DataNotFound) in bot_evaluation.
730
+ if self._is_credentials_error(e):
731
+ if self._auth_error is None:
732
+ self._auth_error = e
733
+ self._logger.error(
734
+ f"🔑 Credentials/permission error from LLM provider while "
735
+ f"analyzing {call_identifier}: {e}. Aborting batch — the API "
736
+ f"key is blocked/invalid or lacks permission. No further "
737
+ f"calls will be attempted."
738
+ )
739
+ if self._abort_event is not None:
740
+ self._abort_event.set()
741
+ return (call_key, None)
742
+
676
743
  if attempt < self.retry_attempts - 1:
677
744
  # Calculate exponential backoff wait time
678
745
  wait_time = self.retry_backoff_factor ** attempt
@@ -704,6 +771,10 @@ class CallAnalysis(ParrotBot, FlowComponent):
704
771
  A Pandas Dataframe with the Call Analysis results.
705
772
 
706
773
  """
774
+ # Reset credentials-abort state for this run.
775
+ self._auth_error = None
776
+ self._abort_event = asyncio.Event()
777
+
707
778
  # Determine if we should group the data or process row by row
708
779
  should_group = self.group_analysis
709
780
  schema_col_present = (
@@ -944,6 +1015,17 @@ class CallAnalysis(ParrotBot, FlowComponent):
944
1015
  # Add the analysis results as a new column
945
1016
  result_df[self.output_column] = analysis_results
946
1017
 
1018
+ # If a fatal credentials/permission error aborted the batch, surface it
1019
+ # explicitly. Do NOT let it fall through to the DataNotFound below — that
1020
+ # status (204, "nothing to analyze") would mask a blocked/invalid API key.
1021
+ if self._auth_error is not None:
1022
+ raise ComponentError(
1023
+ f"{self._bot_name}: aborted analysis due to a credentials/permission "
1024
+ f"error from the LLM provider ({self._auth_error}). The API key is "
1025
+ f"blocked, invalid, or lacks permission to call the model. Fix the "
1026
+ f"credentials and retry — no further API calls were attempted."
1027
+ )
1028
+
947
1029
  # Clean up JSON formatting in the output column if present
948
1030
  # Only clean strings, preserve dicts/lists that are already valid JSON objects
949
1031
  if self.output_column in result_df.columns and not result_df[self.output_column].isna().all():
@@ -56,15 +56,13 @@ def detect_encoding(filename, encoding: str = "utf-8"):
56
56
  try:
57
57
  result = chardet.detect(raw)
58
58
  if result["encoding"] in ("ASCII", "ascii"):
59
- # let me try to repair the file:
60
- content = None
61
- with open(filename, "rb") as fp:
62
- content = fp.read()
63
- decoded = content.decode(encoding, "ignore")
64
- output = StringIO()
65
- output.write(decoded)
66
- output.seek(0)
67
- return [output, encoding]
59
+ # ASCII is a strict subset of UTF-8, so the declared encoding
60
+ # is safe to use as-is. Do NOT slurp the whole file here: the
61
+ # only thing every caller consumes from this function is the
62
+ # encoding string (the buffer is always discarded), and reading
63
+ # a multi-GB file just to throw it away caused massive memory
64
+ # pressure / apparent hangs on large CSVs.
65
+ return [None, encoding]
68
66
  else:
69
67
  enc = result["encoding"]
70
68
  except UnicodeDecodeError:
@@ -539,11 +539,13 @@ class OpenWithPandas(OpenWithBase):
539
539
  raise ComponentError(
540
540
  f"Error Combining Resultset Dataframes: {err}"
541
541
  ) from err
542
- # When --debug is on, print the RAW DataFrame exactly as read, BEFORE
543
- # any post-processing (drop_empty/trim/dropna). This is the place to
544
- # validate which columns came in and which are all-empty (and would be
545
- # dropped below by drop_empty).
546
- if self._debug is True:
542
+ # When is_debug is on, log the RAW read shape/columns BEFORE any
543
+ # post-processing (drop_empty/trim/dropna) useful to validate which
544
+ # columns came in and which are all-empty (and would be dropped below
545
+ # by drop_empty). Gated behind the explicit is_debug YAML flag (NOT the
546
+ # global --debug) so normal debug runs don't flood the logs with the
547
+ # per-column non-null dump on every OpenWithPandas step.
548
+ if getattr(self, 'is_debug', False) is True:
547
549
  try:
548
550
  nonnull = df.notna().sum()
549
551
  empty_cols = [c for c in df.columns if nonnull[c] == 0]
@@ -656,11 +658,15 @@ class OpenWithPandas(OpenWithBase):
656
658
  self.add_metric("NUMROWS", numrows)
657
659
  self.add_metric("OPENED_FILES", self._filenames)
658
660
  if getattr(self, 'is_debug', False) is True:
659
- self._logger.debug("DataFrame result:\n%s", df.to_string())
661
+ # Do NOT render the full DataFrame (df.to_string() with no row limit
662
+ # materialises every row into one giant string — CPU-bound for
663
+ # minutes/hours on multi-GB frames, the apparent "hang"). Instead,
664
+ # show the shape and a single representative row: every column with
665
+ # its dtype and its first value.
666
+ self._logger.debug("DataFrame result: shape=%s", df.shape)
660
667
  self._logger.debug("::: Column Information ===")
661
668
  for column, t in df.dtypes.items():
662
- self._logger.debug(
663
- "%s -> %s -> %s", column, t, df[column].iloc[0]
664
- )
669
+ sample = df[column].iloc[0] if len(df.index) else "<empty>"
670
+ self._logger.debug("%s -> %s -> %s", column, t, sample)
665
671
  self._logger.debug("Opened File(s) with Pandas %s", self._filenames)
666
672
  return self._result
@@ -0,0 +1,5 @@
1
+ """ParrotKnowledgeBuilder — builds GraphIndex/PageIndex knowledge structures from documents."""
2
+ from .loader import ParrotKnowledgeBuilder
3
+ from .payload import KnowledgeArtifact
4
+
5
+ __all__ = ["KnowledgeArtifact", "ParrotKnowledgeBuilder"]
@@ -0,0 +1,439 @@
1
+ """ParrotKnowledgeBuilder — FlowComponent that builds GraphIndex/PageIndex structures."""
2
+ import asyncio
3
+ from collections.abc import Callable
4
+ from contextlib import AsyncExitStack
5
+ from pathlib import Path
6
+ from typing import Any, Optional
7
+
8
+ from ...exceptions import ComponentError, ConfigError, DataNotFound
9
+ from ...interfaces.flow import FlowComponent
10
+
11
+ # Reuse module-level helpers and private methods from ParrotLoader without
12
+ # modifying it. In Python 3, accessing a method via the class returns the
13
+ # underlying function whose __globals__ still live in ParrotLoader's module, so
14
+ # every helper they depend on (_has_glob, pd, json, …) resolves correctly.
15
+ from ..ParrotLoader.loader import (
16
+ ParrotLoader as _PL,
17
+ _has_glob,
18
+ )
19
+ from .payload import KnowledgeArtifact as KnowledgeArtifact # re-exported
20
+
21
+ _VALID_INDEX_TYPES = frozenset({"graphindex", "pageindex"})
22
+
23
+
24
+ class ParrotKnowledgeBuilder(FlowComponent):
25
+ """Build a GraphIndex graph or PageIndex tree from documents; emit KnowledgeArtifact.
26
+
27
+ Config keys (YAML):
28
+ index_type: graphindex | pageindex (required)
29
+ path: single file/dir/glob pattern
30
+ path_list: inline list or path to .txt/.json/.csv file of sources
31
+ path_column: column name when upstream component provides a DataFrame
32
+ loader: ParrotLoader class name (graphindex only)
33
+ tenant_id: ArangoDB tenant identifier (graphindex; default "default")
34
+ directory: KB storage directory under the task storage. A relative
35
+ path (e.g. "mi_agente/kb") resolves to
36
+ programs/{program}/agents/{directory}; absolute is used
37
+ as-is; if omitted, defaults to programs/{program}/agents.
38
+ Each mode writes to its own leaf so they never intermix:
39
+ pageindex → {directory}/pages, graphindex → {directory}/graph.
40
+ (index JSON + per-node markdown; graphindex section nodes
41
+ get a content_ref pointing at it.)
42
+ llm: LLM provider name (e.g. "anthropic", "google", "groq").
43
+ Required by pageindex; OPTIONAL for graphindex (enables
44
+ hierarchical section extraction + disk persistence;
45
+ omit for flat, in-memory extraction).
46
+ llm_model: model id for the adapter. If omitted, the client's own
47
+ default model is used (NOT the adapter's Google default).
48
+ llm_concurrency: max concurrent LLM calls (legacy; the PageIndexToolkit
49
+ manages its own concurrency).
50
+ with_summaries: generate section summaries via LLM (pageindex; default True)
51
+ fail_on_empty: raise DataNotFound when no nodes/tree extracted (default True)
52
+ """
53
+
54
+ _version = "1.0.0"
55
+
56
+ def __init__(
57
+ self,
58
+ loop: asyncio.AbstractEventLoop = None,
59
+ job: Callable = None,
60
+ stat: Callable = None,
61
+ **kwargs: Any,
62
+ ) -> None:
63
+ """Initialise the component from YAML config kwargs.
64
+
65
+ Args:
66
+ loop: optional event loop (forwarded to super).
67
+ job: upstream job/component (forwarded to super).
68
+ stat: stats callback (forwarded to super).
69
+ **kwargs: YAML config keys consumed here; remainder forwarded to FlowComponent.
70
+ """
71
+ # Source resolution (mirror ParrotLoader attribute layout so rebound
72
+ # methods work without modification)
73
+ self.path: Optional[str] = kwargs.pop("path", None)
74
+ self._path_list: Optional[Any] = kwargs.pop("path_list", None)
75
+ self._path_list_format: str = str(
76
+ kwargs.pop("path_list_format", "auto") or "auto"
77
+ ).lower()
78
+ self._path_column: Optional[str] = kwargs.pop("path_column", None)
79
+ self.encoding: str = kwargs.get("encoding", "utf-8")
80
+
81
+ # Mode
82
+ self._index_type: Optional[str] = kwargs.pop("index_type", None)
83
+
84
+ # graphindex config
85
+ self._loader_name: Optional[str] = kwargs.pop("loader", None)
86
+ self._tenant_id: str = kwargs.pop("tenant_id", "default")
87
+
88
+ # KB storage directory (both modes persist the PageIndex tree here)
89
+ self._directory: Optional[str] = kwargs.pop("directory", None)
90
+
91
+ # pageindex config
92
+ self._llm: Optional[Any] = kwargs.pop("llm", None)
93
+ self._llm_model: Optional[str] = kwargs.pop("llm_model", None)
94
+ self._llm_concurrency: int = int(kwargs.pop("llm_concurrency", 8))
95
+ self._with_summaries: bool = bool(kwargs.pop("with_summaries", True))
96
+
97
+ # Behaviour
98
+ self._fail_on_empty: bool = bool(kwargs.pop("fail_on_empty", True))
99
+
100
+ super().__init__(loop=loop, job=job, stat=stat, **kwargs)
101
+
102
+ # ------------------------------------------------------------------
103
+ # Reuse ParrotLoader source-resolution and LLM-building helpers.
104
+ # These functions' __globals__ live in ParrotLoader's module, so their
105
+ # module-level dependencies (_has_glob, pd, json, …) resolve correctly.
106
+ # ------------------------------------------------------------------
107
+ _build_llm_client = _PL._build_llm_client
108
+ _resolve_loader_class = _PL._resolve_loader_class
109
+ _resolve_sources = _PL._resolve_sources
110
+ _read_path_list_file = _PL._read_path_list_file
111
+ _extract_paths_from_dataframe = _PL._extract_paths_from_dataframe
112
+
113
+ def _resolve_model(self, client: Any) -> Optional[str]:
114
+ """Resolve the model name to hand to ``PageIndexLLMAdapter``.
115
+
116
+ Precedence: explicit ``llm_model`` config → the client's configured
117
+ ``model`` → the client's provider default (``_default_model``). This
118
+ avoids ``PageIndexLLMAdapter``'s hardcoded Google default
119
+ (``gemini-3.1-flash-lite-preview``) leaking onto a non-Google client
120
+ (e.g. Groq), which causes a 404 model_not_found.
121
+
122
+ Args:
123
+ client: the built ``AbstractClient`` (e.g. GroqClient).
124
+
125
+ Returns:
126
+ A provider-appropriate model name, or ``None`` to defer to the
127
+ adapter (only when nothing could be resolved).
128
+ """
129
+ return (
130
+ self._llm_model
131
+ or getattr(client, "model", None)
132
+ or getattr(client, "_default_model", None)
133
+ )
134
+
135
+ def _resolve_kb_directory(self, subdir: str) -> Path:
136
+ """Resolve the KB storage directory under the task storage.
137
+
138
+ Layout (per Jesús Lara): ``<task-storage-root>/{program}/agents/{directory}``,
139
+ with a per-mode ``subdir`` appended so the two builders never intermix in
140
+ the same folder:
141
+
142
+ programs/{program}/agents/{directory}/pages (pageindex)
143
+ programs/{program}/agents/{directory}/graph (graphindex)
144
+
145
+ - relative ``directory`` (e.g. "mi_agente/kb") → joined under
146
+ ``programs/{program}/agents``;
147
+ - absolute ``directory`` → used as-is;
148
+ - omitted → defaults to ``programs/{program}/agents``.
149
+
150
+ The PageIndex stores auto-create the directory (``mkdir parents=True``).
151
+
152
+ Args:
153
+ subdir: per-mode leaf folder ("pages" or "graph").
154
+
155
+ Returns:
156
+ Absolute :class:`~pathlib.Path` for the PageIndex ``storage_dir``.
157
+ """
158
+ base = Path(self._taskstore.get_path()).joinpath(self._program, "agents")
159
+ if self._directory:
160
+ directory = Path(self._directory)
161
+ base = directory if directory.is_absolute() else base.joinpath(directory)
162
+ return base.joinpath(subdir)
163
+
164
+ # ------------------------------------------------------------------
165
+ # FlowComponent lifecycle
166
+ # ------------------------------------------------------------------
167
+
168
+ async def start(self, **kwargs: Any) -> None:
169
+ """Validate config and resolve document sources.
170
+
171
+ Args:
172
+ **kwargs: forwarded to FlowComponent.start().
173
+
174
+ Raises:
175
+ ConfigError: missing/invalid index_type or no source provided.
176
+ ComponentError: resolved path does not exist.
177
+ """
178
+ await super().start(**kwargs)
179
+
180
+ # Validate index_type
181
+ if not self._index_type:
182
+ raise ConfigError(
183
+ "ParrotKnowledgeBuilder: 'index_type' is required. "
184
+ f"Supported values: {sorted(_VALID_INDEX_TYPES)}."
185
+ )
186
+ if self._index_type == "ontology":
187
+ raise ConfigError(
188
+ "ParrotKnowledgeBuilder: 'index_type: ontology' is not supported here. "
189
+ "Ontology is an ArangoDB persistence/schema layer — use the CopyToArango "
190
+ "spec for persistence instead."
191
+ )
192
+ if self._index_type not in _VALID_INDEX_TYPES:
193
+ raise ConfigError(
194
+ f"ParrotKnowledgeBuilder: unsupported index_type '{self._index_type}'. "
195
+ f"Supported values: {sorted(_VALID_INDEX_TYPES)}."
196
+ )
197
+
198
+ # Normalize path_list string through mask replacement
199
+ if isinstance(self._path_list, str):
200
+ self._path_list = self.mask_replacement_recursively(self._path_list)
201
+
202
+ # Resolve and validate single path
203
+ if self.path:
204
+ if isinstance(self.path, str):
205
+ self.path = self.mask_replacement_recursively(self.path)
206
+ if not self.path.startswith(("http://", "https://", "ftp://")):
207
+ if _has_glob(self.path):
208
+ pass # glob expansion deferred to run()
209
+ else:
210
+ self.path = Path(self.path).resolve()
211
+ if not self.path.exists():
212
+ raise ComponentError(
213
+ f"ParrotKnowledgeBuilder: {self.path} doesn't exist."
214
+ )
215
+ elif isinstance(self.path, Path) and not self.path.exists():
216
+ raise ComponentError(
217
+ f"ParrotKnowledgeBuilder: {self.path} doesn't exist."
218
+ )
219
+ elif self._path_list is None and not self._path_column:
220
+ raise ConfigError(
221
+ "ParrotKnowledgeBuilder: provide at least one of: 'path', "
222
+ "'path_list', or 'path_column' (with an upstream DataFrame)."
223
+ )
224
+
225
+ async def run(self) -> bool:
226
+ """Dispatch to the appropriate index-type branch and set self._result.
227
+
228
+ Returns:
229
+ True on success.
230
+ """
231
+ if self._index_type == "graphindex":
232
+ await self._run_graphindex()
233
+ else:
234
+ await self._run_pageindex()
235
+ return True
236
+
237
+ async def _run_graphindex(self) -> None:
238
+ """Build a merged tenant graph via LoaderExtractor + GraphAssembler.
239
+
240
+ For each resolved source, runs LoaderExtractor.extract() to get
241
+ (nodes, edges), feeds them into a single GraphAssembler, then emits one
242
+ KnowledgeArtifact(kind="graph") with model_dump() dicts. When `llm` is
243
+ set, a PageIndexToolkit(storage_dir) is supplied so section content is
244
+ persisted to disk and nodes carry a content_ref; otherwise extraction is
245
+ flat/in-memory. Embed and cross-domain resolve are intentionally skipped
246
+ (no vectors in v1).
247
+
248
+ Raises:
249
+ ConfigError: loader name not provided or loader class not found.
250
+ DataNotFound: extraction produced no nodes and fail_on_empty is True.
251
+ """
252
+ # defer heavy import so graphindex extra is only required at runtime
253
+ from parrot.knowledge.graphindex.assemble import GraphAssembler
254
+ from parrot.knowledge.graphindex.extractors.loader import LoaderExtractor
255
+
256
+ if not self._loader_name:
257
+ raise ConfigError(
258
+ "ParrotKnowledgeBuilder: 'loader' is required for graphindex mode."
259
+ )
260
+ loader_cls = self._resolve_loader_class(self._loader_name)
261
+ if loader_cls is None:
262
+ raise ConfigError(
263
+ f"ParrotKnowledgeBuilder: loader '{self._loader_name}' not found "
264
+ "in LOADER_REGISTRY, parrot_loaders, or parrot.loaders."
265
+ )
266
+
267
+ sources = self._resolve_sources()
268
+ if sources is None:
269
+ sources = [self.path]
270
+
271
+ # Deduplicate the payload to mirror the assembler's merged view: a
272
+ # node_id seen across multiple sources collapses to one entry (last
273
+ # wins, as GraphAssembler.add_node does), and parallel edges collapse
274
+ # on (source_id, target_id, kind). This keeps artifact.nodes/edges
275
+ # consistent with the node_count/edge_count metadata and avoids pushing
276
+ # duplicate upserts to a downstream CopyToArango.
277
+ assembler = GraphAssembler(self._tenant_id)
278
+ nodes_by_id: dict[str, Any] = {}
279
+ edges_by_key: dict[tuple, Any] = {}
280
+
281
+ # Optional LLM adapter + PageIndexToolkit: when `llm` is configured,
282
+ # LoaderExtractor routes hierarchical content through the toolkit, which
283
+ # persists each document's sections to disk (index JSON + per-node
284
+ # markdown under storage_dir) and gives every SECTION node a
285
+ # content_ref = "pageindex://<tree>/<node>". Without `llm` it degrades to
286
+ # flat, in-memory extraction (one DOCUMENT node, no content_ref).
287
+ # The AbstractClient MUST be entered as an async context manager
288
+ # (__aenter__ initializes the per-loop SDK client).
289
+ storage_dir = self._resolve_kb_directory("graph")
290
+ persisted = self._llm is not None
291
+ async with AsyncExitStack() as stack:
292
+ extractor_kwargs: dict = {"toolkit": None}
293
+ if persisted:
294
+ from parrot.knowledge.pageindex.llm_adapter import PageIndexLLMAdapter
295
+ from parrot.knowledge.pageindex.toolkit import PageIndexToolkit
296
+ client = await stack.enter_async_context(self._build_llm_client())
297
+ adapter = PageIndexLLMAdapter(
298
+ client=client, model=self._resolve_model(client)
299
+ )
300
+ extractor_kwargs["llm_adapter"] = adapter
301
+ extractor_kwargs["toolkit"] = PageIndexToolkit(
302
+ adapter=adapter, storage_dir=str(storage_dir)
303
+ )
304
+
305
+ extractor = LoaderExtractor(**extractor_kwargs)
306
+
307
+ for source in sources:
308
+ source_str = str(source)
309
+ try:
310
+ loader = loader_cls(source=source_str)
311
+ nodes, edges = await extractor.extract(loader, source_str)
312
+ except Exception as exc: # noqa: BLE001
313
+ self._logger.warning(
314
+ "ParrotKnowledgeBuilder: source %s failed, skipping: %s",
315
+ source_str, exc,
316
+ )
317
+ continue
318
+ assembler.add_nodes(nodes)
319
+ assembler.add_edges(edges)
320
+ for node in nodes:
321
+ nodes_by_id[node.node_id] = node
322
+ for edge in edges:
323
+ edges_by_key[(edge.source_id, edge.target_id, edge.kind)] = edge
324
+
325
+ if self._fail_on_empty and not nodes_by_id:
326
+ raise DataNotFound(
327
+ "ParrotKnowledgeBuilder: graphindex extraction produced no nodes "
328
+ f"across {len(sources)} source(s)."
329
+ )
330
+
331
+ self._result = KnowledgeArtifact(
332
+ kind="graph",
333
+ index_type="graphindex",
334
+ source="<merged>",
335
+ tenant_id=self._tenant_id,
336
+ nodes=[n.model_dump() for n in nodes_by_id.values()],
337
+ edges=[e.model_dump() for e in edges_by_key.values()],
338
+ metadata={
339
+ "source_count": len(sources),
340
+ "node_count": assembler.node_count,
341
+ "edge_count": assembler.edge_count,
342
+ # Where section markdown/index were persisted (content_ref base);
343
+ # None when running flat/in-memory (no `llm`).
344
+ "storage_dir": str(storage_dir) if persisted else None,
345
+ },
346
+ )
347
+ self.add_metric("NUM_NODES", assembler.node_count)
348
+ self.add_metric("NUM_EDGES", assembler.edge_count)
349
+
350
+ async def _run_pageindex(self) -> None:
351
+ """Build + persist one PageIndex tree per PDF via PageIndexToolkit.
352
+
353
+ For each PDF, ``toolkit.import_pdf`` builds the tree AND writes it to
354
+ disk under the resolved storage_dir:
355
+ ``<storage_dir>/<tree_name>.json`` (index) + ``<storage_dir>/<tree_name>/
356
+ <node_id>.md`` (per-node markdown). The emitted KnowledgeArtifact keeps
357
+ the lean tree/index in ``tree`` and points at the on-disk content via
358
+ ``metadata`` (storage_dir / tree_name / index_file / content_dir);
359
+ ``node_markdown`` stays empty since the bodies live on disk. A downstream
360
+ CopyTo* persister reads from those paths.
361
+
362
+ Raises:
363
+ ConfigError: source is not a PDF file.
364
+ DataNotFound: no trees produced and fail_on_empty is True.
365
+ """
366
+ # defer heavy import; requires dev parrot 0.25.7 + editable-source toggle
367
+ from parrot.knowledge.pageindex.llm_adapter import PageIndexLLMAdapter
368
+ from parrot.knowledge.pageindex.toolkit import PageIndexToolkit
369
+
370
+ sources = self._resolve_sources()
371
+ if sources is None:
372
+ sources = [self.path]
373
+
374
+ storage_dir = self._resolve_kb_directory("pages")
375
+ artifacts: list[KnowledgeArtifact] = []
376
+
377
+ # The AbstractClient MUST be entered as an async context manager so its
378
+ # per-loop SDK client is initialized; a bare instance leaves the SDK as
379
+ # None and the toolkit's LLM calls fail with 'NoneType .. chat'.
380
+ async with self._build_llm_client() as client:
381
+ adapter = PageIndexLLMAdapter(
382
+ client=client, model=self._resolve_model(client)
383
+ )
384
+ toolkit = PageIndexToolkit(adapter=adapter, storage_dir=str(storage_dir))
385
+
386
+ for source in sources:
387
+ source_str = str(source)
388
+ if not source_str.lower().endswith(".pdf"):
389
+ raise ConfigError(
390
+ f"ParrotKnowledgeBuilder: pageindex requires PDF sources, "
391
+ f"got: {source_str!r}. Non-PDF formats are not supported by build_page_index."
392
+ )
393
+ tree_name = Path(source_str).stem
394
+ try:
395
+ # Idempotent: replace any prior tree for this document.
396
+ if tree_name in await toolkit.list_trees():
397
+ await toolkit.delete_tree(tree_name)
398
+ await toolkit.create_tree(tree_name, doc_name=Path(source_str).name)
399
+ await toolkit.import_pdf(
400
+ tree_name=tree_name,
401
+ pdf_path=source_str,
402
+ with_summaries=self._with_summaries,
403
+ )
404
+ tree = await toolkit.get_tree(tree_name)
405
+ except Exception as exc: # noqa: BLE001
406
+ self._logger.warning(
407
+ "ParrotKnowledgeBuilder: pageindex failed for %s, skipping: %s",
408
+ source_str, exc,
409
+ )
410
+ continue
411
+
412
+ artifacts.append(
413
+ KnowledgeArtifact(
414
+ kind="tree",
415
+ index_type="pageindex",
416
+ source=source_str,
417
+ tree=tree, # lean index kept in the payload too
418
+ node_markdown={}, # bodies live on disk, not embedded
419
+ metadata={
420
+ "storage_dir": str(storage_dir),
421
+ "tree_name": tree_name,
422
+ "index_file": str(storage_dir / f"{tree_name}.json"),
423
+ "content_dir": str(storage_dir / tree_name),
424
+ },
425
+ )
426
+ )
427
+
428
+ if self._fail_on_empty and not artifacts:
429
+ raise DataNotFound(
430
+ "ParrotKnowledgeBuilder: pageindex extraction produced no trees "
431
+ f"across {len(sources)} source(s)."
432
+ )
433
+
434
+ self._result = artifacts
435
+ self.add_metric("NUM_TREES", len(artifacts))
436
+ self.add_metric("STORAGE_DIR", str(storage_dir))
437
+
438
+ async def close(self) -> None:
439
+ """Release resources (LLM client, etc.)."""