flowtask 5.12.7__tar.gz → 5.12.9__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 (852) hide show
  1. {flowtask-5.12.7 → flowtask-5.12.9}/PKG-INFO +6 -2
  2. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CallAnalysis.py +22 -6
  3. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PodcastMaker.py +49 -10
  4. flowtask-5.12.9/flowtask/components/SweetSpotScore/__init__.py +14 -0
  5. flowtask-5.12.9/flowtask/components/SweetSpotScore/component.py +444 -0
  6. flowtask-5.12.9/flowtask/components/SweetSpotScore/layers.py +212 -0
  7. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/conf.py +16 -0
  8. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/qworker.py +33 -2
  9. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/__init__.py +7 -0
  10. flowtask-5.12.9/flowtask/interfaces/scoring/__init__.py +65 -0
  11. flowtask-5.12.9/flowtask/interfaces/scoring/abstract.py +93 -0
  12. flowtask-5.12.9/flowtask/interfaces/scoring/engine.py +289 -0
  13. flowtask-5.12.9/flowtask/interfaces/scoring/extractors/__init__.py +16 -0
  14. flowtask-5.12.9/flowtask/interfaces/scoring/extractors/count.py +56 -0
  15. flowtask-5.12.9/flowtask/interfaces/scoring/extractors/gravity.py +83 -0
  16. flowtask-5.12.9/flowtask/interfaces/scoring/extractors/nearest.py +59 -0
  17. flowtask-5.12.9/flowtask/interfaces/scoring/models.py +227 -0
  18. flowtask-5.12.9/flowtask/interfaces/scoring/service.py +97 -0
  19. flowtask-5.12.9/flowtask/interfaces/scoring/spatial.py +98 -0
  20. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/custom_report.py +75 -10
  21. flowtask-5.12.9/flowtask/interfaces/workday/rest.py +217 -0
  22. flowtask-5.12.9/flowtask/services/maintenance/README.md +80 -0
  23. flowtask-5.12.9/flowtask/services/maintenance/__init__.py +45 -0
  24. flowtask-5.12.9/flowtask/services/maintenance/changelog.py +184 -0
  25. flowtask-5.12.9/flowtask/services/maintenance/handlers.py +128 -0
  26. flowtask-5.12.9/flowtask/services/maintenance/health.py +169 -0
  27. flowtask-5.12.9/flowtask/services/maintenance/models.py +216 -0
  28. flowtask-5.12.9/flowtask/services/maintenance/service.py +272 -0
  29. flowtask-5.12.9/flowtask/services/maintenance/store.py +211 -0
  30. flowtask-5.12.9/flowtask/services/maintenance/templates.py +172 -0
  31. flowtask-5.12.9/flowtask/services/maintenance/windows.py +148 -0
  32. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/version.py +1 -1
  33. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/PKG-INFO +6 -2
  34. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/SOURCES.txt +24 -0
  35. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/requires.txt +6 -1
  36. {flowtask-5.12.7 → flowtask-5.12.9}/pyproject.toml +25 -1
  37. {flowtask-5.12.7 → flowtask-5.12.9}/CONTRIBUTING.md +0 -0
  38. {flowtask-5.12.7 → flowtask-5.12.9}/INSTALL +0 -0
  39. {flowtask-5.12.7 → flowtask-5.12.9}/LICENSE +0 -0
  40. {flowtask-5.12.7 → flowtask-5.12.9}/MANIFEST.in +0 -0
  41. {flowtask-5.12.7 → flowtask-5.12.9}/README.md +0 -0
  42. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/__init__.py +0 -0
  43. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/__main__.py +0 -0
  44. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/bots/__init__.py +0 -0
  45. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/bots/check.py +0 -0
  46. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/bots/codebot.py +0 -0
  47. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ASPX.py +0 -0
  48. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ATT.py +0 -0
  49. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/AddDataset.py +0 -0
  50. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Amazon.py +0 -0
  51. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/AutoTask.py +0 -0
  52. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Azure.py +0 -0
  53. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/AzureUsers.py +0 -0
  54. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/BaseAction.py +0 -0
  55. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/BaseLoop.py +0 -0
  56. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/BestBuy.py +0 -0
  57. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CSVToGCS.py +0 -0
  58. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CallSummary.py +0 -0
  59. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CensusData.py +0 -0
  60. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CensusVariables.py +0 -0
  61. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/__init__.py +0 -0
  62. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
  63. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
  64. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
  65. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
  66. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
  67. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
  68. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
  69. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
  70. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CompanyScraper/scrapper.py +0 -0
  71. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyFromBase.py +0 -0
  72. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyFromS3.py +0 -0
  73. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyFromSharepoint.py +0 -0
  74. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyTo.py +0 -0
  75. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToBigQuery.py +0 -0
  76. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToFileBase.py +0 -0
  77. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToMongoDB.py +0 -0
  78. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToPg.py +0 -0
  79. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToRethink.py +0 -0
  80. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToS3.py +0 -0
  81. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CopyToSharepoint.py +0 -0
  82. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Costco.py +0 -0
  83. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateGCSBucket.py +0 -0
  84. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/CreateReport.py +0 -0
  85. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/__init__.py +0 -0
  86. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/charts/__init__.py +0 -0
  87. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/charts/bar.py +0 -0
  88. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/charts/base.py +0 -0
  89. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/charts/pie.py +0 -0
  90. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CreateReport/utils.py +0 -0
  91. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/CustomerSatisfaction.py +0 -0
  92. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DataInput.py +0 -0
  93. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DateList.py +0 -0
  94. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DbClient.py +0 -0
  95. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DialPad.py +0 -0
  96. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DispatchMe.py +0 -0
  97. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DocumentDBQuery.py +0 -0
  98. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFrom.py +0 -0
  99. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromD2L.py +0 -0
  100. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromFTP.py +0 -0
  101. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromGamma.py +0 -0
  102. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromIMAP.py +0 -0
  103. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromS3.py +0 -0
  104. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromSFTP.py +0 -0
  105. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromSharepoint.py +0 -0
  106. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromSmartSheet.py +0 -0
  107. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadFromSmartsheet.py +0 -0
  108. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DownloadS3File.py +0 -0
  109. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Dummy.py +0 -0
  110. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/DuplicatePhoto.py +0 -0
  111. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/EmployeeEvaluation.py +0 -0
  112. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ExecuteSQL.py +0 -0
  113. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ExtractHTML.py +0 -0
  114. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ExtractTranscript.py +0 -0
  115. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileBase.py +0 -0
  116. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileCopy.py +0 -0
  117. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileDelete.py +0 -0
  118. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileExists.py +0 -0
  119. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileIteratorDelete.py +0 -0
  120. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileList.py +0 -0
  121. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileOpen.py +0 -0
  122. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileRead.py +0 -0
  123. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FileRename.py +0 -0
  124. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FilterIf.py +0 -0
  125. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FilterRows/FilterRows.py +0 -0
  126. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FilterRows/__init__.py +0 -0
  127. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/FilterRows/functions.py +0 -0
  128. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GCSToBigQuery.py +0 -0
  129. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GenData.py +0 -0
  130. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GoogleA4.py +0 -0
  131. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GoogleGeoCoding.py +0 -0
  132. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GooglePlaces.py +0 -0
  133. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/GoogleSearch.py +0 -0
  134. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/HTTPClient.py +0 -0
  135. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ICIMS.py +0 -0
  136. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/IF.py +0 -0
  137. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/IcimsFolderCopy.py +0 -0
  138. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ImageFeatures/__init__.py +0 -0
  139. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ImageFeatures/process.py +0 -0
  140. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/IteratorBase.py +0 -0
  141. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/LeadIQ.py +0 -0
  142. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Loop.py +0 -0
  143. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Lowes.py +0 -0
  144. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MS365Usage.py +0 -0
  145. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MSTeamsMessages.py +0 -0
  146. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MarkdownMaker.py +0 -0
  147. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MarketClustering.py +0 -0
  148. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MergeFileList.py +0 -0
  149. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MergeFiles.py +0 -0
  150. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/MilvusOutput.py +0 -0
  151. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NearByStores.py +0 -0
  152. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/__init__.py +0 -0
  153. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
  154. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
  155. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/account.py +0 -0
  156. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/client.py +0 -0
  157. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/district.py +0 -0
  158. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/events.py +0 -0
  159. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/forms.py +0 -0
  160. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/market.py +0 -0
  161. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/organization.py +0 -0
  162. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/photos.py +0 -0
  163. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/project.py +0 -0
  164. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/region.py +0 -0
  165. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/store.py +0 -0
  166. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/models/user.py +0 -0
  167. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinja/router.py +0 -0
  168. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NetworkNinjaClaims.py +0 -0
  169. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/NextStopAgent.py +0 -0
  170. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Odoo.py +0 -0
  171. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OdooInjector.py +0 -0
  172. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OpenFromXML.py +0 -0
  173. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OpenStreetMap.py +0 -0
  174. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OpenWeather.py +0 -0
  175. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OpenWithBase.py +0 -0
  176. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/OpenWithPandas.py +0 -0
  177. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PDFGenerator.py +0 -0
  178. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PGPDecrypt.py +0 -0
  179. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PandasIterator.py +0 -0
  180. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PandasToFile.py +0 -0
  181. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PandasToPowerPoint.py +0 -0
  182. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Paradox.py +0 -0
  183. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParamIterator.py +0 -0
  184. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
  185. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
  186. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
  187. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParrotLoader/__init__.py +0 -0
  188. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParrotLoader/loader.py +0 -0
  189. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ParseHTML.py +0 -0
  190. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PgVectorOutput.py +0 -0
  191. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PlacerStores.py +0 -0
  192. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PlanogramCompliance.py +0 -0
  193. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Pokemon.py +0 -0
  194. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PositiveBot.py +0 -0
  195. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PowerPointSlide.py +0 -0
  196. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/PrintMessage.py +0 -0
  197. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/__init__.py +0 -0
  198. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
  199. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
  200. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
  201. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
  202. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
  203. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductCompliant.py +0 -0
  204. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/__init__.py +0 -0
  205. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
  206. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/base.py +0 -0
  207. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
  208. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
  209. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
  210. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
  211. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
  212. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductInfo/scraper.py +0 -0
  213. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductPricing.py +0 -0
  214. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ProductReportBot.py +0 -0
  215. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/QS.py +0 -0
  216. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/QSBase.py +0 -0
  217. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/QueryIterator.py +0 -0
  218. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/QueryToInsert.py +0 -0
  219. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/QueryToPandas.py +0 -0
  220. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/RESTClient.py +0 -0
  221. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/RethinkDBQuery.py +0 -0
  222. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Rsync.py +0 -0
  223. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/RunSSH.py +0 -0
  224. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/RunShell.py +0 -0
  225. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SAPExtraction.py +0 -0
  226. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SMSAnalysis.py +0 -0
  227. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SMSSummary.py +0 -0
  228. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SalesForce.py +0 -0
  229. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Sassie.py +0 -0
  230. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SaveImageBank/__init__.py +0 -0
  231. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SchedulingVisits.py +0 -0
  232. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ScrapPage.py +0 -0
  233. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ScrapSearch.py +0 -0
  234. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ScrapTool.py +0 -0
  235. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SearchQuery.py +0 -0
  236. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendEmail.py +0 -0
  237. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendNotify/__init__.py +0 -0
  238. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendNotify/component.py +0 -0
  239. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendNotify/models/__init__.py +0 -0
  240. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendNotify/models/abstract.py +0 -0
  241. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SendNotify/models/zoom.py +0 -0
  242. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SentimentAnalysis.py +0 -0
  243. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ServiceScrapper/__init__.py +0 -0
  244. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
  245. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
  246. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
  247. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
  248. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SetVariables.py +0 -0
  249. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SplitPDF.py +0 -0
  250. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Staples.py +0 -0
  251. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SubTask.py +0 -0
  252. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/SuiteCRM.py +0 -0
  253. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Switch.py +0 -0
  254. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableBase.py +0 -0
  255. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableDelete.py +0 -0
  256. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableInput.py +0 -0
  257. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableOutput/TableOutput.py +0 -0
  258. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableOutput/__init__.py +0 -0
  259. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TableSchema.py +0 -0
  260. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Target.py +0 -0
  261. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ThumbnailGenerator.py +0 -0
  262. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ToPandas.py +0 -0
  263. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TransformRows/TransformRows.py +0 -0
  264. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TransformRows/__init__.py +0 -0
  265. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TransformRows/functions.py +0 -0
  266. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/TransposeRows.py +0 -0
  267. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UPCDatabase.py +0 -0
  268. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UnGzip.py +0 -0
  269. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Uncompress.py +0 -0
  270. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UniqueRows.py +0 -0
  271. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Unzip.py +0 -0
  272. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UpdateOperationalVars.py +0 -0
  273. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UploadTo.py +0 -0
  274. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UploadToS3.py +0 -0
  275. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UploadToSFTP.py +0 -0
  276. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UploadToSharepoint.py +0 -0
  277. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/UserFunc.py +0 -0
  278. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/VideoUnderstanding.py +0 -0
  279. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/VivaTracker.py +0 -0
  280. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/WSDLClient.py +0 -0
  281. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Wait.py +0 -0
  282. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Walmart.py +0 -0
  283. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/__init__.py +0 -0
  284. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/__init__.py +0 -0
  285. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/applicant.py +0 -0
  286. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/candidate.py +0 -0
  287. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/cost_center.py +0 -0
  288. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
  289. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/job_posting.py +0 -0
  290. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/job_posting_site.py +0 -0
  291. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/job_requisition.py +0 -0
  292. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/location.py +0 -0
  293. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
  294. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/organizations.py +0 -0
  295. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/reference.py +0 -0
  296. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/time_block.py +0 -0
  297. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/time_off_balance.py +0 -0
  298. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/time_request.py +0 -0
  299. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/models/worker.py +0 -0
  300. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/__init__.py +0 -0
  301. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
  302. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
  303. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
  304. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
  305. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
  306. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
  307. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
  308. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  309. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
  310. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
  311. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
  312. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
  313. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
  314. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
  315. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
  316. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/__init__.py +0 -0
  317. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/applicants.py +0 -0
  318. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/base.py +0 -0
  319. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/candidates.py +0 -0
  320. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/cost_centers.py +0 -0
  321. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
  322. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
  323. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/custom_report.py +0 -0
  324. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
  325. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/job_postings.py +0 -0
  326. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/job_requisitions.py +0 -0
  327. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
  328. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/locations.py +0 -0
  329. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/organization_single.py +0 -0
  330. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/organizations.py +0 -0
  331. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
  332. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/references.py +0 -0
  333. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/time_block_report.py +0 -0
  334. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/time_blocks.py +0 -0
  335. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/time_off_balances.py +0 -0
  336. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/time_requests.py +0 -0
  337. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/types/workers.py +0 -0
  338. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/utils/__init__.py +0 -0
  339. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/utils/utils.py +0 -0
  340. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workday/workday.py +0 -0
  341. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/WorkdayReport.py +0 -0
  342. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Workplace.py +0 -0
  343. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/XMLToPandas.py +0 -0
  344. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Zammad/__init__.py +0 -0
  345. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Zammad/models.py +0 -0
  346. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/Zoom.py +0 -0
  347. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ZoomInfoScraper.py +0 -0
  348. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/ZoomUs.py +0 -0
  349. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/__init__.py +0 -0
  350. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/_census/__init__.py +0 -0
  351. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/_census/cache.py +0 -0
  352. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/_census/fetch.py +0 -0
  353. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/_census/resolver.py +0 -0
  354. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/_census/transform.py +0 -0
  355. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/abstract.py +0 -0
  356. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/flow.py +0 -0
  357. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/gendata/__init__.py +0 -0
  358. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/gendata/date_sequence.py +0 -0
  359. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/gendata/static_list.py +0 -0
  360. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/google.py +0 -0
  361. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/group.py +0 -0
  362. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/pandas_io.py +0 -0
  363. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/py.typed +0 -0
  364. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/reviewscrap.py +0 -0
  365. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tAddTotalRow.py +0 -0
  366. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tAutoincrement.py +0 -0
  367. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tConcat.py +0 -0
  368. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tConditionalMultiply.py +0 -0
  369. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tCrosstab.py +0 -0
  370. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tDictKey.py +0 -0
  371. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tExplode.py +0 -0
  372. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tFilter.py +0 -0
  373. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tFilterCommonValues.py +0 -0
  374. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tFlatten.py +0 -0
  375. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tFrequencyWeights.py +0 -0
  376. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tGroup.py +0 -0
  377. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tJoin.py +0 -0
  378. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tMap/__init__.py +0 -0
  379. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tMap/functions.py +0 -0
  380. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tMap/tMap.py +0 -0
  381. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tMelt.py +0 -0
  382. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tMerge.py +0 -0
  383. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tOrder.py +0 -0
  384. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tPandas.py +0 -0
  385. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tPivot.py +0 -0
  386. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tPluckCols.py +0 -0
  387. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/tUnnest.py +0 -0
  388. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/components/user.py +0 -0
  389. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/__init__.py +0 -0
  390. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/categories.json +0 -0
  391. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/cli.py +0 -0
  392. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
  393. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
  394. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
  395. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
  396. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
  397. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
  398. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
  399. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
  400. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
  401. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
  402. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
  403. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
  404. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
  405. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
  406. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
  407. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
  408. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
  409. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
  410. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
  411. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
  412. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
  413. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
  414. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
  415. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
  416. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
  417. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
  418. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
  419. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
  420. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
  421. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
  422. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
  423. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
  424. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
  425. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
  426. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
  427. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
  428. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
  429. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
  430. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
  431. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
  432. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
  433. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
  434. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
  435. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
  436. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
  437. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
  438. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
  439. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
  440. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
  441. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
  442. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
  443. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
  444. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
  445. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
  446. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
  447. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
  448. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
  449. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
  450. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
  451. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
  452. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
  453. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
  454. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
  455. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
  456. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
  457. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
  458. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
  459. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
  460. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
  461. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
  462. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
  463. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/QS.doc.json +0 -0
  464. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
  465. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
  466. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
  467. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
  468. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
  469. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
  470. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
  471. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
  472. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
  473. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
  474. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
  475. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
  476. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
  477. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
  478. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
  479. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
  480. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
  481. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
  482. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
  483. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
  484. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
  485. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
  486. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
  487. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
  488. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
  489. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
  490. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
  491. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
  492. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
  493. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
  494. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
  495. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
  496. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
  497. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
  498. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
  499. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
  500. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
  501. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
  502. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
  503. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
  504. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
  505. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
  506. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
  507. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
  508. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
  509. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
  510. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
  511. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
  512. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
  513. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generated/index.json +0 -0
  514. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/generator.py +0 -0
  515. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/models.py +0 -0
  516. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/parser.py +0 -0
  517. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/schema.py +0 -0
  518. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/documentation/toolkit.py +0 -0
  519. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/download.py +0 -0
  520. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/__init__.py +0 -0
  521. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/__init__.py +0 -0
  522. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/abstract.py +0 -0
  523. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/alerts/__init__.py +0 -0
  524. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/alerts/colfunctions.py +0 -0
  525. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/alerts/functions.py +0 -0
  526. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/dummy.py +0 -0
  527. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/exec.py +0 -0
  528. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/file/__init__.py +0 -0
  529. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/file/base.py +0 -0
  530. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/file/copy.py +0 -0
  531. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/file/delete.py +0 -0
  532. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/interfaces/__init__.py +0 -0
  533. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/interfaces/client.py +0 -0
  534. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/interfaces/credentials.py +0 -0
  535. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/interfaces/notifications.py +0 -0
  536. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/jira.py +0 -0
  537. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/log.py +0 -0
  538. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/logerr.py +0 -0
  539. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/notify.py +0 -0
  540. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/notify_event.py +0 -0
  541. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/publish.py +0 -0
  542. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/sendfile.py +0 -0
  543. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/task.py +0 -0
  544. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/teams.py +0 -0
  545. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/events/webhook.py +0 -0
  546. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/events/manager.py +0 -0
  547. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/exceptions.py +0 -0
  548. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/__init__.py +0 -0
  549. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/base.py +0 -0
  550. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/docker.py +0 -0
  551. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/events.py +0 -0
  552. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/exceptions.py +0 -0
  553. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/k8s.py +0 -0
  554. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/local.py +0 -0
  555. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/models.py +0 -0
  556. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/publish.py +0 -0
  557. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/registry.py +0 -0
  558. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/executors/resolver.py +0 -0
  559. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/extensions/__init__.py +0 -0
  560. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/extensions/abstract.py +0 -0
  561. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/extensions/component_docs.py +0 -0
  562. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/extensions/logging/__init__.py +0 -0
  563. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/factory/__init__.py +0 -0
  564. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/factory/agent.py +0 -0
  565. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/factory/composer.py +0 -0
  566. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/factory/parser.py +0 -0
  567. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/factory/validator.py +0 -0
  568. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/handlers/__init__.py +0 -0
  569. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/handlers/component.py +0 -0
  570. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/__init__.py +0 -0
  571. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/__init__.py +0 -0
  572. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/abstract.py +0 -0
  573. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/dummy.py +0 -0
  574. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/jira.py +0 -0
  575. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/rest.py +0 -0
  576. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/sampledata.py +0 -0
  577. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/sensor.py +0 -0
  578. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/task.py +0 -0
  579. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/ticket.py +0 -0
  580. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/zammad.py +0 -0
  581. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/actions/zoom_event.py +0 -0
  582. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/hook.py +0 -0
  583. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/models.py +0 -0
  584. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/service.py +0 -0
  585. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/step.py +0 -0
  586. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/__init__.py +0 -0
  587. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/base.py +0 -0
  588. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/__init__.py +0 -0
  589. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/base.py +0 -0
  590. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/mqtt.py +0 -0
  591. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
  592. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/redis.py +0 -0
  593. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/brokers/sqs.py +0 -0
  594. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/fs.py +0 -0
  595. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/http.py +0 -0
  596. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/imap.py +0 -0
  597. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/jira.py +0 -0
  598. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/mail.py +0 -0
  599. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/postgres.py +0 -0
  600. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/responses/__init__.py +0 -0
  601. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/responses/base.py +0 -0
  602. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/sharepoint.py +0 -0
  603. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/ssh.py +0 -0
  604. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/tagged.py +0 -0
  605. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/upload.py +0 -0
  606. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/watch.py +0 -0
  607. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/web.py +0 -0
  608. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/hooks/types/zoom.py +0 -0
  609. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/AzureClient.py +0 -0
  610. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/AzureGraph.py +0 -0
  611. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/Boto3Client.py +0 -0
  612. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/DropboxClient.py +0 -0
  613. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/ExcelHandler.py +0 -0
  614. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/FTPClient.py +0 -0
  615. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleCalendar.py +0 -0
  616. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleClient.py +0 -0
  617. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleDrive.py +0 -0
  618. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleGCS.py +0 -0
  619. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleGeocoding.py +0 -0
  620. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleLang.py +0 -0
  621. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GooglePub.py +0 -0
  622. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/GoogleSheet.py +0 -0
  623. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/IMAPClient.py +0 -0
  624. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/LLMClient.py +0 -0
  625. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/O365Calendar.py +0 -0
  626. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/O365Client.py +0 -0
  627. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/OneDrive.py +0 -0
  628. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/Outlook.py +0 -0
  629. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/ParrotBot.py +0 -0
  630. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/ParrotTool.py +0 -0
  631. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/SOAPClient.py +0 -0
  632. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/SSHClient.py +0 -0
  633. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/Sharepoint.py +0 -0
  634. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/abstract.py +0 -0
  635. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/azure_component.py +0 -0
  636. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/azureauth.py +0 -0
  637. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/base_action.py +0 -0
  638. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/base_loop.py +0 -0
  639. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/cache.py +0 -0
  640. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/client.py +0 -0
  641. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/compress.py +0 -0
  642. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/copy_from_base.py +0 -0
  643. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/copy_to.py +0 -0
  644. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/copy_to_file_base.py +0 -0
  645. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/credentials.py +0 -0
  646. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/d2l.py +0 -0
  647. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/databases/__init__.py +0 -0
  648. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/databases/db.py +0 -0
  649. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/databases/documentdb.py +0 -0
  650. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/databases/rethink.py +0 -0
  651. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/__init__.py +0 -0
  652. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/abstract.py +0 -0
  653. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/arrow.py +0 -0
  654. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/dt.py +0 -0
  655. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/pandas.py +0 -0
  656. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/dataframes/polars.py +0 -0
  657. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/db.py +0 -0
  658. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/db_client.py +0 -0
  659. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/download_from.py +0 -0
  660. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/env.py +0 -0
  661. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/file_base.py +0 -0
  662. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/flow.py +0 -0
  663. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/func.py +0 -0
  664. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/gamma.py +0 -0
  665. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/google_base.py +0 -0
  666. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/group.py +0 -0
  667. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/http.py +0 -0
  668. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/locale.py +0 -0
  669. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/log.py +0 -0
  670. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/mask.py +0 -0
  671. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/notification.py +0 -0
  672. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/parrot/__init__.py +0 -0
  673. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/parrot/agent.py +0 -0
  674. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/parrot/client.py +0 -0
  675. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/pipelines/__init__.py +0 -0
  676. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/pipelines/parrot.py +0 -0
  677. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/playwright.py +0 -0
  678. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/powerpoint.py +0 -0
  679. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/ppt.py +0 -0
  680. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/py.typed +0 -0
  681. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/qs.py +0 -0
  682. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/qs_base.py +0 -0
  683. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/result.py +0 -0
  684. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/sassie.py +0 -0
  685. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/search.py +0 -0
  686. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/selenium/__init__.py +0 -0
  687. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/selenium/options.py +0 -0
  688. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/selenium/service.py +0 -0
  689. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/selenium_service.py +0 -0
  690. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/smartsheet.py +0 -0
  691. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/stat.py +0 -0
  692. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/t_pandas.py +0 -0
  693. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/table_base.py +0 -0
  694. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/task.py +0 -0
  695. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/teams.py +0 -0
  696. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/template.py +0 -0
  697. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/tickets.py +0 -0
  698. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/upload_to.py +0 -0
  699. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/user.py +0 -0
  700. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/vectorstores/__init__.py +0 -0
  701. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/vectorstores/abstract.py +0 -0
  702. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/vectorstores/milvus.py +0 -0
  703. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/__init__.py +0 -0
  704. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/config.py +0 -0
  705. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
  706. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
  707. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/base.py +0 -0
  708. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
  709. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
  710. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
  711. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
  712. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
  713. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
  714. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
  715. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
  716. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
  717. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
  718. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/locations.py +0 -0
  719. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
  720. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
  721. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
  722. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
  723. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/references.py +0 -0
  724. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
  725. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
  726. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
  727. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
  728. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/handlers/workers.py +0 -0
  729. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/__init__.py +0 -0
  730. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/applicant.py +0 -0
  731. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/candidate.py +0 -0
  732. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/clock_event.py +0 -0
  733. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/cost_center.py +0 -0
  734. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
  735. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/job_posting.py +0 -0
  736. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
  737. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
  738. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/location.py +0 -0
  739. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
  740. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/organizations.py +0 -0
  741. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/reference.py +0 -0
  742. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/time_block.py +0 -0
  743. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
  744. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/time_request.py +0 -0
  745. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/models/worker.py +0 -0
  746. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
  747. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
  748. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
  749. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
  750. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
  751. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
  752. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
  753. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
  754. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  755. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
  756. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
  757. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
  758. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
  759. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
  760. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
  761. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
  762. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/service.py +0 -0
  763. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/utils/__init__.py +0 -0
  764. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/workday/utils/utils.py +0 -0
  765. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/zammad.py +0 -0
  766. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/interfaces/zoom.py +0 -0
  767. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/models.py +0 -0
  768. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/__init__.py +0 -0
  769. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/_yaml.pyx +0 -0
  770. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/argparser.py +0 -0
  771. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/base.pxd +0 -0
  772. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/base.pyx +0 -0
  773. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/json.pyx +0 -0
  774. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/maps.py +0 -0
  775. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/__init__.py +0 -0
  776. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/checker.py +0 -0
  777. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/detector.py +0 -0
  778. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/registry.py +0 -0
  779. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/report.py +0 -0
  780. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/syntax/schema.py +0 -0
  781. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/parsers/toml.pyx +0 -0
  782. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/plugins/__init__.py +0 -0
  783. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/plugins/components_/__init__.py +0 -0
  784. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/plugins/handler/__init__.py +0 -0
  785. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/plugins/importer.py +0 -0
  786. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/plugins/sources/__init__.py +0 -0
  787. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/runner.py +0 -0
  788. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/__init__.py +0 -0
  789. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/functions.py +0 -0
  790. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/handlers/__init__.py +0 -0
  791. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/handlers/manager.py +0 -0
  792. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/handlers/models.py +0 -0
  793. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/handlers/service.py +0 -0
  794. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/notifications.py +0 -0
  795. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/scheduler/scheduler.py +0 -0
  796. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/__init__.py +0 -0
  797. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/bots/__init__.py +0 -0
  798. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/bots/telegram.py +0 -0
  799. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/files/__init__.py +0 -0
  800. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/files/manager.py +0 -0
  801. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/files/model.py +0 -0
  802. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/files/service.py +0 -0
  803. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/jira/__init__.py +0 -0
  804. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/jira/jira_actions.py +0 -0
  805. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/__init__.py +0 -0
  806. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/launcher.py +0 -0
  807. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/manager.py +0 -0
  808. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/service.py +0 -0
  809. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/task_manager.py +0 -0
  810. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/services/tasks/tasks.py +0 -0
  811. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/__init__.py +0 -0
  812. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/exceptions.py +0 -0
  813. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/files/__init__.py +0 -0
  814. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/files/abstract.py +0 -0
  815. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/files/filesystem.py +0 -0
  816. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/__init__.py +0 -0
  817. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/abstract.py +0 -0
  818. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/database.py +0 -0
  819. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/filesystem.py +0 -0
  820. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/github.py +0 -0
  821. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/memory.py +0 -0
  822. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/storages/tasks/row.py +0 -0
  823. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/__init__.py +0 -0
  824. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/abstract.py +0 -0
  825. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/command.py +0 -0
  826. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/pile.py +0 -0
  827. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/py.typed +0 -0
  828. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/task.py +0 -0
  829. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tasks/workers.py +0 -0
  830. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/template/__init__.py +0 -0
  831. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/tests.py +0 -0
  832. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/types/__init__.py +0 -0
  833. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/types/typedefs.pyx +0 -0
  834. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/__init__.py +0 -0
  835. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/constants.py +0 -0
  836. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/encoders.py +0 -0
  837. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/executor.py +0 -0
  838. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/functions.pyx +0 -0
  839. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/json.pxi +0 -0
  840. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/json.pyx +0 -0
  841. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/mail.py +0 -0
  842. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/msgraph_patch.py +0 -0
  843. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/parseqs.pyx +0 -0
  844. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/stats.py +0 -0
  845. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/transformations.py +0 -0
  846. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/uv.py +0 -0
  847. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask/utils/validators.py +0 -0
  848. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/dependency_links.txt +0 -0
  849. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/entry_points.txt +0 -0
  850. {flowtask-5.12.7 → flowtask-5.12.9}/flowtask.egg-info/top_level.txt +0 -0
  851. {flowtask-5.12.7 → flowtask-5.12.9}/setup.cfg +0 -0
  852. {flowtask-5.12.7 → flowtask-5.12.9}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowtask
3
- Version: 5.12.7
3
+ Version: 5.12.9
4
4
  Summary: Framework for Task orchestration
5
5
  Author-email: Jesus Lara <jesuslarag@gmail.com>
6
6
  License: Apache-2.0
@@ -45,7 +45,7 @@ Requires-Dist: aioimaplib==1.1.0
45
45
  Requires-Dist: adal==1.2.7
46
46
  Requires-Dist: xlrd>=2.0.2
47
47
  Requires-Dist: xmltodict<1.0.0,>=0.14.2
48
- Requires-Dist: zeep[async]==4.3.2
48
+ Requires-Dist: zeep[async]>=4.3.3
49
49
  Requires-Dist: nltk>=3.9.3
50
50
  Requires-Dist: jdcal==1.4.1
51
51
  Requires-Dist: html5lib==1.1
@@ -119,12 +119,16 @@ Requires-Dist: microsoft-kiota-authentication-azure==1.9.6
119
119
  Requires-Dist: msgraph-sdk==1.22.0
120
120
  Requires-Dist: zendriver>=0.15.2
121
121
  Requires-Dist: pyarrow>=14.0
122
+ Requires-Dist: scipy>=1.13
123
+ Requires-Dist: scikit-learn>=1.5
122
124
  Provides-Extra: docker
123
125
  Requires-Dist: aiodocker>=0.21.0; extra == "docker"
124
126
  Provides-Extra: k8s
125
127
  Requires-Dist: kr8s>=0.16.0; extra == "k8s"
126
128
  Provides-Extra: git
127
129
  Requires-Dist: gitpython>=3.1.50; extra == "git"
130
+ Provides-Extra: scoring
131
+ Requires-Dist: h3>=4.0; extra == "scoring"
128
132
  Provides-Extra: ai
129
133
  Requires-Dist: ai-parrot[agents,graphindex,images,llms,retrieval]>=0.20.4; extra == "ai"
130
134
  Requires-Dist: ai-parrot-loaders[audio,document,ebook,ml,pdf,scraping,video,web,youtube]>=0.1.0; extra == "ai"
@@ -1,5 +1,6 @@
1
1
  from collections.abc import Callable
2
2
  import asyncio
3
+ import re
3
4
  import pandas as pd
4
5
  import orjson
5
6
  from ..exceptions import DataNotFound, ComponentError
@@ -711,11 +712,18 @@ class CallAnalysis(ParrotBot, FlowComponent):
711
712
  formatted_question = self.format_question(call_identifier, transcripts, row)
712
713
  result = await self._bot.invoke(question=formatted_question)
713
714
 
714
- # Try to parse JSON output before returning
715
- try:
716
- parsed_output = orjson.loads(result.output) if isinstance(result.output, str) else result.output
717
- except Exception:
718
- parsed_output = result.output # fallback: keep as string if parsing fails
715
+ # Try to parse JSON output before returning. Some models wrap
716
+ # the JSON in markdown code fences (```json ... ```) — strip
717
+ # those first. If parsing still fails, raise so the retry
718
+ # loop below re-invokes the LLM instead of persisting the
719
+ # raw/malformed text as if it were the analysis.
720
+ if isinstance(result.output, str):
721
+ cleaned = re.sub(
722
+ r'^```(?:json)?\s*|\s*```\s*$', '', result.output.strip()
723
+ )
724
+ parsed_output = orjson.loads(cleaned)
725
+ else:
726
+ parsed_output = result.output
719
727
 
720
728
  # Success - return the parsed result
721
729
  self._logger.debug(f"✓ Successfully analyzed {call_identifier}")
@@ -1043,7 +1051,15 @@ class CallAnalysis(ParrotBot, FlowComponent):
1043
1051
  try:
1044
1052
  return json.loads(cleaned)
1045
1053
  except (json.JSONDecodeError, ValueError):
1046
- return cleaned
1054
+ # Not valid JSON even after stripping fences (truncated
1055
+ # output, leaked reasoning text, etc). Storing the raw
1056
+ # string would corrupt the jsonb column downstream, so
1057
+ # drop it instead of persisting garbage.
1058
+ self._logger.warning(
1059
+ f"Discarding non-JSON {self.output_column} value "
1060
+ f"(unparseable after cleanup): {cleaned[:120]!r}"
1061
+ )
1062
+ return None
1047
1063
  return x
1048
1064
  result_df[self.output_column] = result_df[self.output_column].apply(clean_json_formatting)
1049
1065
 
@@ -62,8 +62,10 @@ class PodcastMaker(AgentBase, FlowComponent):
62
62
 
63
63
  Wraps ``BasicAgent.speech_report()`` as a FlowTask component. For each
64
64
  row in the input DataFrame the agent generates a conversational script and
65
- synthesises it to audio. The TTS model is always determined by the agent
66
- internally the ``llm:`` block controls only the script-generation LLM.
65
+ synthesises it to audio. Note the ``llm:`` block configures the agent's
66
+ general conversation model it does **not** reach ``speech_report()``.
67
+ Use ``script_model``/``tts_model`` to override the script/TTS models used
68
+ for generation (both default to Gemini 2.5 inside ``BasicAgent`` otherwise).
67
69
 
68
70
  Failed episodes (common with Google TTS rate limits) are not discarded.
69
71
  They remain in the output DataFrame with ``podcast_path=None``,
@@ -95,8 +97,20 @@ class PodcastMaker(AgentBase, FlowComponent):
95
97
  → ``costco_canada.wav``). Useful for making files human-readable.
96
98
  When combined with ``as_bytes``, the rename happens first so
97
99
  ``podcast_path`` reflects the new name.
98
- llm (dict): LLM config for script generation — ``llm``, ``model``,
99
- ``temperature``. Does **not** affect the TTS model.
100
+ output_directory (str, optional): Directory path where generated audio
101
+ files are written. When omitted, ``BasicAgent`` defaults to
102
+ ``STATIC_DIR/{agent_id}/podcasts``. Also reused internally as
103
+ ``destination`` (AgentBase's required startup workspace) unless
104
+ ``destination`` is set explicitly — one path covers both.
105
+ script_model (str, optional): Gemini model for script generation
106
+ (passed to ``speech_report(script_model=...)``). Defaults to
107
+ ``BasicAgent``'s own default (``gemini-2.5-flash``) when omitted.
108
+ tts_model (str, optional): Gemini model for audio synthesis (passed to
109
+ ``speech_report(tts_model=...)``). Defaults to ``BasicAgent``'s
110
+ own default (``gemini-2.5-flash-preview-tts``) when omitted.
111
+ llm (dict): LLM config for the agent's general conversation model
112
+ (``llm``, ``model``, ``temperature``). Does **not** affect
113
+ ``speech_report()`` — use ``script_model``/``tts_model`` for that.
100
114
 
101
115
  Example YAML::
102
116
 
@@ -140,10 +154,26 @@ class PodcastMaker(AgentBase, FlowComponent):
140
154
  self.title_column: Optional[str] = kwargs.get("title_column")
141
155
  self.output_column: str = kwargs.get("output_column", "podcast_result")
142
156
  self.podcast_instructions: str = kwargs.get("podcast_instructions", "for_podcast.txt")
157
+ # Optional overrides for the underlying Gemini models (BasicAgent
158
+ # defaults to gemini-2.5-flash for the script and gemini-2.5-flash-
159
+ # preview-tts for the audio if these are left unset).
160
+ self.script_model: Optional[str] = kwargs.get("script_model")
161
+ self.tts_model: Optional[str] = kwargs.get("tts_model")
143
162
  self.max_lines: int = int(kwargs.get("max_lines", 20))
144
163
  self.num_speakers: int = int(kwargs.get("num_speakers", 2))
145
164
  self.as_bytes: bool = bool(kwargs.get("as_bytes", False))
146
165
  self.filename_column: Optional[str] = kwargs.get("filename_column")
166
+ # Optional override for where generated audio files are written.
167
+ # Defaults (inside BasicAgent) to STATIC_DIR/{agent_id}/podcasts.
168
+ # Stored as str (not Path): FlowComponent re-applies raw kwargs after
169
+ # super().__init__(), which would otherwise clobber a Path back to str.
170
+ self.output_directory: Optional[str] = kwargs.get("output_directory")
171
+ # AgentBase.start() requires self.destination to exist (used as the
172
+ # tools base_dir — irrelevant here since _define_tools() is a no-op).
173
+ # Reuse output_directory for it so only one path needs to be declared
174
+ # in YAML; an explicit `destination` kwarg still wins if provided.
175
+ if self.output_directory and "destination" not in kwargs:
176
+ self.destination = self.output_directory
147
177
  # Optional speaker override from YAML
148
178
  self._speakers_cfg: Optional[Dict[str, Any]] = kwargs.get("speakers")
149
179
  # Parse llm config dict — AgentBase expects llm to be a provider string,
@@ -223,17 +253,23 @@ class PodcastMaker(AgentBase, FlowComponent):
223
253
  # AgentBase.start() creates and configures self._agent
224
254
  await super().start(**kwargs)
225
255
 
226
- # Resolve the prompt file using PodcastMaker's own agent_id so it
227
- # looks in AGENTS_DIR/podcast_maker/prompts/ instead of the internal
228
- # agent's agent_id directory (which defaults to "agent").
229
- prompt_path = AGENTS_DIR / self.agent_id / "prompts" / self.podcast_instructions
256
+ # Resolve the prompt file, preferring the task/program repo (same
257
+ # convention as ParrotBot: {program}/prompts/{file}, e.g. PositiveBot)
258
+ # over the shared AGENTS_DIR/podcast_maker/prompts/ location. `self.directory`
259
+ # is set by AgentBase.start() above (defaults to the taskstore's program path).
260
+ task_prompt_path = self.directory / "prompts" / self.podcast_instructions
261
+ if task_prompt_path.exists():
262
+ prompt_path = task_prompt_path
263
+ else:
264
+ prompt_path = AGENTS_DIR / self.agent_id / "prompts" / self.podcast_instructions
230
265
  try:
231
266
  self._resolved_podcast_instructions: str = prompt_path.read_text(encoding="utf-8")
232
267
  self.logger.debug("PodcastMaker: loaded prompt from %s", prompt_path)
233
268
  except FileNotFoundError:
234
269
  self.logger.warning(
235
- "PodcastMaker: prompt file not found at %s passing filename to agent",
236
- prompt_path,
270
+ "PodcastMaker: prompt file not found in task repo (%s) or AGENTS_DIR (%s) "
271
+ "— passing filename to agent",
272
+ task_prompt_path, prompt_path,
237
273
  )
238
274
  self._resolved_podcast_instructions = self.podcast_instructions
239
275
 
@@ -290,6 +326,9 @@ class PodcastMaker(AgentBase, FlowComponent):
290
326
  max_lines=self.max_lines,
291
327
  num_speakers=self.num_speakers,
292
328
  podcast_instructions=self._resolved_podcast_instructions,
329
+ output_directory=Path(self.output_directory) if self.output_directory else None,
330
+ script_model=self.script_model,
331
+ tts_model=self.tts_model,
293
332
  )
294
333
  podcast_path = str(result.get("podcast_path")) if result.get("podcast_path") else None
295
334
  script_path = str(result.get("script_path")) if result.get("script_path") else None
@@ -0,0 +1,14 @@
1
+ """
2
+ SweetSpotScore.
3
+
4
+ DAG component for spatial and/or column-value suitability (site-selection)
5
+ scoring: DataFrame(s) in, enriched DataFrame out (``sweetspot_score``,
6
+ ``sweetspot_rank``, ``sweetspot_filtered``, and optional per-criterion
7
+ breakdown columns). Wraps ``flowtask.interfaces.scoring.SweetSpotScorer``
8
+ and/or ``ScoringEngine``. No LLM, no agent dependency — the scoring policy
9
+ comes from inline YAML component config or an external policy file
10
+ (FEAT-190, FEAT-191).
11
+ """
12
+ from .component import SweetSpotScore
13
+
14
+ __all__ = ["SweetSpotScore"]
@@ -0,0 +1,444 @@
1
+ """SweetSpotScore FlowComponent (FEAT-190, spec Module 8 / FEAT-191).
2
+
3
+ DAG node: DataFrame(s) in -> enriched DataFrame out. Wraps ``ScoringEngine``
4
+ (column-value criteria) and/or ``SweetSpotScorer`` (spatial criteria) for
5
+ pipeline use. No LLM, no agent, no dataset-manager dependency — the scoring
6
+ policy is provided via inline YAML component config or an external
7
+ YAML/JSON ``policy_file`` (FEAT-191, kept simple for v1, per spec Key
8
+ Constraints).
9
+
10
+ Example YAML (spatial, FEAT-190):
11
+
12
+ ```yaml
13
+ SweetSpotScore:
14
+ depends:
15
+ - QueryToPandas_pois
16
+ - QueryToPandas_census
17
+ candidates:
18
+ source: 0 # index into depends list
19
+ lat_col: latitude
20
+ lon_col: longitude
21
+ id_col: store_id
22
+ layers:
23
+ - name: hotels
24
+ source: 1
25
+ lat_col: lat
26
+ lon_col: lng
27
+ attribute_cols: [rooms]
28
+ policy:
29
+ profile: pizza_midmarket
30
+ criteria:
31
+ - name: hotels
32
+ dataset: hotels
33
+ feature_type: gravity
34
+ params: {k: 5, attribute: rooms, kernel: gaussian, bandwidth_m: 2000}
35
+ value_fn: {kind: sigmoid, center: 500, steepness: 0.005}
36
+ weight: 0.4
37
+ aggregation: weighted_mean
38
+ ```
39
+
40
+ Example YAML (column-value shorthand, FEAT-191). ``policy_file`` and
41
+ ``policy`` are mutually exclusive — if both are set, ``policy_file`` takes
42
+ precedence and ``policy`` is ignored (a warning is logged). Use ONE of the
43
+ two forms below:
44
+
45
+ ```yaml
46
+ # Form A: external policy file
47
+ SweetSpotScore:
48
+ policy_file: scoring/store_ranking.yaml
49
+ include_breakdown: true
50
+ ```
51
+
52
+ ```yaml
53
+ # Form B: inline policy block
54
+ SweetSpotScore:
55
+ include_breakdown: true
56
+ policy:
57
+ profile: store_ranking
58
+ criteria:
59
+ - column: revenue
60
+ weight: 0.5
61
+ - column: rent
62
+ weight: 0.2
63
+ direction: lower_better
64
+ ```
65
+ """
66
+ from collections.abc import Callable
67
+ import asyncio
68
+ from typing import Optional
69
+
70
+ import numpy as np
71
+ import pandas as pd
72
+ from navconfig import BASE_DIR
73
+ from pydantic import ValidationError
74
+
75
+ from ...interfaces.flow import FlowComponent
76
+ from ...exceptions import ComponentError
77
+ from ...interfaces.scoring import (
78
+ CandidateGrid,
79
+ Criterion,
80
+ HardFilter,
81
+ POILayer,
82
+ ScoreResult,
83
+ ScoringPolicy,
84
+ )
85
+
86
+
87
+ class SweetSpotScore(FlowComponent):
88
+ """DAG node: DataFrame(s) in, enriched DataFrame out.
89
+
90
+ Supports three scoring modes, resolved automatically from the
91
+ normalized policy at ``start()`` time (spec K4):
92
+
93
+ - **Column-value-only**: every criterion/filter reads a DataFrame
94
+ column directly (``ScoringEngine.score()`` called directly, no
95
+ scipy/h3 import).
96
+ - **Spatial-only**: existing FEAT-190 path, unchanged
97
+ (``SweetSpotScorer.score()``).
98
+ - **Mixed**: a unified feature matrix is assembled from both sources,
99
+ then ``ScoringEngine.score()`` is called directly.
100
+ """
101
+
102
+ _version = "1.0.0"
103
+
104
+ def __init__(
105
+ self,
106
+ loop: asyncio.AbstractEventLoop = None,
107
+ job: Callable = None,
108
+ stat: Callable = None,
109
+ **kwargs,
110
+ ):
111
+ # Scoring config, extracted from YAML component arguments.
112
+ self._policy_config: dict = kwargs.pop("policy", {})
113
+ self._policy_file: Optional[str] = kwargs.pop("policy_file", None)
114
+ self._candidates_config: dict = kwargs.pop("candidates", {})
115
+ self._layers_config: list = kwargs.pop("layers", [])
116
+ self._include_breakdown: bool = kwargs.pop("include_breakdown", False)
117
+ self._scorer = None
118
+ self._df: list = []
119
+ # Populated in start(): the frozen, normalized ScoringPolicy plus
120
+ # the criterion/filter-index -> column-name maps used by run() to
121
+ # decide the column-value vs. spatial code path (spec Module 3/5).
122
+ self._policy: Optional[ScoringPolicy] = None
123
+ self._column_criteria: dict[int, str] = {}
124
+ self._column_filters: dict[int, str] = {}
125
+ super(SweetSpotScore, self).__init__(loop=loop, job=job, stat=stat, **kwargs)
126
+
127
+ async def start(self, **kwargs):
128
+ if self.previous:
129
+ if isinstance(self.input, list):
130
+ self._df = self.input # multiple predecessor DataFrames
131
+ else:
132
+ self._df = [self.input] # single predecessor DataFrame
133
+ else:
134
+ raise ComponentError(
135
+ "SweetSpotScore requires input DataFrames", status=404
136
+ )
137
+
138
+ from .layers import load_policy_file, normalize_policy
139
+
140
+ try:
141
+ if self._policy_file:
142
+ if self._policy_config:
143
+ self._logger.warning(
144
+ "SweetSpotScore: both 'policy_file' and 'policy' were "
145
+ "provided; 'policy_file' takes precedence and the "
146
+ "inline 'policy' block will be ignored."
147
+ )
148
+ raw_policy = load_policy_file(self._policy_file, BASE_DIR)
149
+ elif self._policy_config:
150
+ raw_policy = self._policy_config
151
+ else:
152
+ raise ComponentError(
153
+ "SweetSpotScore requires either 'policy' (inline) or "
154
+ "'policy_file' (external YAML/JSON) configuration."
155
+ )
156
+ normalized = normalize_policy(raw_policy)
157
+ except FileNotFoundError as exc:
158
+ raise ComponentError(
159
+ f"SweetSpotScore: policy_file not found: {exc}"
160
+ ) from exc
161
+ except ValueError as exc:
162
+ raise ComponentError(
163
+ f"SweetSpotScore: policy configuration error: {exc}"
164
+ ) from exc
165
+
166
+ # Separate column-value criteria/filters from spatial ones, and
167
+ # strip the `_column` (and any other `_`-prefixed) metadata before
168
+ # constructing the frozen ScoringPolicy. Column-value entries get a
169
+ # placeholder `feature_type` (the engine never dispatches on it —
170
+ # see spec K2/OQ2) so they validate against the spatial-only
171
+ # `Criterion.feature_type`/`HardFilter.feature_type` Literal.
172
+ column_criteria: dict[int, str] = {}
173
+ clean_criteria = []
174
+ for idx, criterion in enumerate(normalized.get("criteria", [])):
175
+ column = criterion.get("_column")
176
+ clean = {k: v for k, v in criterion.items() if not k.startswith("_")}
177
+ if column is not None:
178
+ column_criteria[idx] = column
179
+ clean.setdefault("dataset", "__column__")
180
+ clean["feature_type"] = "count_within_radius"
181
+ clean.setdefault("params", {})
182
+ clean_criteria.append(clean)
183
+
184
+ column_filters: dict[int, str] = {}
185
+ clean_filters = []
186
+ for idx, hard_filter in enumerate(normalized.get("filters", [])):
187
+ column = hard_filter.get("_column")
188
+ clean = {k: v for k, v in hard_filter.items() if not k.startswith("_")}
189
+ if column is not None:
190
+ column_filters[idx] = column
191
+ clean.setdefault("dataset", "__column__")
192
+ clean["feature_type"] = "count_within_radius"
193
+ clean.setdefault("params", {})
194
+ clean_filters.append(clean)
195
+
196
+ try:
197
+ self._policy = ScoringPolicy(
198
+ **{**normalized, "criteria": clean_criteria, "filters": clean_filters}
199
+ )
200
+ except ValidationError as exc:
201
+ raise ComponentError(
202
+ f"SweetSpotScore: invalid policy configuration: {exc}"
203
+ ) from exc
204
+
205
+ self._column_criteria = column_criteria
206
+ self._column_filters = column_filters
207
+
208
+ # Only spin up the spatial scorer facade (``SweetSpotScorer``) when
209
+ # ``run()`` will actually take the all-spatial branch and call
210
+ # ``self._scorer.score(...)`` directly — column-only policies must
211
+ # NOT trigger a scipy/h3 import anywhere in their code path (spec
212
+ # K3), and mixed policies use ``extractor_registry`` directly
213
+ # (``_extract_spatial_feature``) instead of the scorer facade, so
214
+ # constructing it there would be wasted work.
215
+ is_all_spatial = not column_criteria and not column_filters and (
216
+ self._policy.criteria or self._policy.filters
217
+ )
218
+ if is_all_spatial:
219
+ # Lazy import: avoid pulling scipy/sklearn at component
220
+ # registration time — only needed once the component actually
221
+ # runs a spatial criterion.
222
+ from flowtask.interfaces.scoring import SweetSpotScorer
223
+
224
+ self._scorer = SweetSpotScorer()
225
+
226
+ await super(SweetSpotScore, self).start(**kwargs)
227
+ return True
228
+
229
+ def _fill_column_features(
230
+ self, matrix: np.ndarray, df: pd.DataFrame, mapping: dict[int, str]
231
+ ) -> None:
232
+ """Fill the given columns of ``matrix`` from ``df`` column values, in place.
233
+
234
+ Args:
235
+ matrix: Pre-allocated ``(N, C)`` feature/filter matrix.
236
+ df: The primary input DataFrame.
237
+ mapping: ``{column_index: column_name}`` for the column-value
238
+ criteria/filters to fill.
239
+
240
+ Raises:
241
+ ComponentError: if a referenced column is missing or non-numeric.
242
+ """
243
+ for idx, column in mapping.items():
244
+ if column not in df.columns:
245
+ raise ComponentError(
246
+ f"SweetSpotScore: column {column!r} not found in input "
247
+ f"DataFrame. Available columns: {list(df.columns)}"
248
+ )
249
+ series = df[column]
250
+ if not pd.api.types.is_numeric_dtype(series):
251
+ raise ComponentError(
252
+ f"SweetSpotScore: column {column!r} is not numeric "
253
+ f"(dtype={series.dtype})."
254
+ )
255
+ values = series.to_numpy(dtype=float)
256
+ nan_mask = np.isnan(values)
257
+ if nan_mask.any():
258
+ self._logger.warning(
259
+ "SweetSpotScore: column %r has %d NaN value(s), "
260
+ "replaced with 0.0",
261
+ column,
262
+ int(nan_mask.sum()),
263
+ )
264
+ values = np.nan_to_num(values, nan=0.0)
265
+ matrix[:, idx] = values
266
+
267
+ async def _extract_spatial_feature(
268
+ self,
269
+ candidates: CandidateGrid,
270
+ layers: dict[str, POILayer],
271
+ spec: Criterion | HardFilter,
272
+ ) -> np.ndarray:
273
+ """Compute one spatial criterion/filter's raw feature column.
274
+
275
+ Mirrors ``SweetSpotScorer``'s internal extraction step, but uses the
276
+ public ``extractor_registry`` directly (spec Module 3 Implementation
277
+ Notes) so a single spatial column can be computed for the "mixed"
278
+ code path without going through a full ``SweetSpotScorer.score()``
279
+ call.
280
+
281
+ Args:
282
+ candidates: The candidate grid.
283
+ layers: ``{dataset_name: POILayer}`` mapping.
284
+ spec: A ``Criterion`` or ``HardFilter``.
285
+
286
+ Returns:
287
+ A numpy array of shape ``(N,)`` with raw feature values.
288
+ """
289
+ from flowtask.interfaces.scoring import extractor_registry
290
+
291
+ # Ensure concrete extractors are registered (idempotent, cheap
292
+ # after the first call).
293
+ import flowtask.interfaces.scoring.extractors # noqa: F401
294
+
295
+ try:
296
+ poi_layer = layers[spec.dataset]
297
+ except KeyError as exc:
298
+ raise ValueError(
299
+ f"No POILayer found for dataset {spec.dataset!r}. "
300
+ f"Available datasets: {sorted(layers.keys())}"
301
+ ) from exc
302
+ extractor_cls = extractor_registry.get(spec.feature_type)
303
+ extractor = extractor_cls()
304
+ return await extractor.compute(candidates, poi_layer, spec.params)
305
+
306
+ async def run(self):
307
+ from .layers import build_candidate_grid, build_poi_layers
308
+
309
+ df = self._df[0]
310
+ n_criteria = len(self._policy.criteria)
311
+ n_filters = len(self._policy.filters)
312
+ has_spatial_criteria = len(self._column_criteria) < n_criteria
313
+ has_spatial_filters = len(self._column_filters) < n_filters
314
+
315
+ # The framework-agnostic scoring package (models/service/extractors)
316
+ # deliberately raises plain built-in exceptions (ValueError, KeyError,
317
+ # pydantic's ValidationError) — it has no dependency on flowtask's
318
+ # DAG runtime (spec G2). This is the boundary where those errors get
319
+ # translated into a DAG-friendly ComponentError with a message that
320
+ # names this component, instead of an opaque KeyError/IndexError
321
+ # surfacing several frames deep from a misconfigured YAML (e.g. a
322
+ # `dataset` name with no matching `layers` entry, or an out-of-range
323
+ # `source` index). ComponentErrors raised directly below (e.g. from
324
+ # `_fill_column_features`) are intentionally NOT in this tuple, so
325
+ # they propagate unwrapped instead of being double-wrapped.
326
+ try:
327
+ if not has_spatial_criteria and not has_spatial_filters:
328
+ # Column-value-only path (spec K3/K4): no CandidateGrid/
329
+ # POILayer, no scipy/h3 import anywhere in this branch.
330
+ feature_matrix = np.zeros((len(df), n_criteria))
331
+ self._fill_column_features(feature_matrix, df, self._column_criteria)
332
+ filter_matrix = None
333
+ if n_filters:
334
+ filter_matrix = np.zeros((len(df), n_filters))
335
+ self._fill_column_features(filter_matrix, df, self._column_filters)
336
+
337
+ from flowtask.interfaces.scoring import ScoringEngine
338
+
339
+ result = ScoringEngine().score(
340
+ feature_matrix, self._policy, filter_matrix=filter_matrix
341
+ )
342
+ elif not self._column_criteria and not self._column_filters:
343
+ # All-spatial — existing FEAT-190 path, unchanged (AC7).
344
+ candidates = build_candidate_grid(self._df, self._candidates_config)
345
+ layers = build_poi_layers(self._df, self._layers_config)
346
+ result = await self._scorer.score(candidates, layers, self._policy)
347
+ else:
348
+ # Mixed — unify column-value + spatial columns into one
349
+ # feature matrix, in policy.criteria/policy.filters order.
350
+ candidates = build_candidate_grid(self._df, self._candidates_config)
351
+ layers = build_poi_layers(self._df, self._layers_config)
352
+
353
+ feature_matrix = np.zeros((len(df), n_criteria))
354
+ self._fill_column_features(feature_matrix, df, self._column_criteria)
355
+ for idx, criterion in enumerate(self._policy.criteria):
356
+ if idx not in self._column_criteria:
357
+ feature_matrix[:, idx] = await self._extract_spatial_feature(
358
+ candidates, layers, criterion
359
+ )
360
+
361
+ filter_matrix = None
362
+ if n_filters:
363
+ filter_matrix = np.zeros((len(df), n_filters))
364
+ self._fill_column_features(filter_matrix, df, self._column_filters)
365
+ for idx, hard_filter in enumerate(self._policy.filters):
366
+ if idx not in self._column_filters:
367
+ filter_matrix[:, idx] = await self._extract_spatial_feature(
368
+ candidates, layers, hard_filter
369
+ )
370
+
371
+ from flowtask.interfaces.scoring import ScoringEngine
372
+
373
+ result = ScoringEngine().score(
374
+ feature_matrix, self._policy, filter_matrix=filter_matrix
375
+ )
376
+ except (KeyError, IndexError, ValueError, ValidationError) as exc:
377
+ raise ComponentError(
378
+ f"SweetSpotScore: configuration or scoring error: {exc}"
379
+ ) from exc
380
+
381
+ self._result = self._enrich_dataframe(df, result)
382
+ self.add_metric("NUM_ROWS", self._result.shape[0])
383
+ self.add_metric("NUM_COLUMNS", self._result.shape[1])
384
+ return self._result
385
+
386
+ def _enrich_dataframe(self, df: pd.DataFrame, result: ScoreResult) -> pd.DataFrame:
387
+ """Merge a ``ScoreResult`` into a copy of the original DataFrame.
388
+
389
+ Adds ``sweetspot_score`` (float, 0-100), ``sweetspot_rank`` (int,
390
+ 1-based, descending — ties share the same rank via
391
+ ``method="min"``), and ``sweetspot_filtered`` (bool). When
392
+ ``include_breakdown`` is enabled, also adds
393
+ ``sweetspot_{criterion_name}_utility``/``_contribution`` columns
394
+ per criterion (spec Module 4).
395
+
396
+ Args:
397
+ df: The primary input DataFrame (never mutated — a copy is
398
+ returned).
399
+ result: The ``ScoreResult`` produced by scoring.
400
+
401
+ Returns:
402
+ A new, enriched DataFrame.
403
+ """
404
+ enriched = df.copy()
405
+
406
+ base_columns = ("sweetspot_score", "sweetspot_rank", "sweetspot_filtered")
407
+ for col in base_columns:
408
+ if col in enriched.columns:
409
+ self._logger.warning(
410
+ "SweetSpotScore: column %r already exists in the input "
411
+ "DataFrame, overwriting.",
412
+ col,
413
+ )
414
+
415
+ enriched["sweetspot_score"] = result.scores
416
+ enriched["sweetspot_rank"] = (
417
+ enriched["sweetspot_score"]
418
+ .rank(ascending=False, method="min")
419
+ .astype(int)
420
+ )
421
+ enriched["sweetspot_filtered"] = result.filtered_out
422
+
423
+ if self._include_breakdown:
424
+ for criterion in self._policy.criteria:
425
+ name = criterion.name
426
+ for suffix, field in (
427
+ ("utility", "utility"),
428
+ ("contribution", "contribution"),
429
+ ):
430
+ col_name = f"sweetspot_{name}_{suffix}"
431
+ if col_name in enriched.columns:
432
+ self._logger.warning(
433
+ "SweetSpotScore: column %r already exists in "
434
+ "the input DataFrame, overwriting.",
435
+ col_name,
436
+ )
437
+ enriched[col_name] = [
438
+ row[name][field] for row in result.breakdown
439
+ ]
440
+
441
+ return enriched
442
+
443
+ async def close(self):
444
+ pass