flowtask 5.13.7__tar.gz → 5.13.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (894) hide show
  1. {flowtask-5.13.7 → flowtask-5.13.9}/PKG-INFO +4 -2
  2. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToPg.py +107 -29
  3. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FilterIf.py +10 -8
  4. flowtask-5.13.9/flowtask/components/Frankfurter.py +348 -0
  5. flowtask-5.13.9/flowtask/components/Geofence.py +207 -0
  6. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MarketClustering.py +290 -294
  7. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotAgent.py +6 -3
  8. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductReportBot.py +2 -1
  9. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SchedulingVisits.py +609 -128
  10. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/workday.py +219 -8
  11. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tFilter.py +10 -8
  12. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/conf.py +6 -0
  13. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/BestBuy.doc.json +6 -2
  14. flowtask-5.13.9/flowtask/documentation/generated/components/Frankfurter.doc.json +93 -0
  15. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/index.json +11 -6
  16. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/copy_to.py +12 -8
  17. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/flow.py +5 -1
  18. flowtask-5.13.9/flowtask/interfaces/scheduling.py +291 -0
  19. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/config.py +109 -17
  20. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/__init__.py +14 -0
  21. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +4 -7
  22. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_report.py +4 -11
  23. flowtask-5.13.9/flowtask/interfaces/workday/handlers/payroll.py +452 -0
  24. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_block_report.py +6 -11
  25. flowtask-5.13.9/flowtask/interfaces/workday/handlers/time_off_eligibility.py +153 -0
  26. flowtask-5.13.9/flowtask/interfaces/workday/handlers/time_off_request.py +105 -0
  27. flowtask-5.13.9/flowtask/interfaces/workday/handlers/worker_event_history.py +279 -0
  28. flowtask-5.13.9/flowtask/interfaces/workday/handlers/worker_job_changes.py +347 -0
  29. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/workers.py +63 -35
  30. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/__init__.py +12 -1
  31. flowtask-5.13.9/flowtask/interfaces/workday/models/fetch_many.py +37 -0
  32. flowtask-5.13.9/flowtask/interfaces/workday/models/time_off_eligibility.py +16 -0
  33. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/worker.py +3 -0
  34. flowtask-5.13.9/flowtask/interfaces/workday/models/worker_event.py +136 -0
  35. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/__init__.py +2 -0
  36. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/worker_parsers.py +33 -5
  37. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/rest.py +123 -35
  38. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/service.py +330 -7
  39. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/version.py +1 -1
  40. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/PKG-INFO +4 -2
  41. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/SOURCES.txt +12 -0
  42. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/requires.txt +3 -1
  43. {flowtask-5.13.7 → flowtask-5.13.9}/pyproject.toml +3 -1
  44. {flowtask-5.13.7 → flowtask-5.13.9}/CONTRIBUTING.md +0 -0
  45. {flowtask-5.13.7 → flowtask-5.13.9}/INSTALL +0 -0
  46. {flowtask-5.13.7 → flowtask-5.13.9}/LICENSE +0 -0
  47. {flowtask-5.13.7 → flowtask-5.13.9}/MANIFEST.in +0 -0
  48. {flowtask-5.13.7 → flowtask-5.13.9}/README.md +0 -0
  49. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/__init__.py +0 -0
  50. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/__main__.py +0 -0
  51. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/_version.py +0 -0
  52. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/bots/__init__.py +0 -0
  53. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/bots/check.py +0 -0
  54. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/bots/codebot.py +0 -0
  55. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ASPX.py +0 -0
  56. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ATT.py +0 -0
  57. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/AddDataset.py +0 -0
  58. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Amazon.py +0 -0
  59. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/AutoTask.py +0 -0
  60. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Azure.py +0 -0
  61. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/AzureUsers.py +0 -0
  62. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/BaseAction.py +0 -0
  63. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/BaseLoop.py +0 -0
  64. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/BestBuy.py +0 -0
  65. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CSVToGCS.py +0 -0
  66. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CallAnalysis.py +0 -0
  67. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CallSummary.py +0 -0
  68. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CensusData.py +0 -0
  69. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CensusVariables.py +0 -0
  70. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/__init__.py +0 -0
  71. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
  72. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
  73. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
  74. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
  75. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
  76. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
  77. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
  78. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
  79. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CompanyScraper/scrapper.py +0 -0
  80. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyFromBase.py +0 -0
  81. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyFromS3.py +0 -0
  82. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyFromSharepoint.py +0 -0
  83. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyTo.py +0 -0
  84. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToBigQuery.py +0 -0
  85. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToFileBase.py +0 -0
  86. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToMongoDB.py +0 -0
  87. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToRethink.py +0 -0
  88. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToS3.py +0 -0
  89. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CopyToSharepoint.py +0 -0
  90. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Costco.py +0 -0
  91. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateGCSBucket.py +0 -0
  92. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/CreateReport.py +0 -0
  93. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/__init__.py +0 -0
  94. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/__init__.py +0 -0
  95. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/bar.py +0 -0
  96. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/base.py +0 -0
  97. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/pie.py +0 -0
  98. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CreateReport/utils.py +0 -0
  99. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/CustomerSatisfaction.py +0 -0
  100. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DataInput.py +0 -0
  101. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DateList.py +0 -0
  102. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DbClient.py +0 -0
  103. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DialPad.py +0 -0
  104. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DispatchMe.py +0 -0
  105. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DocumentDBQuery.py +0 -0
  106. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFrom.py +0 -0
  107. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromD2L.py +0 -0
  108. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromFTP.py +0 -0
  109. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromGamma.py +0 -0
  110. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromGoogleDrive.py +0 -0
  111. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromIMAP.py +0 -0
  112. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromS3.py +0 -0
  113. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromSFTP.py +0 -0
  114. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromSharepoint.py +0 -0
  115. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadFromSmartSheet.py +0 -0
  116. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DownloadS3File.py +0 -0
  117. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Dummy.py +0 -0
  118. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/DuplicatePhoto.py +0 -0
  119. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/EmployeeEvaluation.py +0 -0
  120. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ExecuteSQL.py +0 -0
  121. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ExtractHTML.py +0 -0
  122. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ExtractTranscript.py +0 -0
  123. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileBase.py +0 -0
  124. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileCopy.py +0 -0
  125. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileDelete.py +0 -0
  126. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileExists.py +0 -0
  127. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileIteratorDelete.py +0 -0
  128. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileList.py +0 -0
  129. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileOpen.py +0 -0
  130. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileRead.py +0 -0
  131. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FileRename.py +0 -0
  132. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FilterRows/FilterRows.py +0 -0
  133. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FilterRows/__init__.py +0 -0
  134. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/FilterRows/functions.py +0 -0
  135. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GCSToBigQuery.py +0 -0
  136. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GenData.py +0 -0
  137. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GoogleA4.py +0 -0
  138. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GoogleGeoCoding.py +0 -0
  139. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GooglePlaces.py +0 -0
  140. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/GoogleSearch.py +0 -0
  141. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/HTTPClient.py +0 -0
  142. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ICIMS.py +0 -0
  143. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/IF.py +0 -0
  144. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/IcimsFolderCopy.py +0 -0
  145. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ImageFeatures/__init__.py +0 -0
  146. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ImageFeatures/process.py +0 -0
  147. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/IteratorBase.py +0 -0
  148. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/LeadIQ.py +0 -0
  149. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Loop.py +0 -0
  150. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Lowes.py +0 -0
  151. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MS365Usage.py +0 -0
  152. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MSTeamsMessages.py +0 -0
  153. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MarkdownMaker.py +0 -0
  154. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MergeFileList.py +0 -0
  155. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MergeFiles.py +0 -0
  156. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/MilvusOutput.py +0 -0
  157. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NearByStores.py +0 -0
  158. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/__init__.py +0 -0
  159. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
  160. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
  161. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/account.py +0 -0
  162. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/client.py +0 -0
  163. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/district.py +0 -0
  164. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/events.py +0 -0
  165. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/forms.py +0 -0
  166. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/market.py +0 -0
  167. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/organization.py +0 -0
  168. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/photos.py +0 -0
  169. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/project.py +0 -0
  170. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/region.py +0 -0
  171. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/store.py +0 -0
  172. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/user.py +0 -0
  173. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinja/router.py +0 -0
  174. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NetworkNinjaClaims.py +0 -0
  175. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NextStopAgent.py +0 -0
  176. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/NextTask.py +0 -0
  177. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Odoo.py +0 -0
  178. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OdooInjector.py +0 -0
  179. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OpenFromXML.py +0 -0
  180. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OpenStreetMap.py +0 -0
  181. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OpenWeather.py +0 -0
  182. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OpenWithBase.py +0 -0
  183. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/OpenWithPandas.py +0 -0
  184. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PDFGenerator.py +0 -0
  185. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PGPDecrypt.py +0 -0
  186. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PandasIterator.py +0 -0
  187. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PandasToFile.py +0 -0
  188. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PandasToPowerPoint.py +0 -0
  189. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Paradox.py +0 -0
  190. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParamIterator.py +0 -0
  191. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
  192. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
  193. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
  194. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotLoader/__init__.py +0 -0
  195. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParrotLoader/loader.py +0 -0
  196. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ParseHTML.py +0 -0
  197. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PgVectorOutput.py +0 -0
  198. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PlacerStores.py +0 -0
  199. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PlanogramCompliance.py +0 -0
  200. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PodcastMaker.py +0 -0
  201. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Pokemon.py +0 -0
  202. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PositiveBot.py +0 -0
  203. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PowerPointSlide.py +0 -0
  204. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/PrintMessage.py +0 -0
  205. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/__init__.py +0 -0
  206. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
  207. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
  208. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
  209. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
  210. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
  211. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductCompliant.py +0 -0
  212. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/__init__.py +0 -0
  213. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
  214. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/base.py +0 -0
  215. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
  216. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
  217. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
  218. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
  219. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
  220. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductInfo/scraper.py +0 -0
  221. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ProductPricing.py +0 -0
  222. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/QS.py +0 -0
  223. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/QSBase.py +0 -0
  224. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/QueryIterator.py +0 -0
  225. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/QueryToInsert.py +0 -0
  226. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/QueryToPandas.py +0 -0
  227. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/RESTClient.py +0 -0
  228. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/RethinkDBQuery.py +0 -0
  229. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Rsync.py +0 -0
  230. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/RunSSH.py +0 -0
  231. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/RunShell.py +0 -0
  232. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SAPExtraction.py +0 -0
  233. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SMSAnalysis.py +0 -0
  234. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SMSSummary.py +0 -0
  235. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SalesForce.py +0 -0
  236. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Sassie.py +0 -0
  237. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SaveImageBank/__init__.py +0 -0
  238. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ScrapPage.py +0 -0
  239. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ScrapSearch.py +0 -0
  240. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ScrapTool.py +0 -0
  241. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SearchQuery.py +0 -0
  242. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendEmail.py +0 -0
  243. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendNotify/__init__.py +0 -0
  244. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendNotify/component.py +0 -0
  245. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendNotify/models/__init__.py +0 -0
  246. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendNotify/models/abstract.py +0 -0
  247. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SendNotify/models/zoom.py +0 -0
  248. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SentimentAnalysis.py +0 -0
  249. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/__init__.py +0 -0
  250. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/__init__.py +0 -0
  251. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/base.py +0 -0
  252. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/costco.py +0 -0
  253. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/tractor_supply.py +0 -0
  254. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/verizon.py +0 -0
  255. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/scraper.py +0 -0
  256. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/__init__.py +0 -0
  257. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
  258. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
  259. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
  260. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
  261. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SetVariables.py +0 -0
  262. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SplitPDF.py +0 -0
  263. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Staples.py +0 -0
  264. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SubTask.py +0 -0
  265. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SuiteCRM.py +0 -0
  266. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/__init__.py +0 -0
  267. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/component.py +0 -0
  268. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/layers.py +0 -0
  269. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Switch.py +0 -0
  270. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableBase.py +0 -0
  271. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableDelete.py +0 -0
  272. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableInput.py +0 -0
  273. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableOutput/TableOutput.py +0 -0
  274. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableOutput/__init__.py +0 -0
  275. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TableSchema.py +0 -0
  276. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Target.py +0 -0
  277. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ThumbnailGenerator.py +0 -0
  278. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ToPandas.py +0 -0
  279. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TransformRows/TransformRows.py +0 -0
  280. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TransformRows/__init__.py +0 -0
  281. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TransformRows/functions.py +0 -0
  282. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/TransposeRows.py +0 -0
  283. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UPCDatabase.py +0 -0
  284. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UnGzip.py +0 -0
  285. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Uncompress.py +0 -0
  286. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UniqueRows.py +0 -0
  287. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Unzip.py +0 -0
  288. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UpdateOperationalVars.py +0 -0
  289. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UploadTo.py +0 -0
  290. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UploadToS3.py +0 -0
  291. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UploadToSFTP.py +0 -0
  292. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UploadToSharepoint.py +0 -0
  293. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/UserFunc.py +0 -0
  294. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/VideoUnderstanding.py +0 -0
  295. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/VivaTracker.py +0 -0
  296. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/WSDLClient.py +0 -0
  297. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Wait.py +0 -0
  298. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Walmart.py +0 -0
  299. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/__init__.py +0 -0
  300. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/__init__.py +0 -0
  301. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/applicant.py +0 -0
  302. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/candidate.py +0 -0
  303. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/cost_center.py +0 -0
  304. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
  305. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/job_posting.py +0 -0
  306. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/job_posting_site.py +0 -0
  307. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/job_requisition.py +0 -0
  308. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/location.py +0 -0
  309. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
  310. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/organizations.py +0 -0
  311. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/reference.py +0 -0
  312. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/time_block.py +0 -0
  313. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/time_off_balance.py +0 -0
  314. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/time_request.py +0 -0
  315. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/models/worker.py +0 -0
  316. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/__init__.py +0 -0
  317. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
  318. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
  319. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
  320. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
  321. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
  322. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
  323. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
  324. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  325. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
  326. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
  327. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
  328. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
  329. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
  330. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
  331. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
  332. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/__init__.py +0 -0
  333. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/applicants.py +0 -0
  334. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/base.py +0 -0
  335. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/candidates.py +0 -0
  336. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/cost_centers.py +0 -0
  337. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
  338. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
  339. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_report.py +0 -0
  340. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
  341. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/job_postings.py +0 -0
  342. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/job_requisitions.py +0 -0
  343. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
  344. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/locations.py +0 -0
  345. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/organization_single.py +0 -0
  346. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/organizations.py +0 -0
  347. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
  348. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/references.py +0 -0
  349. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/time_block_report.py +0 -0
  350. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/time_blocks.py +0 -0
  351. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/time_off_balances.py +0 -0
  352. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/time_requests.py +0 -0
  353. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/types/workers.py +0 -0
  354. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/utils/__init__.py +0 -0
  355. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workday/utils/utils.py +0 -0
  356. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/WorkdayReport.py +0 -0
  357. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Workplace.py +0 -0
  358. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/XMLToPandas.py +0 -0
  359. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Zammad/__init__.py +0 -0
  360. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Zammad/models.py +0 -0
  361. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/Zoom.py +0 -0
  362. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ZoomInfoScraper.py +0 -0
  363. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/ZoomUs.py +0 -0
  364. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/__init__.py +0 -0
  365. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/_census/__init__.py +0 -0
  366. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/_census/cache.py +0 -0
  367. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/_census/fetch.py +0 -0
  368. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/_census/resolver.py +0 -0
  369. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/_census/transform.py +0 -0
  370. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/abstract.py +0 -0
  371. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/flow.py +0 -0
  372. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/gendata/__init__.py +0 -0
  373. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/gendata/date_sequence.py +0 -0
  374. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/gendata/static_list.py +0 -0
  375. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/google.py +0 -0
  376. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/group.py +0 -0
  377. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/pandas_io.py +0 -0
  378. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/py.typed +0 -0
  379. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/reviewscrap.py +0 -0
  380. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tAddTotalRow.py +0 -0
  381. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tAutoincrement.py +0 -0
  382. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tConcat.py +0 -0
  383. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tConditionalMultiply.py +0 -0
  384. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tCrosstab.py +0 -0
  385. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tDictKey.py +0 -0
  386. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tDiff.py +0 -0
  387. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tExplode.py +0 -0
  388. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tFilterCommonValues.py +0 -0
  389. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tFlatten.py +0 -0
  390. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tFrequencyWeights.py +0 -0
  391. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tGroup.py +0 -0
  392. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tJoin.py +0 -0
  393. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tMap/__init__.py +0 -0
  394. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tMap/functions.py +0 -0
  395. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tMap/tMap.py +0 -0
  396. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tMelt.py +0 -0
  397. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tMerge.py +0 -0
  398. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tOrder.py +0 -0
  399. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tPandas.py +0 -0
  400. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tPivot.py +0 -0
  401. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tPluckCols.py +0 -0
  402. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/tUnnest.py +0 -0
  403. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/components/user.py +0 -0
  404. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/__init__.py +0 -0
  405. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/categories.json +0 -0
  406. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/cli.py +0 -0
  407. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
  408. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
  409. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
  410. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
  411. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
  412. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
  413. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
  414. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
  415. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
  416. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
  417. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
  418. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
  419. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
  420. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
  421. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
  422. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
  423. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
  424. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
  425. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
  426. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
  427. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
  428. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
  429. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
  430. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
  431. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
  432. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
  433. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
  434. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
  435. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
  436. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
  437. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
  438. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
  439. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
  440. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
  441. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
  442. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
  443. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
  444. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
  445. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
  446. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
  447. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
  448. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
  449. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
  450. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
  451. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
  452. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
  453. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
  454. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
  455. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
  456. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
  457. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
  458. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
  459. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/NextTask.doc.json +0 -0
  460. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
  461. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
  462. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
  463. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
  464. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
  465. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
  466. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
  467. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
  468. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
  469. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
  470. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ParrotAgent.doc.json +0 -0
  471. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
  472. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PlanogramCompliance.doc.json +0 -0
  473. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
  474. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
  475. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
  476. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
  477. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
  478. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
  479. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
  480. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/QS.doc.json +0 -0
  481. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
  482. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
  483. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
  484. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
  485. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
  486. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
  487. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
  488. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
  489. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
  490. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
  491. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
  492. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ServiceScraperStores.doc.json +0 -0
  493. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
  494. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
  495. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
  496. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
  497. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
  498. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
  499. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
  500. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
  501. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
  502. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
  503. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
  504. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
  505. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
  506. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
  507. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
  508. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
  509. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
  510. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
  511. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
  512. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
  513. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
  514. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
  515. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
  516. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
  517. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
  518. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
  519. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tDictKey.doc.json +0 -0
  520. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tDiff.doc.json +0 -0
  521. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
  522. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
  523. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
  524. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFlatten.doc.json +0 -0
  525. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
  526. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
  527. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
  528. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
  529. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
  530. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
  531. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
  532. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
  533. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
  534. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/generator.py +0 -0
  535. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/models.py +0 -0
  536. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/parser.py +0 -0
  537. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/schema.py +0 -0
  538. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/documentation/toolkit.py +0 -0
  539. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/download.py +0 -0
  540. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/__init__.py +0 -0
  541. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/__init__.py +0 -0
  542. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/abstract.py +0 -0
  543. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/alerts/__init__.py +0 -0
  544. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/alerts/colfunctions.py +0 -0
  545. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/alerts/functions.py +0 -0
  546. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/dummy.py +0 -0
  547. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/exec.py +0 -0
  548. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/file/__init__.py +0 -0
  549. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/file/base.py +0 -0
  550. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/file/copy.py +0 -0
  551. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/file/delete.py +0 -0
  552. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/interfaces/__init__.py +0 -0
  553. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/interfaces/client.py +0 -0
  554. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/interfaces/credentials.py +0 -0
  555. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/interfaces/notifications.py +0 -0
  556. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/jira.py +0 -0
  557. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/log.py +0 -0
  558. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/logerr.py +0 -0
  559. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/notify.py +0 -0
  560. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/notify_event.py +0 -0
  561. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/publish.py +0 -0
  562. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/sendfile.py +0 -0
  563. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/task.py +0 -0
  564. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/teams.py +0 -0
  565. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/events/webhook.py +0 -0
  566. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/events/manager.py +0 -0
  567. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/exceptions.py +0 -0
  568. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/__init__.py +0 -0
  569. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/base.py +0 -0
  570. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/docker.py +0 -0
  571. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/events.py +0 -0
  572. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/exceptions.py +0 -0
  573. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/k8s.py +0 -0
  574. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/local.py +0 -0
  575. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/models.py +0 -0
  576. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/publish.py +0 -0
  577. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/qworker.py +0 -0
  578. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/registry.py +0 -0
  579. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/executors/resolver.py +0 -0
  580. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/extensions/__init__.py +0 -0
  581. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/extensions/abstract.py +0 -0
  582. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/extensions/component_docs.py +0 -0
  583. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/extensions/logging/__init__.py +0 -0
  584. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/factory/__init__.py +0 -0
  585. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/factory/agent.py +0 -0
  586. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/factory/composer.py +0 -0
  587. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/factory/parser.py +0 -0
  588. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/factory/validator.py +0 -0
  589. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/handlers/__init__.py +0 -0
  590. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/handlers/component.py +0 -0
  591. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/__init__.py +0 -0
  592. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/__init__.py +0 -0
  593. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/abstract.py +0 -0
  594. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/dummy.py +0 -0
  595. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/jira.py +0 -0
  596. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/rest.py +0 -0
  597. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/sampledata.py +0 -0
  598. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/sensor.py +0 -0
  599. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/task.py +0 -0
  600. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/ticket.py +0 -0
  601. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/zammad.py +0 -0
  602. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/actions/zoom_event.py +0 -0
  603. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/hook.py +0 -0
  604. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/models.py +0 -0
  605. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/service.py +0 -0
  606. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/step.py +0 -0
  607. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/__init__.py +0 -0
  608. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/base.py +0 -0
  609. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/__init__.py +0 -0
  610. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/base.py +0 -0
  611. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/mqtt.py +0 -0
  612. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
  613. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/redis.py +0 -0
  614. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/brokers/sqs.py +0 -0
  615. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/fs.py +0 -0
  616. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/http.py +0 -0
  617. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/imap.py +0 -0
  618. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/jira.py +0 -0
  619. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/mail.py +0 -0
  620. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/postgres.py +0 -0
  621. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/responses/__init__.py +0 -0
  622. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/responses/base.py +0 -0
  623. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/sharepoint.py +0 -0
  624. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/ssh.py +0 -0
  625. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/tagged.py +0 -0
  626. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/upload.py +0 -0
  627. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/watch.py +0 -0
  628. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/web.py +0 -0
  629. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/hooks/types/zoom.py +0 -0
  630. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/AzureClient.py +0 -0
  631. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/AzureGraph.py +0 -0
  632. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/Boto3Client.py +0 -0
  633. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/DropboxClient.py +0 -0
  634. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/ExcelHandler.py +0 -0
  635. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/FTPClient.py +0 -0
  636. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleCalendar.py +0 -0
  637. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleClient.py +0 -0
  638. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleDrive.py +0 -0
  639. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleGCS.py +0 -0
  640. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleGeocoding.py +0 -0
  641. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleLang.py +0 -0
  642. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GooglePub.py +0 -0
  643. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleReverseGeocoding.py +0 -0
  644. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/GoogleSheet.py +0 -0
  645. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/IMAPClient.py +0 -0
  646. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/LLMClient.py +0 -0
  647. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/NominatimGeocoding.py +0 -0
  648. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/O365Calendar.py +0 -0
  649. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/O365Client.py +0 -0
  650. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/OneDrive.py +0 -0
  651. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/Outlook.py +0 -0
  652. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/OverpassGeocoding.py +0 -0
  653. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/ParrotBot.py +0 -0
  654. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/ParrotTool.py +0 -0
  655. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/ReverseGeocoding.py +0 -0
  656. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/SOAPClient.py +0 -0
  657. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/SSHClient.py +0 -0
  658. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/Sharepoint.py +0 -0
  659. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/__init__.py +0 -0
  660. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/abstract.py +0 -0
  661. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/azure_component.py +0 -0
  662. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/azureauth.py +0 -0
  663. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/base_action.py +0 -0
  664. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/base_loop.py +0 -0
  665. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/cache.py +0 -0
  666. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/client.py +0 -0
  667. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/compress.py +0 -0
  668. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/copy_from_base.py +0 -0
  669. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/copy_to_file_base.py +0 -0
  670. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/credentials.py +0 -0
  671. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/d2l.py +0 -0
  672. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/databases/__init__.py +0 -0
  673. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/databases/db.py +0 -0
  674. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/databases/documentdb.py +0 -0
  675. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/databases/rethink.py +0 -0
  676. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/__init__.py +0 -0
  677. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/abstract.py +0 -0
  678. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/arrow.py +0 -0
  679. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/dt.py +0 -0
  680. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/pandas.py +0 -0
  681. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/dataframes/polars.py +0 -0
  682. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/db.py +0 -0
  683. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/db_client.py +0 -0
  684. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/download_from.py +0 -0
  685. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/env.py +0 -0
  686. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/file_base.py +0 -0
  687. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/func.py +0 -0
  688. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/gamma.py +0 -0
  689. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/google_base.py +0 -0
  690. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/group.py +0 -0
  691. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/http.py +0 -0
  692. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/locale.py +0 -0
  693. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/log.py +0 -0
  694. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/mask.py +0 -0
  695. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/notification.py +0 -0
  696. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/parrot/__init__.py +0 -0
  697. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/parrot/agent.py +0 -0
  698. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/parrot/client.py +0 -0
  699. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/parrot/config.py +0 -0
  700. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/pipelines/__init__.py +0 -0
  701. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/pipelines/parrot.py +0 -0
  702. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/playwright.py +0 -0
  703. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/powerpoint.py +0 -0
  704. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/ppt.py +0 -0
  705. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/py.typed +0 -0
  706. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/qs.py +0 -0
  707. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/qs_base.py +0 -0
  708. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/result.py +0 -0
  709. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/routing.py +0 -0
  710. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/sassie.py +0 -0
  711. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/__init__.py +0 -0
  712. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/abstract.py +0 -0
  713. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/engine.py +0 -0
  714. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/__init__.py +0 -0
  715. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/count.py +0 -0
  716. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/gravity.py +0 -0
  717. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/nearest.py +0 -0
  718. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/models.py +0 -0
  719. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/service.py +0 -0
  720. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/scoring/spatial.py +0 -0
  721. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/search.py +0 -0
  722. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/selenium/__init__.py +0 -0
  723. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/selenium/options.py +0 -0
  724. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/selenium/service.py +0 -0
  725. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/selenium_service.py +0 -0
  726. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/skip_policy.py +0 -0
  727. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/smartsheet.py +0 -0
  728. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/stat.py +0 -0
  729. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/t_pandas.py +0 -0
  730. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/table_base.py +0 -0
  731. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/task.py +0 -0
  732. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/teams.py +0 -0
  733. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/template.py +0 -0
  734. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/tickets.py +0 -0
  735. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/upload_to.py +0 -0
  736. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/user.py +0 -0
  737. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/__init__.py +0 -0
  738. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/abstract.py +0 -0
  739. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/milvus.py +0 -0
  740. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/__init__.py +0 -0
  741. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
  742. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/base.py +0 -0
  743. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
  744. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
  745. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
  746. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
  747. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
  748. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
  749. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
  750. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
  751. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
  752. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/locations.py +0 -0
  753. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
  754. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
  755. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
  756. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
  757. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/references.py +0 -0
  758. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
  759. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
  760. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
  761. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/applicant.py +0 -0
  762. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/candidate.py +0 -0
  763. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/clock_event.py +0 -0
  764. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/cost_center.py +0 -0
  765. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
  766. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_posting.py +0 -0
  767. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
  768. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
  769. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/location.py +0 -0
  770. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
  771. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/organizations.py +0 -0
  772. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/reference.py +0 -0
  773. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_block.py +0 -0
  774. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
  775. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_request.py +0 -0
  776. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
  777. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
  778. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
  779. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
  780. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
  781. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
  782. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
  783. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
  784. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
  785. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
  786. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
  787. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
  788. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
  789. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
  790. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/utils/__init__.py +0 -0
  791. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/workday/utils/utils.py +0 -0
  792. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/zammad.py +0 -0
  793. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/interfaces/zoom.py +0 -0
  794. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/models.py +0 -0
  795. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/__init__.py +0 -0
  796. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/_yaml.pyx +0 -0
  797. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/argparser.py +0 -0
  798. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/base.pxd +0 -0
  799. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/base.pyx +0 -0
  800. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/json.pyx +0 -0
  801. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/maps.py +0 -0
  802. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/__init__.py +0 -0
  803. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/checker.py +0 -0
  804. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/detector.py +0 -0
  805. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/registry.py +0 -0
  806. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/report.py +0 -0
  807. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/syntax/schema.py +0 -0
  808. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/parsers/toml.pyx +0 -0
  809. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/plugins/__init__.py +0 -0
  810. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/plugins/components_/__init__.py +0 -0
  811. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/plugins/handler/__init__.py +0 -0
  812. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/plugins/importer.py +0 -0
  813. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/plugins/sources/__init__.py +0 -0
  814. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/runner.py +0 -0
  815. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/__init__.py +0 -0
  816. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/functions.py +0 -0
  817. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/handlers/__init__.py +0 -0
  818. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/handlers/manager.py +0 -0
  819. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/handlers/models.py +0 -0
  820. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/handlers/service.py +0 -0
  821. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/notifications.py +0 -0
  822. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/scheduler/scheduler.py +0 -0
  823. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/__init__.py +0 -0
  824. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/bots/__init__.py +0 -0
  825. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/bots/telegram.py +0 -0
  826. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/files/__init__.py +0 -0
  827. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/files/manager.py +0 -0
  828. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/files/model.py +0 -0
  829. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/files/service.py +0 -0
  830. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/jira/__init__.py +0 -0
  831. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/jira/jira_actions.py +0 -0
  832. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/README.md +0 -0
  833. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/__init__.py +0 -0
  834. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/changelog.py +0 -0
  835. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/handlers.py +0 -0
  836. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/health.py +0 -0
  837. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/models.py +0 -0
  838. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/service.py +0 -0
  839. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/store.py +0 -0
  840. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/templates.py +0 -0
  841. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/maintenance/windows.py +0 -0
  842. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/__init__.py +0 -0
  843. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/launcher.py +0 -0
  844. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/manager.py +0 -0
  845. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/service.py +0 -0
  846. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/task_manager.py +0 -0
  847. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/services/tasks/tasks.py +0 -0
  848. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/__init__.py +0 -0
  849. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/exceptions.py +0 -0
  850. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/files/__init__.py +0 -0
  851. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/files/abstract.py +0 -0
  852. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/files/filesystem.py +0 -0
  853. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/__init__.py +0 -0
  854. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/abstract.py +0 -0
  855. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/database.py +0 -0
  856. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/filesystem.py +0 -0
  857. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/github.py +0 -0
  858. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/memory.py +0 -0
  859. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/storages/tasks/row.py +0 -0
  860. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/__init__.py +0 -0
  861. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/abstract.py +0 -0
  862. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/chain.py +0 -0
  863. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/chainer.py +0 -0
  864. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/command.py +0 -0
  865. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/exchange.py +0 -0
  866. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/pile.py +0 -0
  867. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/py.typed +0 -0
  868. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/task.py +0 -0
  869. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tasks/workers.py +0 -0
  870. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/template/__init__.py +0 -0
  871. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/tests.py +0 -0
  872. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/types/__init__.py +0 -0
  873. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/types/typedefs.pyx +0 -0
  874. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/__init__.py +0 -0
  875. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/bestbuy_greedy.py +0 -0
  876. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/constants.py +0 -0
  877. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/dataframes.py +0 -0
  878. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/encoders.py +0 -0
  879. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/executor.py +0 -0
  880. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/functions.pyx +0 -0
  881. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/json.pxi +0 -0
  882. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/json.pyx +0 -0
  883. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/mail.py +0 -0
  884. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/msgraph_patch.py +0 -0
  885. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/parseqs.pyx +0 -0
  886. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/stats.py +0 -0
  887. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/transformations.py +0 -0
  888. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/uv.py +0 -0
  889. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask/utils/validators.py +0 -0
  890. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/dependency_links.txt +0 -0
  891. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/entry_points.txt +0 -0
  892. {flowtask-5.13.7 → flowtask-5.13.9}/flowtask.egg-info/top_level.txt +0 -0
  893. {flowtask-5.13.7 → flowtask-5.13.9}/setup.cfg +0 -0
  894. {flowtask-5.13.7 → flowtask-5.13.9}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowtask
3
- Version: 5.13.7
3
+ Version: 5.13.9
4
4
  Summary: Framework for Task orchestration
5
5
  Author-email: Jesus Lara <jesuslarag@gmail.com>
6
6
  License: Apache-2.0
@@ -50,7 +50,9 @@ Requires-Dist: nltk>=3.10.3
50
50
  Requires-Dist: jdcal==1.4.1
51
51
  Requires-Dist: html5lib==1.1
52
52
  Requires-Dist: shapely>=2.1.2
53
+ Requires-Dist: pyproj>=3.6
53
54
  Requires-Dist: tzwhere==3.0.3
55
+ Requires-Dist: timezonefinder>=9.0.0
54
56
  Requires-Dist: tabulate==0.9.0
55
57
  Requires-Dist: python-magic==0.4.27
56
58
  Requires-Dist: pytomlpp==1.0.13
@@ -87,7 +89,7 @@ Requires-Dist: gmqtt==0.7.0
87
89
  Requires-Dist: selectorlib==0.16.0
88
90
  Requires-Dist: playwright==1.52.0
89
91
  Requires-Dist: fuzzywuzzy==0.18.0
90
- Requires-Dist: praw==8.0.3
92
+ Requires-Dist: praw==7.8.1
91
93
  Requires-Dist: prawcore==2.4.0
92
94
  Requires-Dist: osmnx==2.0.1
93
95
  Requires-Dist: osmium==4.0.2
@@ -1,42 +1,40 @@
1
- import re
2
1
  import asyncio
3
- import multiprocessing
4
- import gc
5
2
  import csv
6
- from decimal import Decimal
7
3
  import datetime
4
+ import gc
5
+ import multiprocessing
6
+ import re
7
+ from collections.abc import Sequence
8
+ from decimal import Decimal
8
9
  from io import BytesIO
9
- from typing import Sequence, Union
10
- import pandas as pd
11
- from pandas.api.types import (
12
- is_datetime64_any_dtype,
13
- is_integer_dtype,
14
- is_float_dtype,
15
- is_bool_dtype
16
- )
10
+ from typing import Any, Optional
11
+
12
+ import asyncpg
17
13
  import numpy as np
18
- from typing import Optional
19
- from querysource.types.dt.transforms import to_wall_clock
20
14
  import orjson
21
- import asyncpg
22
- from datamodel import Field
15
+ import pandas as pd
16
+ import shapely
17
+ from asyncdb.exceptions import DataError, StatementError
18
+ from asyncdb.models import Model
23
19
  from asyncpg.exceptions import (
24
- StringDataRightTruncationError,
25
- UniqueViolationError,
26
20
  ForeignKeyViolationError,
27
21
  NotNullViolationError,
22
+ StringDataRightTruncationError,
23
+ UniqueViolationError,
24
+ )
25
+ from datamodel import Field
26
+ from pandas.api.types import (
27
+ is_datetime64_any_dtype,
28
28
  )
29
29
  from pgvector.asyncpg import register_vector
30
- from asyncdb.exceptions import StatementError, DataError
31
- from asyncdb.models import Model
30
+ from querysource.types.dt.transforms import to_wall_clock
31
+
32
32
  # Dataintegration components:
33
33
  from ..exceptions import (
34
34
  ComponentError,
35
- DataNotFound,
36
35
  )
37
36
  from ..interfaces.copy_to import CopyTo, dtypes
38
- from ..utils.json import json_decoder, json_encoder
39
-
37
+ from ..utils.json import json_decoder
40
38
 
41
39
  # PostgreSQL type names (as reported by asyncpg) that store plain text.
42
40
  PG_TEXT_TYPES = frozenset({"text", "varchar", "bpchar", "character varying", "character", "name"})
@@ -89,6 +87,31 @@ def quote_ddl_columns(sql: str, columns: list[str]) -> str:
89
87
  return sql
90
88
 
91
89
 
90
+ def _to_ewkb(value: Any) -> bytes:
91
+ """Encode WKT, EWKT, or a Shapely geometry as SRID-bearing EWKB.
92
+
93
+ Args:
94
+ value: Geometry text or a Shapely geometry.
95
+
96
+ Returns:
97
+ Binary EWKB with the source SRID, defaulting to EPSG:4326.
98
+ """
99
+ geometry = value
100
+ srid = 0
101
+ if isinstance(value, str):
102
+ text = value.strip()
103
+ match = re.match(r"^SRID=(\d+);(.*)$", text, flags=re.IGNORECASE | re.DOTALL)
104
+ if match:
105
+ srid = int(match.group(1))
106
+ text = match.group(2)
107
+ geometry = shapely.from_wkt(text)
108
+ if not srid:
109
+ srid = shapely.get_srid(geometry) or 4326
110
+ if shapely.get_srid(geometry) != srid:
111
+ geometry = shapely.set_srid(geometry, srid)
112
+ return shapely.to_wkb(geometry, include_srid=True)
113
+
114
+
92
115
  class CopyToPg(CopyTo):
93
116
  """
94
117
  CopyToPg
@@ -113,6 +136,7 @@ class CopyToPg(CopyTo):
113
136
  | array_columns | No | List of column names containing JSON arrays. These columns will be formatted |
114
137
  | | | appropriately before insertion. |
115
138
  | | | Requires `use_buffer` to be True. |
139
+ | geometry_columns | No | Mapping of columns to PostGIS types, or a list defaulting to geography Polygon. |
116
140
  | use_quoting | No | Boolean flag indicating whether to use quoting for CSV data insertion (optional).|
117
141
  | | | Defaults to False. |
118
142
  | | | Using quoting can be helpful for data containing special characters. |
@@ -171,7 +195,7 @@ class CopyToPg(CopyTo):
171
195
  stack_info=True
172
196
  )
173
197
 
174
- def extract_copied(self, result: Union[str, Sequence[str], None]) -> int:
198
+ def extract_copied(self, result: str | Sequence[str] | None) -> int:
175
199
  if result is None:
176
200
  return 0
177
201
  if isinstance(result, str):
@@ -225,6 +249,12 @@ class CopyToPg(CopyTo):
225
249
  f = (col, Optional[list], Field(default=None, nullable=True, db_type='vector'))
226
250
  elif col in self._array_columns:
227
251
  f = (col, Optional[list], Field(default=None, nullable=True, db_type='text[]'))
252
+ elif col in getattr(self, "_geometry_columns", {}):
253
+ f = (
254
+ col,
255
+ Optional[str],
256
+ Field(default=None, nullable=True, db_type=self._geometry_columns[col]),
257
+ )
228
258
  elif col in self._binary_columns:
229
259
  f = (col, Optional[bytes], Field(default=None, nullable=True, db_type='bytea'))
230
260
  else:
@@ -321,14 +351,17 @@ class CopyToPg(CopyTo):
321
351
  await asyncio.sleep(5e-3)
322
352
  break # exit loop
323
353
  except (asyncpg.exceptions.QueryCanceledError, StatementError) as e:
324
- if "canceling statement due to statement timeout" in str(e) or "another operation is in progress" in str(e): # noqa
354
+ if (
355
+ "canceling statement due to statement timeout" in str(e)
356
+ or "another operation is in progress" in str(e)
357
+ ):
325
358
  retry_count += 1
326
359
  self._logger.warning(
327
- f"CopyToPg Error: {str(e)}, Retrying... {retry_count}/{max_retries}"
360
+ f"CopyToPg Error: {e!s}, Retrying... {retry_count}/{max_retries}"
328
361
  )
329
362
  if retry_count > max_retries:
330
363
  raise ComponentError(
331
- f"CopyToPg Error: {str(e)}, Max Retries reached"
364
+ f"CopyToPg Error: {e!s}, Max Retries reached"
332
365
  ) from e
333
366
  else:
334
367
  # Create a new connection an wait until repeat operation:
@@ -362,6 +395,30 @@ class CopyToPg(CopyTo):
362
395
  self._logger.error(f"Error getting column types: {e}")
363
396
  return {}
364
397
 
398
+ async def _register_postgis_codecs(self, engine) -> None:
399
+ """Register binary EWKB codecs for installed PostGIS spatial types.
400
+
401
+ Args:
402
+ engine: Underlying asyncpg connection used to register codecs.
403
+
404
+ Raises:
405
+ ComponentError: If neither PostGIS spatial type is installed.
406
+ """
407
+ rows = await engine.fetch(
408
+ "SELECT t.typname, n.nspname FROM pg_type t JOIN pg_namespace n ON n.oid = t.typnamespace "
409
+ "WHERE t.typname IN ('geometry', 'geography')"
410
+ )
411
+ if not rows:
412
+ raise ComponentError("PostGIS extension not installed in target database")
413
+ for row in rows:
414
+ await engine.set_type_codec(
415
+ row["typname"],
416
+ schema=row["nspname"],
417
+ encoder=_to_ewkb,
418
+ decoder=shapely.from_wkb,
419
+ format="binary",
420
+ )
421
+
365
422
  def _coerce_text_columns(self, pg_column_types: list[dict] | dict) -> None:
366
423
  """Stringify scalar values bound for columns the table stores as text.
367
424
 
@@ -380,7 +437,12 @@ class CopyToPg(CopyTo):
380
437
  col["name"] for col in pg_column_types
381
438
  if col.get("pg_type") in PG_TEXT_TYPES
382
439
  ]
383
- skip = set(self._json_columns) | set(self._array_columns) | set(self._vector_columns)
440
+ skip = (
441
+ set(self._json_columns)
442
+ | set(self._array_columns)
443
+ | set(self._vector_columns)
444
+ | set(getattr(self, "_geometry_columns", {}))
445
+ )
384
446
  scalars = (bool, int, float, Decimal, np.generic, datetime.date, datetime.datetime, pd.Timestamp)
385
447
  converted = []
386
448
  for col in text_cols:
@@ -483,6 +545,15 @@ class CopyToPg(CopyTo):
483
545
  kw = {}
484
546
  if hasattr(self, "use_quoting"):
485
547
  kw = {"quoting": csv.QUOTE_NONNUMERIC}
548
+ for col in getattr(self, "_geometry_columns", {}):
549
+ if col in self.data.columns:
550
+ self.data[col] = self.data[col].map(
551
+ lambda geometry: (
552
+ f"SRID={shapely.get_srid(geometry) or 4326};{geometry.wkt}"
553
+ if isinstance(geometry, shapely.Geometry)
554
+ else geometry
555
+ )
556
+ )
486
557
  self.data.to_csv(s_buf, index=None, header=None, **kw)
487
558
  s_buf.seek(0)
488
559
  if hasattr(self, "clean_df"):
@@ -505,6 +576,8 @@ class CopyToPg(CopyTo):
505
576
  format="binary",
506
577
  )
507
578
  await register_vector(conn.engine())
579
+ if self._geometry_columns:
580
+ await self._register_postgis_codecs(conn.engine())
508
581
  # Saving as CSV to the table
509
582
  result = await conn.engine().copy_to_table(
510
583
  table_name=self.tablename,
@@ -596,7 +669,10 @@ class CopyToPg(CopyTo):
596
669
  if col in self.data.columns:
597
670
  # Ensure array values are Python lists
598
671
  self.data[col] = self.data[col].apply(
599
- lambda x: None if x is None else x if isinstance(x, list) else eval(x) if isinstance(x, str) and x.startswith('[') else [x] # noqa
672
+ lambda x: None if x is None
673
+ else x if isinstance(x, list)
674
+ else eval(x) if isinstance(x, str) and x.startswith('[')
675
+ else [x]
600
676
  )
601
677
  # Final NaT cleanup for all columns - ensure we have no NaT values before sending to PostgreSQL
602
678
  for col in self.data.columns:
@@ -624,6 +700,8 @@ class CopyToPg(CopyTo):
624
700
  format="binary"
625
701
  )
626
702
  await register_vector(conn.engine())
703
+ if self._geometry_columns:
704
+ await self._register_postgis_codecs(conn.engine())
627
705
 
628
706
  if self._debug:
629
707
  for c in self.data.columns:
@@ -4,7 +4,7 @@ import re
4
4
  import pandas as pd
5
5
  import numpy as np
6
6
  from querysource.types.dt import filters as qsffunctions
7
- from querysource.queries.multi.operators.filter.flt import create_filter
7
+ from querysource.types.dt.filters import combine_conditions, create_filter
8
8
  from .FilterRows import functions as dffunctions
9
9
  # create_filter
10
10
  from ..exceptions import (
@@ -245,17 +245,19 @@ class FilterIf(FlowComponent):
245
245
  df = self._filter_conditions(df)
246
246
  # Applying filter expressions by Column:
247
247
  if self.fields:
248
- df = self._filter_fields()
248
+ df = self._filter_fields(df)
249
249
  if self.filter:
250
- conditions = create_filter(self.filter, df)
251
- # Joining all conditions
252
- self.condition = f" {self.operator} ".join(conditions)
250
+ # create_filter returns one boolean mask (pd.Series) per spec;
251
+ # the condition string is descriptive only (never evaluated).
252
+ masks = create_filter(self.filter, df)
253
+ self.condition = f" {self.operator} ".join(
254
+ f"{spec.get('column')} {spec.get('expression', '==')} {spec.get('value')!r}"
255
+ for spec in self.filter
256
+ )
253
257
  self._logger.notice(
254
258
  f"Filter conditions >> {self.condition}"
255
259
  )
256
- df = df.loc[
257
- eval(self.condition)
258
- ] # pylint: disable=W0123
260
+ df = df.loc[combine_conditions(masks, self.operator)]
259
261
  if df is None or df.empty:
260
262
  self._logger.warning(
261
263
  "No Data was Found after Filtering."
@@ -0,0 +1,348 @@
1
+ """Frankfurter — exchange-rate component over the Frankfurter v2 REST API."""
2
+ from __future__ import annotations
3
+
4
+ import asyncio
5
+ from collections.abc import Callable
6
+ from datetime import date as date_type
7
+ from io import StringIO
8
+ from typing import Any
9
+
10
+ import backoff
11
+ import httpx
12
+ import orjson
13
+ import pandas as pd
14
+
15
+ from ..exceptions import ComponentError, ConfigError, DataNotFound
16
+ from ..interfaces.flow import FlowComponent
17
+ from ..interfaces.http import HTTPService
18
+
19
+ API_URL: str = "https://api.frankfurter.dev"
20
+ TYPES: tuple[str, ...] = ("rates", "rate", "convert", "currencies", "currency", "providers")
21
+ METADATA_TYPES: tuple[str, ...] = ("currencies", "currency", "providers")
22
+ FORMATS: tuple[str, ...] = ("ndjson", "csv", "json")
23
+ GROUPS: tuple[str, ...] = ("week", "month")
24
+ ACCEPT_BY_FORMAT: dict[str, str] = {
25
+ "ndjson": "application/x-ndjson",
26
+ "csv": "text/csv",
27
+ "json": "application/json",
28
+ }
29
+
30
+
31
+ class Frankfurter(HTTPService, FlowComponent):
32
+ """
33
+ Frankfurter
34
+
35
+ Overview
36
+
37
+ Consumes the Frankfurter v2 exchange-rates REST API with an async httpx client. It
38
+ returns latest, historical, provider, and metadata exchange-rate data as a pandas
39
+ DataFrame by default, or as the raw response payload.
40
+
41
+ :widths: auto
42
+
43
+ | type | No | rates (default), rate, convert, currencies, currency, or providers. |
44
+ | base | No | Base currency ISO code; required for rate, convert, and currency. |
45
+ | quotes | No | Target currencies, as a list or comma-separated string. |
46
+ | date | No | Historical date in YYYY-MM-DD format. |
47
+ | start_date | No | Time-series start date, sent as from. |
48
+ | end_date | No | Time-series end date, sent as to. |
49
+ | group | No | week or month; requires start_date. |
50
+ | provider | No | Provider route key, exclusive with providers. |
51
+ | providers | No | Provider filter list, exclusive with provider. |
52
+ | expand_providers | No | Adds contributing providers to every rate row. |
53
+ | scope | No | currencies only: all includes legacy currencies. |
54
+ | amount | No | Positive convert amount, added to the result with converted. |
55
+ | inverse | No | Adds inverse_rate (1 / rate) computed locally, with no second request. |
56
+ | format | No | ndjson (default), csv, or json. Metadata is always json. |
57
+ | as_dataframe | No | Return a DataFrame when true, otherwise the raw payload. |
58
+ | api_url | No | API base URL, defaulting to https://api.frankfurter.dev. |
59
+ | timeout | No | Request timeout in seconds, default 30. |
60
+ | max_retries | No | Attempts for transport and server errors, default 3. |
61
+
62
+ :consumes: none
63
+ :produces: dataframe
64
+
65
+ Example:
66
+
67
+ ```yaml
68
+ - Frankfurter:
69
+ type: rates
70
+ base: USD
71
+ quotes: [EUR, GBP]
72
+ start_date: "2026-10-01"
73
+ end_date: "2026-10-05"
74
+ format: ndjson
75
+ inverse: true
76
+ as_dataframe: true
77
+ ```
78
+ """
79
+
80
+ _version: str = "1.0.0"
81
+ accept: str = "application/json"
82
+
83
+ def __init__(
84
+ self,
85
+ loop: asyncio.AbstractEventLoop | None = None,
86
+ job: Callable | None = None,
87
+ stat: Callable | None = None,
88
+ **kwargs: Any,
89
+ ) -> None:
90
+ self.type: str = kwargs.get("type", "rates")
91
+ self.base: str | None = kwargs.get("base")
92
+ self.quotes: list[str] | str | None = kwargs.get("quotes")
93
+ self.date: str | None = kwargs.get("date")
94
+ self.start_date: str | None = kwargs.get("start_date")
95
+ self.end_date: str | None = kwargs.get("end_date")
96
+ self.group: str | None = kwargs.get("group")
97
+ self.provider: str | None = kwargs.get("provider")
98
+ self.providers: list[str] | str | None = kwargs.get("providers")
99
+ self.expand_providers: bool = kwargs.get("expand_providers", False)
100
+ self.scope: str | None = kwargs.get("scope")
101
+ self.amount: float | None = kwargs.get("amount")
102
+ self.inverse: bool = kwargs.get("inverse", False)
103
+ self.format: str = kwargs.get("format", "ndjson")
104
+ self.as_dataframe: bool = kwargs.get("as_dataframe", True)
105
+ self.api_url: str = kwargs.get("api_url", API_URL)
106
+ self.max_retries: int = kwargs.get("max_retries", 3)
107
+ self._injected_client: httpx.AsyncClient | None = kwargs.pop("client", None)
108
+ super().__init__(loop=loop, job=job, stat=stat, **kwargs)
109
+ self.timeout = kwargs.get("timeout", 30)
110
+
111
+ async def start(self, **kwargs: Any) -> bool:
112
+ """Validate configuration and initialize an owned or injected HTTP client."""
113
+ self._validate()
114
+ if self._injected_client is not None:
115
+ self._client = self._injected_client
116
+ else:
117
+ self._client = httpx.AsyncClient(base_url=self.api_url, timeout=httpx.Timeout(self.timeout))
118
+ return True
119
+
120
+ async def run(self) -> Any:
121
+ """Fetch, parse, and publish the configured Frankfurter result."""
122
+ path, params, headers = self._build_request()
123
+ response = await self._fetch(path, params, headers)
124
+ self._raise_for_status(response)
125
+ result = await self._parse(response)
126
+ if self.inverse and isinstance(result, pd.DataFrame):
127
+ result = self._apply_inverse(result)
128
+ if self.type == "convert" and isinstance(result, pd.DataFrame):
129
+ result = self._apply_conversion(result)
130
+ self.add_metric("URL", str(response.url))
131
+ self.add_metric("TYPE", self.type)
132
+ self.add_metric("FORMAT", self.format)
133
+ self.add_metric("CONTENT_TYPE", response.headers.get("content-type", ""))
134
+ if isinstance(result, pd.DataFrame):
135
+ self.add_metric("NUMROWS", len(result.index))
136
+ self.add_metric("NUMCOLS", len(result.columns))
137
+ self._result = result
138
+ return self._result
139
+
140
+ async def close(self) -> bool:
141
+ """Close only the HTTP client that this component created."""
142
+ if hasattr(self, "_client") and self._client is not None and self._injected_client is None:
143
+ await self._client.aclose()
144
+ return True
145
+
146
+ def _validate(self) -> None:
147
+ """Validate component configuration before issuing any HTTP request."""
148
+ if self.type not in TYPES:
149
+ raise ConfigError(f"Invalid type: {self.type}")
150
+ if self.format not in FORMATS:
151
+ raise ConfigError(f"Invalid format: {self.format}")
152
+ if self.group is not None and self.group not in GROUPS:
153
+ raise ConfigError(f"Invalid group: {self.group}")
154
+ if self.group is not None and not self.start_date:
155
+ raise ConfigError("group requires start_date")
156
+ if self.end_date and not self.start_date:
157
+ raise ConfigError("end_date requires start_date")
158
+ if self.date and (self.start_date or self.end_date):
159
+ raise ConfigError("date is exclusive with start_date and end_date")
160
+
161
+ parsed_dates: dict[str, date_type] = {}
162
+ for name in ("date", "start_date", "end_date"):
163
+ value = getattr(self, name)
164
+ if value:
165
+ try:
166
+ parsed_dates[name] = date_type.fromisoformat(value)
167
+ except (TypeError, ValueError) as exc:
168
+ raise ConfigError(f"Invalid {name}: {value}") from exc
169
+ if self.start_date and self.end_date and parsed_dates["end_date"] < parsed_dates["start_date"]:
170
+ raise ConfigError("end_date must be greater than or equal to start_date")
171
+
172
+ self.quotes = self._normalize_codes(self.quotes)
173
+ self.providers = self._normalize_codes(self.providers)
174
+ if self.base:
175
+ self.base = self.base.upper()
176
+ if self.provider:
177
+ self.provider = self.provider.upper()
178
+
179
+ if self.type == "rate" and (not self.base or not self.quotes or len(self.quotes) != 1):
180
+ raise ConfigError("rate requires base and exactly one quote")
181
+ if self.type == "convert":
182
+ if not self.base:
183
+ raise ConfigError("convert requires base")
184
+ if not isinstance(self.amount, (int, float)) or isinstance(self.amount, bool) or self.amount <= 0:
185
+ raise ConfigError("convert requires amount greater than zero")
186
+ if self.inverse:
187
+ if self.type in METADATA_TYPES:
188
+ raise ConfigError(f"inverse is not supported for type: {self.type}")
189
+ if not self.as_dataframe:
190
+ raise ConfigError("inverse requires as_dataframe")
191
+ if self.provider and self.providers:
192
+ raise ConfigError("provider is exclusive with providers")
193
+ if self.type == "currency" and not self.base:
194
+ raise ConfigError("currency requires base")
195
+ if self.type in METADATA_TYPES and self.format != "json":
196
+ self._logger.warning("Frankfurter metadata endpoints always use JSON; forcing format=json")
197
+ self.format = "json"
198
+
199
+ @staticmethod
200
+ def _normalize_codes(value: list[str] | str | None) -> list[str] | None:
201
+ """Normalize a comma-separated or list currency/provider value to uppercase codes."""
202
+ if value is None:
203
+ return None
204
+ values = value.split(",") if isinstance(value, str) else value
205
+ return [str(item).strip().upper() for item in values if str(item).strip()]
206
+
207
+ def _build_request(self) -> tuple[str, dict[str, str], dict[str, str]]:
208
+ """Build a v2 Frankfurter path, query parameters, and request headers."""
209
+ path: str
210
+ params: dict[str, str] = {}
211
+ if self.type in ("rates", "convert"):
212
+ path = "/v2/rates"
213
+ if self.provider:
214
+ path = f"/v2/providers/{self.provider}/rates"
215
+ self._add_rate_params(params)
216
+ elif self.type == "rate":
217
+ quote = self.quotes[0]
218
+ path = f"/v2/rate/{self.base}/{quote}"
219
+ if self.provider:
220
+ path = f"/v2/providers/{self.provider}/rate/{self.base}/{quote}"
221
+ self._add_date_params(params)
222
+ if self.providers:
223
+ params["providers"] = ",".join(self.providers)
224
+ elif self.type == "currencies":
225
+ path = "/v2/currencies"
226
+ if self.scope:
227
+ params["scope"] = self.scope
228
+ elif self.type == "currency":
229
+ path = f"/v2/currency/{self.base}"
230
+ else:
231
+ path = "/v2/providers"
232
+ if self.provider:
233
+ path = f"/v2/providers/{self.provider}"
234
+
235
+ if self.format == "csv" and self.type not in METADATA_TYPES:
236
+ path = f"{path}.csv"
237
+ return path, params, {"Accept": ACCEPT_BY_FORMAT[self.format]}
238
+
239
+ def _add_rate_params(self, params: dict[str, str]) -> None:
240
+ """Add rate-endpoint query parameters to a request parameter mapping."""
241
+ if self.base:
242
+ params["base"] = self.base
243
+ if self.quotes:
244
+ params["quotes"] = ",".join(self.quotes)
245
+ self._add_date_params(params)
246
+ if self.group:
247
+ params["group"] = self.group
248
+ if self.providers:
249
+ params["providers"] = ",".join(self.providers)
250
+ if self.expand_providers:
251
+ params["expand"] = "providers"
252
+
253
+ def _add_date_params(self, params: dict[str, str]) -> None:
254
+ """Add mutually-exclusive historical-date or time-series query parameters."""
255
+ if self.date:
256
+ params["date"] = self.date
257
+ elif self.start_date:
258
+ params["from"] = self.start_date
259
+ if self.end_date:
260
+ params["to"] = self.end_date
261
+
262
+ async def _fetch(self, path: str, params: dict[str, str], headers: dict[str, str]) -> httpx.Response:
263
+ """Fetch a response, retrying transport failures and 5xx statuses with backoff."""
264
+ async def request() -> httpx.Response:
265
+ response = await self._client.get(path, params=params, headers=headers)
266
+ if response.status_code >= 500:
267
+ raise httpx.HTTPStatusError("Frankfurter server error", request=response.request, response=response)
268
+ return response
269
+
270
+ retry_request = backoff.on_exception(
271
+ backoff.expo,
272
+ (httpx.TransportError, httpx.HTTPStatusError),
273
+ max_tries=self.max_retries,
274
+ jitter=backoff.full_jitter,
275
+ )(request)
276
+ try:
277
+ return await retry_request()
278
+ except httpx.HTTPStatusError as exc:
279
+ raise ComponentError(f"Frankfurter {exc.response.status_code}: server error") from exc
280
+ except httpx.TransportError as exc:
281
+ raise ComponentError(f"Frankfurter transport error: {exc}") from exc
282
+
283
+ def _raise_for_status(self, response: httpx.Response) -> None:
284
+ """Map Frankfurter API errors to the framework's component exceptions."""
285
+ if response.status_code < 400:
286
+ return
287
+ message = response.text
288
+ try:
289
+ payload = orjson.loads(response.text)
290
+ message = payload.get("message", message) if isinstance(payload, dict) else message
291
+ except orjson.JSONDecodeError:
292
+ pass
293
+ if response.status_code == 404:
294
+ raise DataNotFound(f"Frankfurter: {message}")
295
+ raise ComponentError(f"Frankfurter {response.status_code}: {message}")
296
+
297
+ async def _parse(self, response: httpx.Response) -> pd.DataFrame | str | list | dict:
298
+ """Parse a response according to its Content-Type and output configuration."""
299
+ text = response.text
300
+ if not text.strip():
301
+ raise DataNotFound("Frankfurter: No data was found.")
302
+ content_type = response.headers.get("content-type", "").split(";", 1)[0].strip().lower()
303
+ if content_type == "application/x-ndjson":
304
+ if not self.as_dataframe:
305
+ return text
306
+ result: pd.DataFrame | str | list | dict = pd.read_json(StringIO(text), lines=True)
307
+ elif content_type == "text/csv":
308
+ if not self.as_dataframe:
309
+ return text
310
+ result = pd.read_csv(StringIO(text))
311
+ elif content_type == "application/json":
312
+ payload = orjson.loads(text)
313
+ if not payload:
314
+ raise DataNotFound("Frankfurter: No data was found.")
315
+ if not self.as_dataframe:
316
+ return payload
317
+ result = await self.create_dataframe(payload)
318
+ else:
319
+ raise ComponentError(f"Frankfurter: Unsupported content type: {content_type}")
320
+
321
+ if not isinstance(result, pd.DataFrame) or result.empty:
322
+ raise DataNotFound("Frankfurter: No data was found.")
323
+ if "date" in result.columns:
324
+ result["date"] = pd.to_datetime(result["date"], format="%Y-%m-%d")
325
+ if "rate" in result.columns:
326
+ result["rate"] = result["rate"].astype("float64")
327
+ return result
328
+
329
+ def _apply_inverse(self, df: pd.DataFrame) -> pd.DataFrame:
330
+ """Add the reciprocal quote-to-base rate, computed locally from the same response.
331
+
332
+ The API exposes no multi-base query, so the opposite direction would otherwise cost
333
+ one extra request per base. ``inverse_rate`` is ``1 / rate``; a zero rate yields NaN
334
+ instead of infinity.
335
+ """
336
+ if "rate" not in df.columns:
337
+ raise ComponentError("Frankfurter: inverse requires a rate column")
338
+ df = df.copy()
339
+ rate = df["rate"].astype("float64")
340
+ df["inverse_rate"] = (1.0 / rate.where(rate != 0.0)).astype("float64")
341
+ return df
342
+
343
+ def _apply_conversion(self, df: pd.DataFrame) -> pd.DataFrame:
344
+ """Add configured amount and unrounded converted-value columns to a rates frame."""
345
+ df = df.copy()
346
+ df["amount"] = float(self.amount)
347
+ df["converted"] = df["amount"] * df["rate"]
348
+ return df