flowtask 5.12.6__tar.gz → 5.12.8__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 (839) hide show
  1. {flowtask-5.12.6 → flowtask-5.12.8}/PKG-INFO +1 -1
  2. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/conf.py +17 -1
  3. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/docker.py +2 -2
  4. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/k8s.py +2 -2
  5. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/local.py +1 -1
  6. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/models.py +23 -1
  7. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/publish.py +2 -2
  8. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/qworker.py +2 -2
  9. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_report.py +75 -10
  10. flowtask-5.12.8/flowtask/interfaces/workday/rest.py +217 -0
  11. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/scheduler.py +4 -1
  12. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/files/service.py +1 -1
  13. flowtask-5.12.8/flowtask/services/maintenance/README.md +80 -0
  14. flowtask-5.12.8/flowtask/services/maintenance/__init__.py +45 -0
  15. flowtask-5.12.8/flowtask/services/maintenance/changelog.py +184 -0
  16. flowtask-5.12.8/flowtask/services/maintenance/handlers.py +128 -0
  17. flowtask-5.12.8/flowtask/services/maintenance/health.py +169 -0
  18. flowtask-5.12.8/flowtask/services/maintenance/models.py +216 -0
  19. flowtask-5.12.8/flowtask/services/maintenance/service.py +272 -0
  20. flowtask-5.12.8/flowtask/services/maintenance/store.py +211 -0
  21. flowtask-5.12.8/flowtask/services/maintenance/templates.py +172 -0
  22. flowtask-5.12.8/flowtask/services/maintenance/windows.py +148 -0
  23. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/launcher.py +1 -1
  24. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/task_manager.py +1 -1
  25. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/version.py +1 -1
  26. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/PKG-INFO +1 -1
  27. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/SOURCES.txt +11 -0
  28. {flowtask-5.12.6 → flowtask-5.12.8}/CONTRIBUTING.md +0 -0
  29. {flowtask-5.12.6 → flowtask-5.12.8}/INSTALL +0 -0
  30. {flowtask-5.12.6 → flowtask-5.12.8}/LICENSE +0 -0
  31. {flowtask-5.12.6 → flowtask-5.12.8}/MANIFEST.in +0 -0
  32. {flowtask-5.12.6 → flowtask-5.12.8}/README.md +0 -0
  33. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/__init__.py +0 -0
  34. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/__main__.py +0 -0
  35. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/bots/__init__.py +0 -0
  36. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/bots/check.py +0 -0
  37. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/bots/codebot.py +0 -0
  38. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ASPX.py +0 -0
  39. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ATT.py +0 -0
  40. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/AddDataset.py +0 -0
  41. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Amazon.py +0 -0
  42. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/AutoTask.py +0 -0
  43. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Azure.py +0 -0
  44. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/AzureUsers.py +0 -0
  45. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/BaseAction.py +0 -0
  46. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/BaseLoop.py +0 -0
  47. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/BestBuy.py +0 -0
  48. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CSVToGCS.py +0 -0
  49. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CallAnalysis.py +0 -0
  50. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CallSummary.py +0 -0
  51. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CensusData.py +0 -0
  52. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CensusVariables.py +0 -0
  53. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/__init__.py +0 -0
  54. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
  55. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
  56. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
  57. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
  58. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
  59. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
  60. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
  61. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
  62. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CompanyScraper/scrapper.py +0 -0
  63. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyFromBase.py +0 -0
  64. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyFromS3.py +0 -0
  65. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyFromSharepoint.py +0 -0
  66. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyTo.py +0 -0
  67. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToBigQuery.py +0 -0
  68. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToFileBase.py +0 -0
  69. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToMongoDB.py +0 -0
  70. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToPg.py +0 -0
  71. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToRethink.py +0 -0
  72. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToS3.py +0 -0
  73. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CopyToSharepoint.py +0 -0
  74. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Costco.py +0 -0
  75. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateGCSBucket.py +0 -0
  76. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/CreateReport.py +0 -0
  77. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/__init__.py +0 -0
  78. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/__init__.py +0 -0
  79. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/bar.py +0 -0
  80. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/base.py +0 -0
  81. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/pie.py +0 -0
  82. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CreateReport/utils.py +0 -0
  83. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/CustomerSatisfaction.py +0 -0
  84. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DataInput.py +0 -0
  85. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DateList.py +0 -0
  86. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DbClient.py +0 -0
  87. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DialPad.py +0 -0
  88. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DispatchMe.py +0 -0
  89. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DocumentDBQuery.py +0 -0
  90. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFrom.py +0 -0
  91. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromD2L.py +0 -0
  92. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromFTP.py +0 -0
  93. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromGamma.py +0 -0
  94. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromIMAP.py +0 -0
  95. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromS3.py +0 -0
  96. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromSFTP.py +0 -0
  97. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromSharepoint.py +0 -0
  98. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromSmartSheet.py +0 -0
  99. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadFromSmartsheet.py +0 -0
  100. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DownloadS3File.py +0 -0
  101. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Dummy.py +0 -0
  102. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/DuplicatePhoto.py +0 -0
  103. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/EmployeeEvaluation.py +0 -0
  104. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ExecuteSQL.py +0 -0
  105. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ExtractHTML.py +0 -0
  106. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ExtractTranscript.py +0 -0
  107. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileBase.py +0 -0
  108. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileCopy.py +0 -0
  109. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileDelete.py +0 -0
  110. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileExists.py +0 -0
  111. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileIteratorDelete.py +0 -0
  112. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileList.py +0 -0
  113. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileOpen.py +0 -0
  114. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileRead.py +0 -0
  115. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FileRename.py +0 -0
  116. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FilterIf.py +0 -0
  117. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FilterRows/FilterRows.py +0 -0
  118. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FilterRows/__init__.py +0 -0
  119. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/FilterRows/functions.py +0 -0
  120. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GCSToBigQuery.py +0 -0
  121. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GenData.py +0 -0
  122. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GoogleA4.py +0 -0
  123. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GoogleGeoCoding.py +0 -0
  124. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GooglePlaces.py +0 -0
  125. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/GoogleSearch.py +0 -0
  126. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/HTTPClient.py +0 -0
  127. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ICIMS.py +0 -0
  128. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/IF.py +0 -0
  129. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/IcimsFolderCopy.py +0 -0
  130. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ImageFeatures/__init__.py +0 -0
  131. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ImageFeatures/process.py +0 -0
  132. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/IteratorBase.py +0 -0
  133. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/LeadIQ.py +0 -0
  134. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Loop.py +0 -0
  135. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Lowes.py +0 -0
  136. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MS365Usage.py +0 -0
  137. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MSTeamsMessages.py +0 -0
  138. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MarkdownMaker.py +0 -0
  139. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MarketClustering.py +0 -0
  140. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MergeFileList.py +0 -0
  141. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MergeFiles.py +0 -0
  142. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/MilvusOutput.py +0 -0
  143. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NearByStores.py +0 -0
  144. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/__init__.py +0 -0
  145. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
  146. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
  147. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/account.py +0 -0
  148. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/client.py +0 -0
  149. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/district.py +0 -0
  150. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/events.py +0 -0
  151. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/forms.py +0 -0
  152. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/market.py +0 -0
  153. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/organization.py +0 -0
  154. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/photos.py +0 -0
  155. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/project.py +0 -0
  156. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/region.py +0 -0
  157. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/store.py +0 -0
  158. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/user.py +0 -0
  159. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinja/router.py +0 -0
  160. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NetworkNinjaClaims.py +0 -0
  161. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/NextStopAgent.py +0 -0
  162. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Odoo.py +0 -0
  163. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OdooInjector.py +0 -0
  164. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OpenFromXML.py +0 -0
  165. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OpenStreetMap.py +0 -0
  166. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OpenWeather.py +0 -0
  167. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OpenWithBase.py +0 -0
  168. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/OpenWithPandas.py +0 -0
  169. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PDFGenerator.py +0 -0
  170. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PGPDecrypt.py +0 -0
  171. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PandasIterator.py +0 -0
  172. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PandasToFile.py +0 -0
  173. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PandasToPowerPoint.py +0 -0
  174. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Paradox.py +0 -0
  175. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParamIterator.py +0 -0
  176. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
  177. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
  178. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
  179. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParrotLoader/__init__.py +0 -0
  180. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParrotLoader/loader.py +0 -0
  181. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ParseHTML.py +0 -0
  182. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PgVectorOutput.py +0 -0
  183. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PlacerStores.py +0 -0
  184. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PlanogramCompliance.py +0 -0
  185. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PodcastMaker.py +0 -0
  186. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Pokemon.py +0 -0
  187. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PositiveBot.py +0 -0
  188. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PowerPointSlide.py +0 -0
  189. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/PrintMessage.py +0 -0
  190. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/__init__.py +0 -0
  191. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
  192. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
  193. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
  194. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
  195. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
  196. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductCompliant.py +0 -0
  197. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/__init__.py +0 -0
  198. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
  199. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/base.py +0 -0
  200. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
  201. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
  202. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
  203. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
  204. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
  205. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductInfo/scraper.py +0 -0
  206. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductPricing.py +0 -0
  207. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ProductReportBot.py +0 -0
  208. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/QS.py +0 -0
  209. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/QSBase.py +0 -0
  210. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/QueryIterator.py +0 -0
  211. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/QueryToInsert.py +0 -0
  212. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/QueryToPandas.py +0 -0
  213. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/RESTClient.py +0 -0
  214. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/RethinkDBQuery.py +0 -0
  215. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Rsync.py +0 -0
  216. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/RunSSH.py +0 -0
  217. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/RunShell.py +0 -0
  218. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SAPExtraction.py +0 -0
  219. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SMSAnalysis.py +0 -0
  220. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SMSSummary.py +0 -0
  221. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SalesForce.py +0 -0
  222. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Sassie.py +0 -0
  223. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SaveImageBank/__init__.py +0 -0
  224. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SchedulingVisits.py +0 -0
  225. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ScrapPage.py +0 -0
  226. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ScrapSearch.py +0 -0
  227. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ScrapTool.py +0 -0
  228. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SearchQuery.py +0 -0
  229. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendEmail.py +0 -0
  230. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendNotify/__init__.py +0 -0
  231. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendNotify/component.py +0 -0
  232. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendNotify/models/__init__.py +0 -0
  233. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendNotify/models/abstract.py +0 -0
  234. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SendNotify/models/zoom.py +0 -0
  235. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SentimentAnalysis.py +0 -0
  236. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/__init__.py +0 -0
  237. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
  238. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
  239. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
  240. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
  241. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SetVariables.py +0 -0
  242. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SplitPDF.py +0 -0
  243. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Staples.py +0 -0
  244. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SubTask.py +0 -0
  245. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/SuiteCRM.py +0 -0
  246. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Switch.py +0 -0
  247. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableBase.py +0 -0
  248. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableDelete.py +0 -0
  249. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableInput.py +0 -0
  250. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableOutput/TableOutput.py +0 -0
  251. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableOutput/__init__.py +0 -0
  252. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TableSchema.py +0 -0
  253. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Target.py +0 -0
  254. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ThumbnailGenerator.py +0 -0
  255. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ToPandas.py +0 -0
  256. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TransformRows/TransformRows.py +0 -0
  257. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TransformRows/__init__.py +0 -0
  258. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TransformRows/functions.py +0 -0
  259. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/TransposeRows.py +0 -0
  260. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UPCDatabase.py +0 -0
  261. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UnGzip.py +0 -0
  262. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Uncompress.py +0 -0
  263. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UniqueRows.py +0 -0
  264. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Unzip.py +0 -0
  265. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UpdateOperationalVars.py +0 -0
  266. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UploadTo.py +0 -0
  267. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UploadToS3.py +0 -0
  268. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UploadToSFTP.py +0 -0
  269. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UploadToSharepoint.py +0 -0
  270. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/UserFunc.py +0 -0
  271. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/VideoUnderstanding.py +0 -0
  272. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/VivaTracker.py +0 -0
  273. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/WSDLClient.py +0 -0
  274. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Wait.py +0 -0
  275. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Walmart.py +0 -0
  276. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/__init__.py +0 -0
  277. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/__init__.py +0 -0
  278. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/applicant.py +0 -0
  279. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/candidate.py +0 -0
  280. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/cost_center.py +0 -0
  281. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
  282. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/job_posting.py +0 -0
  283. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/job_posting_site.py +0 -0
  284. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/job_requisition.py +0 -0
  285. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/location.py +0 -0
  286. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
  287. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/organizations.py +0 -0
  288. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/reference.py +0 -0
  289. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/time_block.py +0 -0
  290. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/time_off_balance.py +0 -0
  291. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/time_request.py +0 -0
  292. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/models/worker.py +0 -0
  293. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/__init__.py +0 -0
  294. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
  295. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
  296. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
  297. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
  298. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
  299. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
  300. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
  301. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  302. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
  303. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
  304. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
  305. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
  306. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
  307. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
  308. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
  309. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/__init__.py +0 -0
  310. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/applicants.py +0 -0
  311. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/base.py +0 -0
  312. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/candidates.py +0 -0
  313. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/cost_centers.py +0 -0
  314. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
  315. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
  316. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_report.py +0 -0
  317. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
  318. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/job_postings.py +0 -0
  319. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/job_requisitions.py +0 -0
  320. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
  321. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/locations.py +0 -0
  322. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/organization_single.py +0 -0
  323. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/organizations.py +0 -0
  324. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
  325. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/references.py +0 -0
  326. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/time_block_report.py +0 -0
  327. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/time_blocks.py +0 -0
  328. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/time_off_balances.py +0 -0
  329. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/time_requests.py +0 -0
  330. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/types/workers.py +0 -0
  331. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/utils/__init__.py +0 -0
  332. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/utils/utils.py +0 -0
  333. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workday/workday.py +0 -0
  334. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/WorkdayReport.py +0 -0
  335. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Workplace.py +0 -0
  336. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/XMLToPandas.py +0 -0
  337. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Zammad/__init__.py +0 -0
  338. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Zammad/models.py +0 -0
  339. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/Zoom.py +0 -0
  340. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ZoomInfoScraper.py +0 -0
  341. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/ZoomUs.py +0 -0
  342. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/__init__.py +0 -0
  343. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/_census/__init__.py +0 -0
  344. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/_census/cache.py +0 -0
  345. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/_census/fetch.py +0 -0
  346. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/_census/resolver.py +0 -0
  347. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/_census/transform.py +0 -0
  348. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/abstract.py +0 -0
  349. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/flow.py +0 -0
  350. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/gendata/__init__.py +0 -0
  351. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/gendata/date_sequence.py +0 -0
  352. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/gendata/static_list.py +0 -0
  353. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/google.py +0 -0
  354. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/group.py +0 -0
  355. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/pandas_io.py +0 -0
  356. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/py.typed +0 -0
  357. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/reviewscrap.py +0 -0
  358. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tAddTotalRow.py +0 -0
  359. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tAutoincrement.py +0 -0
  360. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tConcat.py +0 -0
  361. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tConditionalMultiply.py +0 -0
  362. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tCrosstab.py +0 -0
  363. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tDictKey.py +0 -0
  364. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tExplode.py +0 -0
  365. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tFilter.py +0 -0
  366. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tFilterCommonValues.py +0 -0
  367. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tFlatten.py +0 -0
  368. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tFrequencyWeights.py +0 -0
  369. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tGroup.py +0 -0
  370. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tJoin.py +0 -0
  371. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tMap/__init__.py +0 -0
  372. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tMap/functions.py +0 -0
  373. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tMap/tMap.py +0 -0
  374. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tMelt.py +0 -0
  375. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tMerge.py +0 -0
  376. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tOrder.py +0 -0
  377. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tPandas.py +0 -0
  378. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tPivot.py +0 -0
  379. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tPluckCols.py +0 -0
  380. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/tUnnest.py +0 -0
  381. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/components/user.py +0 -0
  382. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/__init__.py +0 -0
  383. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/categories.json +0 -0
  384. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/cli.py +0 -0
  385. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
  386. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
  387. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
  388. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
  389. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
  390. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
  391. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
  392. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
  393. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
  394. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
  395. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
  396. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
  397. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
  398. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
  399. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
  400. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
  401. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
  402. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
  403. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
  404. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
  405. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
  406. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
  407. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
  408. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
  409. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
  410. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
  411. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
  412. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
  413. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
  414. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
  415. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
  416. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
  417. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
  418. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
  419. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
  420. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
  421. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
  422. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
  423. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
  424. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
  425. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
  426. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
  427. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
  428. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
  429. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
  430. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
  431. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
  432. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
  433. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
  434. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
  435. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
  436. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
  437. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
  438. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
  439. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
  440. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
  441. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
  442. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
  443. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
  444. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
  445. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
  446. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
  447. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
  448. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
  449. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
  450. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
  451. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
  452. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
  453. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
  454. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
  455. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
  456. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/QS.doc.json +0 -0
  457. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
  458. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
  459. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
  460. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
  461. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
  462. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
  463. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
  464. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
  465. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
  466. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
  467. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
  468. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
  469. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
  470. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
  471. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
  472. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
  473. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
  474. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
  475. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
  476. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
  477. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
  478. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
  479. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
  480. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
  481. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
  482. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
  483. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
  484. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
  485. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
  486. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
  487. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
  488. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
  489. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
  490. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
  491. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
  492. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
  493. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
  494. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
  495. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
  496. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
  497. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
  498. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
  499. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
  500. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
  501. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
  502. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
  503. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
  504. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
  505. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
  506. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generated/index.json +0 -0
  507. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/generator.py +0 -0
  508. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/models.py +0 -0
  509. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/parser.py +0 -0
  510. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/schema.py +0 -0
  511. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/documentation/toolkit.py +0 -0
  512. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/download.py +0 -0
  513. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/__init__.py +0 -0
  514. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/__init__.py +0 -0
  515. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/abstract.py +0 -0
  516. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/alerts/__init__.py +0 -0
  517. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/alerts/colfunctions.py +0 -0
  518. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/alerts/functions.py +0 -0
  519. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/dummy.py +0 -0
  520. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/exec.py +0 -0
  521. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/file/__init__.py +0 -0
  522. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/file/base.py +0 -0
  523. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/file/copy.py +0 -0
  524. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/file/delete.py +0 -0
  525. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/interfaces/__init__.py +0 -0
  526. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/interfaces/client.py +0 -0
  527. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/interfaces/credentials.py +0 -0
  528. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/interfaces/notifications.py +0 -0
  529. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/jira.py +0 -0
  530. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/log.py +0 -0
  531. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/logerr.py +0 -0
  532. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/notify.py +0 -0
  533. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/notify_event.py +0 -0
  534. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/publish.py +0 -0
  535. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/sendfile.py +0 -0
  536. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/task.py +0 -0
  537. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/teams.py +0 -0
  538. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/events/webhook.py +0 -0
  539. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/events/manager.py +0 -0
  540. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/exceptions.py +0 -0
  541. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/__init__.py +0 -0
  542. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/base.py +0 -0
  543. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/events.py +0 -0
  544. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/exceptions.py +0 -0
  545. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/registry.py +0 -0
  546. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/executors/resolver.py +0 -0
  547. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/extensions/__init__.py +0 -0
  548. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/extensions/abstract.py +0 -0
  549. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/extensions/component_docs.py +0 -0
  550. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/extensions/logging/__init__.py +0 -0
  551. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/factory/__init__.py +0 -0
  552. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/factory/agent.py +0 -0
  553. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/factory/composer.py +0 -0
  554. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/factory/parser.py +0 -0
  555. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/factory/validator.py +0 -0
  556. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/handlers/__init__.py +0 -0
  557. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/handlers/component.py +0 -0
  558. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/__init__.py +0 -0
  559. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/__init__.py +0 -0
  560. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/abstract.py +0 -0
  561. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/dummy.py +0 -0
  562. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/jira.py +0 -0
  563. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/rest.py +0 -0
  564. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/sampledata.py +0 -0
  565. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/sensor.py +0 -0
  566. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/task.py +0 -0
  567. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/ticket.py +0 -0
  568. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/zammad.py +0 -0
  569. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/actions/zoom_event.py +0 -0
  570. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/hook.py +0 -0
  571. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/models.py +0 -0
  572. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/service.py +0 -0
  573. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/step.py +0 -0
  574. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/__init__.py +0 -0
  575. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/base.py +0 -0
  576. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/__init__.py +0 -0
  577. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/base.py +0 -0
  578. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/mqtt.py +0 -0
  579. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
  580. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/redis.py +0 -0
  581. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/brokers/sqs.py +0 -0
  582. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/fs.py +0 -0
  583. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/http.py +0 -0
  584. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/imap.py +0 -0
  585. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/jira.py +0 -0
  586. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/mail.py +0 -0
  587. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/postgres.py +0 -0
  588. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/responses/__init__.py +0 -0
  589. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/responses/base.py +0 -0
  590. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/sharepoint.py +0 -0
  591. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/ssh.py +0 -0
  592. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/tagged.py +0 -0
  593. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/upload.py +0 -0
  594. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/watch.py +0 -0
  595. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/web.py +0 -0
  596. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/hooks/types/zoom.py +0 -0
  597. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/AzureClient.py +0 -0
  598. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/AzureGraph.py +0 -0
  599. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/Boto3Client.py +0 -0
  600. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/DropboxClient.py +0 -0
  601. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/ExcelHandler.py +0 -0
  602. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/FTPClient.py +0 -0
  603. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleCalendar.py +0 -0
  604. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleClient.py +0 -0
  605. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleDrive.py +0 -0
  606. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleGCS.py +0 -0
  607. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleGeocoding.py +0 -0
  608. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleLang.py +0 -0
  609. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GooglePub.py +0 -0
  610. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/GoogleSheet.py +0 -0
  611. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/IMAPClient.py +0 -0
  612. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/LLMClient.py +0 -0
  613. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/O365Calendar.py +0 -0
  614. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/O365Client.py +0 -0
  615. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/OneDrive.py +0 -0
  616. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/Outlook.py +0 -0
  617. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/ParrotBot.py +0 -0
  618. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/ParrotTool.py +0 -0
  619. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/SOAPClient.py +0 -0
  620. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/SSHClient.py +0 -0
  621. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/Sharepoint.py +0 -0
  622. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/__init__.py +0 -0
  623. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/abstract.py +0 -0
  624. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/azure_component.py +0 -0
  625. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/azureauth.py +0 -0
  626. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/base_action.py +0 -0
  627. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/base_loop.py +0 -0
  628. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/cache.py +0 -0
  629. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/client.py +0 -0
  630. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/compress.py +0 -0
  631. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/copy_from_base.py +0 -0
  632. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/copy_to.py +0 -0
  633. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/copy_to_file_base.py +0 -0
  634. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/credentials.py +0 -0
  635. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/d2l.py +0 -0
  636. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/databases/__init__.py +0 -0
  637. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/databases/db.py +0 -0
  638. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/databases/documentdb.py +0 -0
  639. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/databases/rethink.py +0 -0
  640. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/__init__.py +0 -0
  641. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/abstract.py +0 -0
  642. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/arrow.py +0 -0
  643. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/dt.py +0 -0
  644. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/pandas.py +0 -0
  645. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/dataframes/polars.py +0 -0
  646. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/db.py +0 -0
  647. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/db_client.py +0 -0
  648. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/download_from.py +0 -0
  649. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/env.py +0 -0
  650. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/file_base.py +0 -0
  651. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/flow.py +0 -0
  652. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/func.py +0 -0
  653. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/gamma.py +0 -0
  654. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/google_base.py +0 -0
  655. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/group.py +0 -0
  656. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/http.py +0 -0
  657. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/locale.py +0 -0
  658. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/log.py +0 -0
  659. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/mask.py +0 -0
  660. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/notification.py +0 -0
  661. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/parrot/__init__.py +0 -0
  662. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/parrot/agent.py +0 -0
  663. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/parrot/client.py +0 -0
  664. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/pipelines/__init__.py +0 -0
  665. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/pipelines/parrot.py +0 -0
  666. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/playwright.py +0 -0
  667. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/powerpoint.py +0 -0
  668. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/ppt.py +0 -0
  669. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/py.typed +0 -0
  670. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/qs.py +0 -0
  671. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/qs_base.py +0 -0
  672. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/result.py +0 -0
  673. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/sassie.py +0 -0
  674. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/search.py +0 -0
  675. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/selenium/__init__.py +0 -0
  676. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/selenium/options.py +0 -0
  677. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/selenium/service.py +0 -0
  678. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/selenium_service.py +0 -0
  679. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/smartsheet.py +0 -0
  680. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/stat.py +0 -0
  681. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/t_pandas.py +0 -0
  682. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/table_base.py +0 -0
  683. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/task.py +0 -0
  684. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/teams.py +0 -0
  685. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/template.py +0 -0
  686. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/tickets.py +0 -0
  687. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/upload_to.py +0 -0
  688. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/user.py +0 -0
  689. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/__init__.py +0 -0
  690. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/abstract.py +0 -0
  691. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/milvus.py +0 -0
  692. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/__init__.py +0 -0
  693. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/config.py +0 -0
  694. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
  695. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
  696. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/base.py +0 -0
  697. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
  698. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
  699. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
  700. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
  701. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
  702. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
  703. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
  704. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
  705. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
  706. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
  707. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/locations.py +0 -0
  708. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
  709. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
  710. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
  711. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
  712. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/references.py +0 -0
  713. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
  714. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
  715. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
  716. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
  717. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/workers.py +0 -0
  718. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/__init__.py +0 -0
  719. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/applicant.py +0 -0
  720. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/candidate.py +0 -0
  721. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/clock_event.py +0 -0
  722. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/cost_center.py +0 -0
  723. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
  724. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_posting.py +0 -0
  725. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
  726. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
  727. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/location.py +0 -0
  728. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
  729. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/organizations.py +0 -0
  730. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/reference.py +0 -0
  731. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_block.py +0 -0
  732. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
  733. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_request.py +0 -0
  734. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/models/worker.py +0 -0
  735. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
  736. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
  737. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
  738. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
  739. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
  740. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
  741. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
  742. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
  743. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  744. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
  745. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
  746. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
  747. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
  748. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
  749. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
  750. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
  751. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/service.py +0 -0
  752. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/utils/__init__.py +0 -0
  753. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/workday/utils/utils.py +0 -0
  754. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/zammad.py +0 -0
  755. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/interfaces/zoom.py +0 -0
  756. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/models.py +0 -0
  757. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/__init__.py +0 -0
  758. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/_yaml.pyx +0 -0
  759. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/argparser.py +0 -0
  760. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/base.pxd +0 -0
  761. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/base.pyx +0 -0
  762. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/json.pyx +0 -0
  763. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/maps.py +0 -0
  764. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/__init__.py +0 -0
  765. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/checker.py +0 -0
  766. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/detector.py +0 -0
  767. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/registry.py +0 -0
  768. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/report.py +0 -0
  769. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/syntax/schema.py +0 -0
  770. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/parsers/toml.pyx +0 -0
  771. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/plugins/__init__.py +0 -0
  772. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/plugins/components_/__init__.py +0 -0
  773. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/plugins/handler/__init__.py +0 -0
  774. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/plugins/importer.py +0 -0
  775. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/plugins/sources/__init__.py +0 -0
  776. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/runner.py +0 -0
  777. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/__init__.py +0 -0
  778. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/functions.py +0 -0
  779. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/handlers/__init__.py +0 -0
  780. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/handlers/manager.py +0 -0
  781. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/handlers/models.py +0 -0
  782. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/handlers/service.py +0 -0
  783. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/scheduler/notifications.py +0 -0
  784. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/__init__.py +0 -0
  785. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/bots/__init__.py +0 -0
  786. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/bots/telegram.py +0 -0
  787. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/files/__init__.py +0 -0
  788. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/files/manager.py +0 -0
  789. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/files/model.py +0 -0
  790. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/jira/__init__.py +0 -0
  791. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/jira/jira_actions.py +0 -0
  792. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/__init__.py +0 -0
  793. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/manager.py +0 -0
  794. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/service.py +0 -0
  795. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/services/tasks/tasks.py +0 -0
  796. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/__init__.py +0 -0
  797. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/exceptions.py +0 -0
  798. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/files/__init__.py +0 -0
  799. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/files/abstract.py +0 -0
  800. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/files/filesystem.py +0 -0
  801. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/__init__.py +0 -0
  802. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/abstract.py +0 -0
  803. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/database.py +0 -0
  804. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/filesystem.py +0 -0
  805. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/github.py +0 -0
  806. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/memory.py +0 -0
  807. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/storages/tasks/row.py +0 -0
  808. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/__init__.py +0 -0
  809. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/abstract.py +0 -0
  810. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/command.py +0 -0
  811. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/pile.py +0 -0
  812. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/py.typed +0 -0
  813. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/task.py +0 -0
  814. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tasks/workers.py +0 -0
  815. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/template/__init__.py +0 -0
  816. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/tests.py +0 -0
  817. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/types/__init__.py +0 -0
  818. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/types/typedefs.pyx +0 -0
  819. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/__init__.py +0 -0
  820. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/constants.py +0 -0
  821. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/encoders.py +0 -0
  822. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/executor.py +0 -0
  823. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/functions.pyx +0 -0
  824. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/json.pxi +0 -0
  825. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/json.pyx +0 -0
  826. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/mail.py +0 -0
  827. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/msgraph_patch.py +0 -0
  828. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/parseqs.pyx +0 -0
  829. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/stats.py +0 -0
  830. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/transformations.py +0 -0
  831. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/uv.py +0 -0
  832. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask/utils/validators.py +0 -0
  833. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/dependency_links.txt +0 -0
  834. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/entry_points.txt +0 -0
  835. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/requires.txt +0 -0
  836. {flowtask-5.12.6 → flowtask-5.12.8}/flowtask.egg-info/top_level.txt +0 -0
  837. {flowtask-5.12.6 → flowtask-5.12.8}/pyproject.toml +0 -0
  838. {flowtask-5.12.6 → flowtask-5.12.8}/setup.cfg +0 -0
  839. {flowtask-5.12.6 → flowtask-5.12.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowtask
3
- Version: 5.12.6
3
+ Version: 5.12.8
4
4
  Summary: Framework for Task orchestration
5
5
  Author-email: Jesus Lara <jesuslarag@gmail.com>
6
6
  License: Apache-2.0
@@ -231,7 +231,7 @@ DEFAULT_EXECUTOR = config.get("DEFAULT_EXECUTOR", fallback="local")
231
231
  DOCKER_IMAGE = config.get("DOCKER_IMAGE", fallback="flowtask:latest")
232
232
  K8S_NAMESPACE = config.get("K8S_NAMESPACE", fallback="default")
233
233
  ALLOW_RESCHEDULE = config.getboolean("ALLOW_RESCHEDULE", fallback=False)
234
- SCHEDULER_STARTUP_JOB = config.getboolean("SCHEDULER_STARTUP_JOBS", fallback=False)
234
+ SCHEDULER_STARTUP_JOB = config.getboolean("SCHEDULER_STARTUP_JOB", fallback=False)
235
235
 
236
236
  """
237
237
  Email Configuration
@@ -546,6 +546,22 @@ ZOOM_WEBHOOK_REPLAY_WINDOW_SECONDS = config.getint(
546
546
  )
547
547
  ZOOM_ALLOWED_CIDRS = config.get('ZOOM_ALLOWED_CIDRS', fallback='')
548
548
 
549
+ ## Maintenance / Status service (SOC2 CC8):
550
+ # Master switch for the MaintenanceService (status + changelog + windows).
551
+ MAINTENANCE_ENABLED = config.getboolean("MAINTENANCE_ENABLED", fallback=True)
552
+ # Whether to email a summary of upcoming maintenance windows on startup.
553
+ MAINTENANCE_NOTIFY_ON_STARTUP = config.getboolean(
554
+ "MAINTENANCE_NOTIFY_ON_STARTUP", fallback=True
555
+ )
556
+ # Recipient for maintenance-window notifications (falls back to DEFAULT_RECIPIENT).
557
+ MAINTENANCE_NOTIFY_EMAIL = config.get("MAINTENANCE_NOTIFY_EMAIL", fallback=None)
558
+ # Changelog source: a GitHub "owner/name" slug and/or a local CHANGELOG.md.
559
+ MAINTENANCE_GITHUB_REPO = config.get("MAINTENANCE_GITHUB_REPO", fallback=None)
560
+ MAINTENANCE_GITHUB_TOKEN = config.get("MAINTENANCE_GITHUB_TOKEN", fallback=None)
561
+ MAINTENANCE_CHANGELOG_TITLE = config.get(
562
+ "MAINTENANCE_CHANGELOG_TITLE", fallback="What's New"
563
+ )
564
+
549
565
  try:
550
566
  from navconfig.conf import * # pylint: disable=W0401,W0614 # noqa
551
567
  except ImportError as e:
@@ -177,7 +177,7 @@ class DockerJobExecutor(AbstractJobExecutor):
177
177
  ExecutorConnectionError: If Docker daemon is unreachable.
178
178
  ExecutorError: If image pull or container creation fails.
179
179
  """
180
- execution_id = task_id or str(uuid.uuid4())
180
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
181
181
  channel = f"FLOWTASK:EXEC:{execution_id}"
182
182
  container_name = self._container_name(program, task, execution_id)
183
183
 
@@ -244,7 +244,7 @@ class DockerJobExecutor(AbstractJobExecutor):
244
244
  Raises:
245
245
  ExecutorConnectionError: If Docker daemon is unreachable.
246
246
  """
247
- execution_id = task_id or str(uuid.uuid4())
247
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
248
248
  container_name = self._container_name(program, task, execution_id)
249
249
  timeout = self._config.timeout
250
250
 
@@ -214,7 +214,7 @@ class K8sJobExecutor(AbstractJobExecutor):
214
214
  ExecutorConnectionError: If the K8s cluster is unreachable.
215
215
  ExecutorError: If the Job cannot be created.
216
216
  """
217
- execution_id = task_id or str(uuid.uuid4())
217
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
218
218
  channel = f"FLOWTASK:EXEC:{execution_id}"
219
219
  job_name = self._job_name(program, task, execution_id)
220
220
 
@@ -273,7 +273,7 @@ class K8sJobExecutor(AbstractJobExecutor):
273
273
  Raises:
274
274
  ExecutorConnectionError: If the K8s cluster is unreachable.
275
275
  """
276
- execution_id = task_id or str(uuid.uuid4())
276
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
277
277
  job_name = self._job_name(program, task, execution_id)
278
278
  timeout = self._config.timeout
279
279
 
@@ -132,7 +132,7 @@ class LocalJobExecutor(AbstractJobExecutor):
132
132
  program=program,
133
133
  **kwargs,
134
134
  )
135
- execution_id = task_id # always set by dispatch() / run() callers
135
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
136
136
 
137
137
  try:
138
138
  await task_obj.start()
@@ -2,9 +2,10 @@
2
2
  #
3
3
  """Pydantic data models for the flowtask executor framework."""
4
4
  from __future__ import annotations
5
+ import uuid
5
6
  from enum import Enum
6
7
  from typing import Any, Literal, Optional
7
- from pydantic import BaseModel, Field
8
+ from pydantic import BaseModel, Field, field_validator
8
9
 
9
10
 
10
11
  class ExecutorType(str, Enum):
@@ -78,6 +79,19 @@ class ExecutionHandle(BaseModel):
78
79
  task_name: str
79
80
  channel: str
80
81
 
82
+ @field_validator("execution_id", mode="before")
83
+ @classmethod
84
+ def _coerce_execution_id(cls, value: Any) -> Any:
85
+ """Coerce UUID (or other non-str ids) into a string.
86
+
87
+ Callers frequently pass a ``uuid.UUID`` object as the execution id;
88
+ Pydantic's strict ``str`` validation would reject it. Normalise here so
89
+ the handle always carries a plain string.
90
+ """
91
+ if isinstance(value, uuid.UUID):
92
+ return str(value)
93
+ return value
94
+
81
95
 
82
96
  class TaskResult(BaseModel):
83
97
  """Result returned by run() when task execution completes.
@@ -95,3 +109,11 @@ class TaskResult(BaseModel):
95
109
  stats: Optional[Any] = None
96
110
  error: Optional[str] = None
97
111
  execution_id: Optional[str] = None
112
+
113
+ @field_validator("execution_id", mode="before")
114
+ @classmethod
115
+ def _coerce_execution_id(cls, value: Any) -> Any:
116
+ """Coerce UUID execution ids into a string (see ExecutionHandle)."""
117
+ if isinstance(value, uuid.UUID):
118
+ return str(value)
119
+ return value
@@ -118,7 +118,7 @@ class PublishJobExecutor(AbstractJobExecutor):
118
118
  Raises:
119
119
  ExecutorConnectionError: If Redis is unavailable.
120
120
  """
121
- execution_id = task_id or str(uuid.uuid4())
121
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
122
122
  channel = f"FLOWTASK:EXEC:{execution_id}"
123
123
 
124
124
  await self._publisher.publish("dispatched", program, task, execution_id)
@@ -181,7 +181,7 @@ class PublishJobExecutor(AbstractJobExecutor):
181
181
  Raises:
182
182
  ExecutorConnectionError: If the initial Redis connection fails.
183
183
  """
184
- execution_id = task_id or str(uuid.uuid4())
184
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
185
185
  result_channel = f"{RESULT_CHANNEL_PREFIX}:{execution_id}"
186
186
  timeout = self._config.timeout
187
187
 
@@ -204,7 +204,7 @@ class QworkerJobExecutor(AbstractJobExecutor):
204
204
  Returns:
205
205
  An ExecutionHandle with the queue message result.
206
206
  """
207
- execution_id = task_id or str(uuid.uuid4())
207
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
208
208
  priority: Optional[str] = kwargs.pop(
209
209
  "priority", self._config.priority
210
210
  )
@@ -266,7 +266,7 @@ class QworkerJobExecutor(AbstractJobExecutor):
266
266
  Returns:
267
267
  TaskResult with the worker's return value.
268
268
  """
269
- execution_id = task_id or str(uuid.uuid4())
269
+ execution_id = str(task_id) if task_id else str(uuid.uuid4())
270
270
  priority: Optional[str] = kwargs.pop(
271
271
  "priority", self._config.priority
272
272
  )
@@ -129,6 +129,22 @@ class CustomReportType(WorkdayTypeBase):
129
129
  result[f"ID_{key}"] = values[0] if len(values) == 1 else values
130
130
  return result or None
131
131
 
132
+ # JSON RaaS shape: a list of dicts whose values are plain scalars, e.g.
133
+ # ``[{"Time_Entry_Codes": "A; B"}, {"Time_Entry_Codes": "C"}]``. Merge by
134
+ # key, joining repeated values with ``"; "`` so the multi-instance group
135
+ # collapses into a single flat string column.
136
+ if all(all(not isinstance(v, (dict, list)) for v in i.values()) for i in items):
137
+ result = {}
138
+ for item in items:
139
+ for key, value in item.items():
140
+ if value is None:
141
+ continue
142
+ if key in result:
143
+ result[key] = f"{result[key]}; {value}"
144
+ else:
145
+ result[key] = value
146
+ return result or None
147
+
132
148
  return None
133
149
 
134
150
  def _expand_list_dict_columns(self, df: pd.DataFrame, drop_original: bool) -> pd.DataFrame:
@@ -207,6 +223,37 @@ class CustomReportType(WorkdayTypeBase):
207
223
  self._logger.error(f"Error parsing XML response: {e}")
208
224
  raise
209
225
 
226
+ def _parse_json_to_entries(self, body: Any) -> List[Dict[str, Any]]:
227
+ """Extract ``Report_Entry`` rows from a RaaS JSON response.
228
+
229
+ Workday's ``?format=json`` RaaS output is already a list of flat dicts
230
+ (no namespace prefixes, no ``type``/``_value`` wrappers), so it feeds
231
+ straight into ``pd.json_normalize``. Multi-instance group columns arrive
232
+ as a list of dicts with scalar values, collapsed later by
233
+ :meth:`_list_of_dicts_to_dict` when ``flatten_list_dicts`` is set.
234
+
235
+ Args:
236
+ body: Parsed JSON payload (dict) or a raw JSON string/bytes.
237
+
238
+ Returns:
239
+ List of report-entry dicts (empty when none present).
240
+ """
241
+ import json as _json
242
+
243
+ if isinstance(body, (bytes, bytearray)):
244
+ body = body.decode("utf-8", errors="replace")
245
+ if isinstance(body, str):
246
+ body = _json.loads(body)
247
+
248
+ if isinstance(body, list):
249
+ return body
250
+ if isinstance(body, dict):
251
+ entries = body.get("Report_Entry", [])
252
+ if entries and not isinstance(entries, list):
253
+ entries = [entries]
254
+ return entries or []
255
+ return []
256
+
210
257
  def _build_raas_url(
211
258
  self,
212
259
  report_name: str,
@@ -317,12 +364,21 @@ class CustomReportType(WorkdayTypeBase):
317
364
  'flatten_list_dicts', 'drop_flattened_columns',
318
365
  'supervisory_organizations', 'supervisory_organizations_wid',
319
366
  'supervisory_organization_wid', 'include_subordinate_organizations',
320
- 'query_string_template'
367
+ 'query_string_template', 'output_format'
321
368
  }
322
369
 
323
370
  offer_and_hire = self._coerce_bool(query_params.pop('offer_and_hire', False))
324
371
  flatten_list_dicts = self._coerce_bool(query_params.pop('flatten_list_dicts', False))
325
372
  drop_flattened_columns = self._coerce_bool(query_params.pop('drop_flattened_columns', False))
373
+ # Output format: 'xml' (default, legacy) or 'json'. JSON yields a cleaner
374
+ # shape for reports with nested multi-instance groups (no xmltodict
375
+ # cardinality split), at the cost of needing a flowtask that supports it.
376
+ output_format = str(query_params.pop('output_format', 'xml')).strip().lower()
377
+ if output_format not in ('xml', 'json'):
378
+ self._logger.warning(
379
+ "Unknown output_format '%s'; falling back to 'xml'", output_format
380
+ )
381
+ output_format = 'xml'
326
382
  report_path = query_params.pop('report_path', None)
327
383
  query_string_template = query_params.pop('query_string_template', None)
328
384
 
@@ -356,6 +412,10 @@ class CustomReportType(WorkdayTypeBase):
356
412
  if k not in internal_params
357
413
  }
358
414
 
415
+ # RaaS switches output via the ``format`` query param (default is XML).
416
+ if output_format == 'json' and 'format' not in filtered_params:
417
+ filtered_params['format'] = 'json'
418
+
359
419
  if offer_and_hire:
360
420
  self._logger.debug(
361
421
  "offer_and_hire flag enabled: mapping start/end to Ready for Hire fields and adjusting path"
@@ -412,6 +472,8 @@ class CustomReportType(WorkdayTypeBase):
412
472
  # Build base URL without query params, then append template
413
473
  base_url = self._build_raas_url(report_name, report_owner, None, report_path)
414
474
  url = f"{base_url}?{query_string}"
475
+ if output_format == 'json' and 'format=' not in query_string:
476
+ url = f"{url}&format=json"
415
477
  else:
416
478
  # Use standard URL building with filtered_params
417
479
  url = self._build_raas_url(report_name, report_owner, filtered_params, report_path)
@@ -419,6 +481,8 @@ class CustomReportType(WorkdayTypeBase):
419
481
  self._logger.info(f"Executing custom report: {report_name}")
420
482
  self._logger.debug(f"RaaS URL: {url}")
421
483
 
484
+ accept_mime = "application/json" if output_format == "json" else "application/xml"
485
+
422
486
  # Initialize HTTP client if needed
423
487
  if self._http_client is None:
424
488
  # Get credentials from component
@@ -446,7 +510,7 @@ class CustomReportType(WorkdayTypeBase):
446
510
  "password": password
447
511
  },
448
512
  auth_type="basic",
449
- accept="application/xml",
513
+ accept=accept_mime,
450
514
  timeout=120
451
515
  )
452
516
  # Set logger for HTTP client
@@ -457,7 +521,7 @@ class CustomReportType(WorkdayTypeBase):
457
521
  result, error = await self._http_client.async_request(
458
522
  url=url,
459
523
  method="GET",
460
- accept="application/xml"
524
+ accept=accept_mime
461
525
  )
462
526
 
463
527
  if error:
@@ -472,15 +536,16 @@ class CustomReportType(WorkdayTypeBase):
472
536
  self._logger.error(f"Error executing custom report via REST: {exc}")
473
537
  raise
474
538
 
475
- # Parse the XML response
476
- # Convert to bytes for xmltodict
477
- xml_bytes = result if isinstance(result, (bytes, bytearray)) else str(result).encode()
478
-
479
- # Parse XML to list of dicts
480
- raw_response = self._parse_xml_to_entries(xml_bytes)
539
+ # Parse the response into a list of report-entry dicts.
540
+ if output_format == "json":
541
+ raw_response = self._parse_json_to_entries(result)
542
+ else:
543
+ # Convert to bytes for xmltodict
544
+ xml_bytes = result if isinstance(result, (bytes, bytearray)) else str(result).encode()
545
+ raw_response = self._parse_xml_to_entries(xml_bytes)
481
546
 
482
547
  if not raw_response:
483
- self._logger.warning("No report entries found in XML response")
548
+ self._logger.warning("No report entries found in %s response", output_format.upper())
484
549
  return pd.DataFrame()
485
550
 
486
551
  # Convert parsed XML (now as list of dicts) to DataFrame
@@ -0,0 +1,217 @@
1
+ """Workday REST API client (``/ccx/api``).
2
+
3
+ Minimal async client for Workday's REST surface, sharing :class:`WorkdayConfig`
4
+ (credentials, tenant, prod/sandbox ``env`` selector) with the SOAP
5
+ ``WorkdayService``. Unlike the WSDL services — which have **no** operation to
6
+ read raw time clock events — the REST API exposes them, echoing back the
7
+ client-assigned ``Time_Clock_Event_ID`` as ``reference_ID`` and the effective
8
+ ``timeEntryCode`` applied to *In* events. That makes post-punch verification
9
+ possible.
10
+
11
+ Verified endpoints (Workday implementation tenant, 2026-07-03):
12
+
13
+ - ``GET /ccx/api/v1/{tenant}/workers?search={text}`` — worker lookup; each row
14
+ carries ``id`` (the Workday WID) and ``descriptor``.
15
+ - ``GET /ccx/api/timeTracking/v5/{tenant}/timeClockEvents?worker={WID}`` — raw
16
+ clock events. The ``worker`` parameter **requires a WID**; Employee_ID values
17
+ are rejected with ``400 "not found"``.
18
+
19
+ Example::
20
+
21
+ from flowtask.interfaces.workday.config import WorkdayConfig
22
+ from flowtask.interfaces.workday.rest import WorkdayRestClient
23
+
24
+ client = WorkdayRestClient(config=WorkdayConfig(env="sandbox"))
25
+ workers = await client.find_worker("123456")
26
+ events = await client.get_time_clock_events(workers[0]["id"])
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ import base64
32
+ import logging
33
+ import time as _time
34
+ from typing import Any, Optional
35
+
36
+ import httpx
37
+
38
+ from flowtask.interfaces.workday.config import WorkdayConfig
39
+
40
+
41
+ class WorkdayRestClient:
42
+ """Async client for Workday's ``/ccx/api`` REST endpoints.
43
+
44
+ Uses the same OAuth *refresh-token* grant as ``SOAPClient`` (no Redis
45
+ dependency — the bearer token is cached in-memory until shortly before
46
+ expiry). Host and credentials come from :class:`WorkdayConfig`, so the
47
+ ``WORKDAY_ENV`` prod/sandbox selector applies here too.
48
+
49
+ Args:
50
+ config: Explicit credentials / tenant. ``None`` → ``WorkdayConfig()``
51
+ (conf fallbacks + ``WORKDAY_ENV``).
52
+ timeout: HTTP timeout in seconds (default 30).
53
+ time_tracking_version: REST version segment for the timeTracking
54
+ service (default ``"v5"`` — the version available on this tenant;
55
+ ``v6`` returned 400 when probed).
56
+ """
57
+
58
+ def __init__(
59
+ self,
60
+ *,
61
+ config: WorkdayConfig | None = None,
62
+ timeout: int = 30,
63
+ time_tracking_version: str = "v5",
64
+ ) -> None:
65
+ self.config = config or WorkdayConfig()
66
+ self.timeout = timeout
67
+ self.time_tracking_version = time_tracking_version
68
+ self._token: Optional[str] = None
69
+ self._token_expires_at: float = 0.0
70
+ self._logger = logging.getLogger("flowtask.workday.rest")
71
+
72
+ # ------------------------------------------------------------------
73
+ # Auth
74
+ # ------------------------------------------------------------------
75
+
76
+ @property
77
+ def base_url(self) -> str:
78
+ """REST base: ``{workday_url}/ccx/api`` (env-aware host)."""
79
+ return f"{self.config.workday_url.rstrip('/')}/ccx/api"
80
+
81
+ def set_token(self, token: str, expires_in: int = 300) -> None:
82
+ """Reuse an externally obtained bearer token (e.g. from the SOAP flow).
83
+
84
+ Args:
85
+ token: A valid Workday OAuth access token.
86
+ expires_in: Seconds the token remains valid (default 300).
87
+ """
88
+ self._token = token
89
+ self._token_expires_at = _time.monotonic() + max(expires_in - 10, 0)
90
+
91
+ async def get_token(self) -> str:
92
+ """Return a cached bearer token, refreshing via OAuth when expired.
93
+
94
+ Performs the same ``refresh_token`` grant as ``SOAPClient`` (Basic auth
95
+ with client_id/client_secret against ``token_url``).
96
+
97
+ Returns:
98
+ A valid access token.
99
+ """
100
+ if self._token and _time.monotonic() < self._token_expires_at:
101
+ return self._token
102
+
103
+ cid = self.config.resolved_client_id
104
+ secret = self.config.resolved_client_secret
105
+ basic = base64.b64encode(f"{cid}:{secret}".encode()).decode()
106
+ async with httpx.AsyncClient(timeout=self.timeout) as http:
107
+ resp = await http.post(
108
+ self.config.resolved_token_url,
109
+ data={
110
+ "grant_type": "refresh_token",
111
+ "refresh_token": self.config.resolved_refresh_token,
112
+ },
113
+ headers={
114
+ "Authorization": f"Basic {basic}",
115
+ "Content-Type": "application/x-www-form-urlencoded",
116
+ },
117
+ )
118
+ resp.raise_for_status()
119
+ payload = resp.json()
120
+
121
+ self.set_token(payload["access_token"], int(payload.get("expires_in", 300)))
122
+ self._logger.debug("Workday REST token refreshed (env=%s)", self.config.resolved_env)
123
+ return self._token # type: ignore[return-value]
124
+
125
+ # ------------------------------------------------------------------
126
+ # Core GET
127
+ # ------------------------------------------------------------------
128
+
129
+ async def get(self, path: str, params: dict[str, Any] | None = None) -> dict:
130
+ """Perform an authenticated GET against ``{base_url}{path}``.
131
+
132
+ Args:
133
+ path: Path below ``/ccx/api`` (must start with ``/``).
134
+ params: Optional query parameters.
135
+
136
+ Returns:
137
+ The parsed JSON body.
138
+
139
+ Raises:
140
+ httpx.HTTPStatusError: on non-2xx responses.
141
+ """
142
+ token = await self.get_token()
143
+ url = f"{self.base_url}{path}"
144
+ async with httpx.AsyncClient(timeout=self.timeout) as http:
145
+ resp = await http.get(
146
+ url,
147
+ params=params or {},
148
+ headers={"Authorization": f"Bearer {token}"},
149
+ )
150
+ resp.raise_for_status()
151
+ return resp.json()
152
+
153
+ # ------------------------------------------------------------------
154
+ # Endpoints
155
+ # ------------------------------------------------------------------
156
+
157
+ async def find_worker(self, search: str, *, limit: int = 20) -> list[dict]:
158
+ """Search workers; each result carries ``id`` (WID) and ``descriptor``.
159
+
160
+ Args:
161
+ search: Free-text search (name; associate/employee id support is
162
+ tenant-dependent — verify before relying on it).
163
+ limit: Max results (default 20).
164
+
165
+ Returns:
166
+ List of worker dicts (empty when no match).
167
+ """
168
+ payload = await self.get(
169
+ f"/v1/{self.config.tenant}/workers",
170
+ {"search": search, "limit": limit},
171
+ )
172
+ return payload.get("data", [])
173
+
174
+ async def get_time_clock_events(
175
+ self, worker_wid: str, *, limit: int = 100
176
+ ) -> list[dict]:
177
+ """Return the raw time clock events of a worker.
178
+
179
+ Each event carries ``reference_ID`` (the client-assigned
180
+ ``Time_Clock_Event_ID`` when the event was created via
181
+ ``Put_Time_Clock_Events``), ``dateTime`` (UTC ISO), ``eventType``,
182
+ ``comment``, ``timeZone``, and — on *In* events of time-tracking
183
+ eligible workers — the effective ``timeEntryCode``.
184
+
185
+ Args:
186
+ worker_wid: The worker's Workday WID (NOT an Employee_ID — the
187
+ REST API rejects those).
188
+ limit: Max events returned (default 100).
189
+
190
+ Returns:
191
+ List of event dicts (empty when the worker has none).
192
+ """
193
+ payload = await self.get(
194
+ f"/timeTracking/{self.time_tracking_version}/{self.config.tenant}/timeClockEvents",
195
+ {"worker": worker_wid, "limit": limit},
196
+ )
197
+ return payload.get("data", [])
198
+
199
+ async def find_time_clock_event(
200
+ self, worker_wid: str, reference_id: str
201
+ ) -> dict | None:
202
+ """Locate one clock event by its client-assigned ``reference_ID``.
203
+
204
+ Convenience for punch verification: after ``Put_Time_Clock_Events``
205
+ succeeds, the event is visible here within ~1 s (verified live).
206
+
207
+ Args:
208
+ worker_wid: The worker's Workday WID.
209
+ reference_id: The ``Time_Clock_Event_ID`` sent on the Put.
210
+
211
+ Returns:
212
+ The matching event dict, or ``None`` when not (yet) present.
213
+ """
214
+ for event in await self.get_time_clock_events(worker_wid):
215
+ if event.get("reference_ID") == reference_id:
216
+ return event
217
+ return None
@@ -439,7 +439,9 @@ class NavScheduler:
439
439
  return self._loop
440
440
 
441
441
  def set_test_job(self):
442
- self.logger.debug("Scheduler: Adding a Test job")
442
+ self.logger.debug(
443
+ "Scheduler: Adding a Test job"
444
+ )
443
445
  run_date = datetime.now(self._timezone) + timedelta(minutes=1)
444
446
  # define Task:
445
447
  program = "navigator"
@@ -478,6 +480,7 @@ class NavScheduler:
478
480
  f"[{ENVIRONMENT} - Scheduler] Error getting Jobs: {error!s}"
479
481
  )
480
482
  # Add a Job for testing purposes.
483
+ print('HERE > ', SCHEDULER_STARTUP_JOB)
481
484
  if SCHEDULER_STARTUP_JOB is True:
482
485
  self.set_test_job()
483
486
  for job in jobs:
@@ -664,7 +664,7 @@ class FileService(BaseView):
664
664
  program_slug = filedef.program_slug
665
665
  try:
666
666
  # loop = asyncio.new_event_loop()
667
- task_uuid = uuid.uuid4()
667
+ task_uuid = str(uuid.uuid4())
668
668
  if not filedef.params:
669
669
  params = {}
670
670
  else:
@@ -0,0 +1,80 @@
1
+ # Flowtask Maintenance / Status Service
2
+
3
+ SOC2 **CC8 (change management)** support for Flowtask running in aiohttp
4
+ **server mode**. It exposes three surfaces:
5
+
6
+ | Surface | What it does |
7
+ |---------|--------------|
8
+ | **Status page** | Reports server liveness, the startup-job outcome and the availability of the `/api/v2/task` and `/api/v2/scheduler` APIs. Failures are persisted (Redis, in-memory fallback) for auditing. |
9
+ | **Changelog page** | End-user "What's New" page built from `CHANGELOG.md` or GitHub Releases and served as HTML. |
10
+ | **Maintenance windows** | Register a window (day + hour range) over HTTP; upcoming windows are shown on the status page and emailed on startup via `async-notify`. |
11
+
12
+ ## Wiring it up
13
+
14
+ Inside a Navigator `AppHandler.configure()` (already done in `app.py`):
15
+
16
+ ```python
17
+ from flowtask.services.maintenance import MaintenanceService
18
+
19
+ maintenance = MaintenanceService()
20
+ maintenance.setup(self.app)
21
+ ```
22
+
23
+ ## Endpoints
24
+
25
+ | Method | Path | Description |
26
+ |--------|------|-------------|
27
+ | GET | `/status` | HTML status page |
28
+ | GET | `/changelog` | HTML "What's New" page |
29
+ | GET | `/api/v2/maintenance/status` | JSON status (HTTP 503 when unhealthy) |
30
+ | GET | `/api/v2/maintenance/failures?limit=` | Recent recorded failures |
31
+ | GET | `/api/v2/maintenance/changelog` | Changelog as JSON |
32
+ | GET | `/api/v2/maintenance/windows?upcoming=true` | List maintenance windows |
33
+ | POST | `/api/v2/maintenance/windows` | Register a window |
34
+ | DELETE | `/api/v2/maintenance/windows/{identifier}` | Remove a window |
35
+
36
+ ### Registering a maintenance window
37
+
38
+ ```bash
39
+ curl -X POST http://localhost:8080/api/v2/maintenance/windows \
40
+ -H 'Content-Type: application/json' \
41
+ -d '{
42
+ "title": "Planned DB upgrade",
43
+ "day": "2030-05-01",
44
+ "start_time": "02:00",
45
+ "end_time": "04:00",
46
+ "description": "Rolling restart",
47
+ "notify": true
48
+ }'
49
+ ```
50
+
51
+ ## Reporting a startup job outcome
52
+
53
+ Any component can flag whether its on-startup work succeeded; the result shows
54
+ up in the `startup_job` status probe:
55
+
56
+ ```python
57
+ service = app["flowtask_maintenance"]
58
+ await service.mark_startup("my_loader", ok=True, detail="warmed cache")
59
+ ```
60
+
61
+ The scheduler installed at `app["_scheduler_"]` is always considered as a
62
+ startup signal automatically, so a stalled scheduler surfaces even when no
63
+ other startup jobs are recorded.
64
+
65
+ ## Configuration (`flowtask/conf.py` / environment)
66
+
67
+ | Setting | Default | Purpose |
68
+ |---------|---------|---------|
69
+ | `MAINTENANCE_ENABLED` | `True` | Master switch |
70
+ | `MAINTENANCE_NOTIFY_ON_STARTUP` | `True` | Email upcoming windows on startup |
71
+ | `MAINTENANCE_NOTIFY_EMAIL` | `DEFAULT_RECIPIENT` | Notification recipient |
72
+ | `MAINTENANCE_GITHUB_REPO` | `None` | `owner/name` for GitHub-sourced changelog |
73
+ | `MAINTENANCE_GITHUB_TOKEN` | `None` | Optional token for the GitHub source |
74
+ | `MAINTENANCE_CHANGELOG_TITLE` | `What's New` | Changelog page heading |
75
+ | `REDIS_URL` | — | Store backend (falls back to in-memory) |
76
+ | `EMAIL_HOST` / `EMAIL_PORT` / `EMAIL_USERNAME` / `EMAIL_PASSWORD` | — | SMTP account for notifications |
77
+
78
+ Redis is optional: if it is unreachable the store degrades to an in-process
79
+ fallback and flags itself (`degraded_store` in the failures endpoint) instead of
80
+ taking the server down.