flowtask 5.12.16__tar.gz → 5.12.18__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.
- {flowtask-5.12.16 → flowtask-5.12.18}/PKG-INFO +1 -1
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/HTTPClient.py +7 -2
- flowtask-5.12.18/flowtask/components/ParrotAgent.py +489 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductReportBot.py +137 -31
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/RESTClient.py +15 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendNotify/component.py +6 -0
- flowtask-5.12.18/flowtask/documentation/generated/components/ParrotAgent.doc.json +23 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ProductReportBot.doc.json +28 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SearchQuery.doc.json +1 -1
- flowtask-5.12.18/flowtask/documentation/generated/components/ServiceScraperStores.doc.json +27 -0
- flowtask-5.12.18/flowtask/documentation/generated/components/tDictKey.doc.json +25 -0
- flowtask-5.12.18/flowtask/documentation/generated/components/tFlatten.doc.json +23 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/index.json +448 -383
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/notify_event.py +5 -4
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/teams.py +4 -3
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/mail.py +6 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/sharepoint.py +6 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/AzureGraph.py +6 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/O365Client.py +6 -0
- flowtask-5.12.18/flowtask/interfaces/parrot/__init__.py +34 -0
- flowtask-5.12.18/flowtask/interfaces/parrot/config.py +719 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/zammad.py +91 -1
- flowtask-5.12.18/flowtask/utils/msgraph_patch.py +129 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/version.py +1 -1
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/PKG-INFO +1 -1
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/SOURCES.txt +6 -0
- flowtask-5.12.16/flowtask/interfaces/parrot/__init__.py +0 -4
- flowtask-5.12.16/flowtask/utils/msgraph_patch.py +0 -61
- {flowtask-5.12.16 → flowtask-5.12.18}/CONTRIBUTING.md +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/INSTALL +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/LICENSE +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/MANIFEST.in +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/README.md +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/__main__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/bots/check.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ATT.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Azure.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/BestBuy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CallAnalysis.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToPg.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Costco.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DateList.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromGoogleDrive.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadFromSmartsheet.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileList.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GenData.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/IF.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Loop.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MarketClustering.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/NextTask.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OpenStreetMap.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OpenWithBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/OpenWithPandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/QS.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SchedulingVisits.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SearchQuery.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/retailers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/retailers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/retailers/costco.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/retailers/tractor_supply.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/retailers/verizon.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScraperStores/scraper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Staples.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SweetSpotScore/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SweetSpotScore/component.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/SweetSpotScore/layers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Switch.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TableSchema.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Target.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TransformRows/TransformRows.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TransformRows/functions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Wait.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workday/workday.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/flow.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/google.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/group.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/py.typed +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tFlatten.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tJoin.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tMap/functions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tMerge.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/components/user.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/conf.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/categories.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/NextTask.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/download.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/log.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/task.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/events/manager.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/exceptions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/docker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/events.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/local.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/publish.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/registry.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/factory/agent.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/factory/composer.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/factory/parser.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/factory/validator.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/handlers/component.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/step.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/OverpassGeocoding.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/copy_to.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/dt.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/routing.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/engine.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/extractors/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/extractors/count.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/extractors/gravity.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/extractors/nearest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/scoring/spatial.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/search.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/skip_policy.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/config.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/custom_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/handlers/workers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/clock_event.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/models/worker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/rest.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/runner.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/files/model.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/files/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/README.md +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/changelog.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/handlers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/health.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/models.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/store.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/templates.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/maintenance/windows.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/chain.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/chainer.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/command.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/exchange.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/task.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/template/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/tests.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/types/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/constants.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/executor.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/mail.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/stats.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/uv.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask/utils/validators.py +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/requires.txt +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/pyproject.toml +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/setup.cfg +0 -0
- {flowtask-5.12.16 → flowtask-5.12.18}/setup.py +0 -0
|
@@ -126,8 +126,13 @@ class HTTPClient(DownloadFromBase, HTTPService):
|
|
|
126
126
|
self.as_dataframe = strtobool(self.as_dataframe)
|
|
127
127
|
# Data:
|
|
128
128
|
self._data: dict = kwargs.pop("data", {})
|
|
129
|
-
# Credentials:
|
|
130
|
-
|
|
129
|
+
# Credentials: left in kwargs (not popped) so HTTPService/
|
|
130
|
+
# CredentialsInterface's own __init__ (called below via
|
|
131
|
+
# DownloadFromBase/HTTPService) still sees it — popping it here
|
|
132
|
+
# caused CredentialsInterface to find nothing and reset
|
|
133
|
+
# self.credentials to None, silently dropping any auth for
|
|
134
|
+
# RESTClient/HTTPClient-based components.
|
|
135
|
+
self.credentials: dict = kwargs.get("credentials", {})
|
|
131
136
|
self.method: str = kwargs.pop("method", "get")
|
|
132
137
|
# calling parents
|
|
133
138
|
DownloadFromBase.__init__(
|
|
@@ -0,0 +1,489 @@
|
|
|
1
|
+
"""ParrotAgent — invoke any ai-parrot agent method from a FlowTask YAML step.
|
|
2
|
+
|
|
3
|
+
Every parrot integration in FlowTask so far is a bespoke component with the
|
|
4
|
+
agent class and the invoked method hardcoded: ``NextStopAgent`` always calls
|
|
5
|
+
``NextStop.report()``, ``PodcastMaker`` always calls
|
|
6
|
+
``BasicAgent.speech_report()``, ``ProductReportBot`` always runs a fixed
|
|
7
|
+
PDF/PPT/PODCAST flow. Using a plugin agent from ``PLUGINS_DIR/agents`` or
|
|
8
|
+
calling a different method meant writing a new component.
|
|
9
|
+
|
|
10
|
+
``ParrotAgent`` is that generalisation: the agent class, the method, its static
|
|
11
|
+
and per-row arguments and the delivery of the results all come from YAML.
|
|
12
|
+
"""
|
|
13
|
+
import asyncio
|
|
14
|
+
import json
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
from typing import Any, Dict, List, Optional
|
|
17
|
+
|
|
18
|
+
import pandas as pd
|
|
19
|
+
|
|
20
|
+
from parrot.bots.agent import BasicAgent # verified: flowtask/interfaces/parrot/agent.py:16
|
|
21
|
+
from parrot.tools.abstract import AbstractTool # verified: flowtask/interfaces/parrot/agent.py:18
|
|
22
|
+
|
|
23
|
+
from ..exceptions import ComponentError, ConfigError, DataNotFound
|
|
24
|
+
from ..interfaces.flow import FlowComponent
|
|
25
|
+
from ..interfaces.parrot import AgentBase, ParrotAgentConfigMixin
|
|
26
|
+
from ..interfaces.parrot.config import SafeDict
|
|
27
|
+
|
|
28
|
+
#: Accepted values of the ``on_error`` parameter.
|
|
29
|
+
ON_ERROR_MODES = ("raise", "skip", "store")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ParrotAgent(ParrotAgentConfigMixin, AgentBase, FlowComponent):
|
|
33
|
+
"""ParrotAgent
|
|
34
|
+
|
|
35
|
+
Overview:
|
|
36
|
+
Invoke any public method of any ``BasicAgent`` subclass from YAML, once
|
|
37
|
+
per input row or once when there is no input, and optionally deliver the
|
|
38
|
+
results by email, Telegram or MS Teams.
|
|
39
|
+
|
|
40
|
+
.. table:: Properties
|
|
41
|
+
:widths: auto
|
|
42
|
+
|
|
43
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
44
|
+
| Name | Required | Type | Description |
|
|
45
|
+
+====================+==========+===========+===============================================================+
|
|
46
|
+
| agent_class | No | str | Dotted path of the agent (``module.Class`` or ``module:Class``|
|
|
47
|
+
| | | | ). Plugin agents in ``PLUGINS_DIR/agents`` also resolve under |
|
|
48
|
+
| | | | the ``agents.`` prefix. Defaults to ``BasicAgent``. |
|
|
49
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
50
|
+
| agent_name | No | str | Display name given to the agent. |
|
|
51
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
52
|
+
| agent_id | No | str | Agent identifier used for prompts and generated files. |
|
|
53
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
54
|
+
| agent_kwargs | No | dict | Extra keyword arguments passed to the agent constructor. |
|
|
55
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
56
|
+
| method | Yes | str | Public method to invoke on the agent. |
|
|
57
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
58
|
+
| method_kwargs | No | dict | Static keyword arguments for every call. |
|
|
59
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
60
|
+
| row_kwargs | No | list/dict | ``{argument: column}`` mapping, or a list when both names |
|
|
61
|
+
| | | | match. Values come from the input DataFrame row. |
|
|
62
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
63
|
+
| prompt_file | No | str | Prompt read from ``<taskstore>/<program>/prompts/``, formatted|
|
|
64
|
+
| | | | with the row and passed as ``prompt_argument``. |
|
|
65
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
66
|
+
| prompt_argument | No | str | Argument receiving the prompt. Default ``question``. |
|
|
67
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
68
|
+
| output_column | No | str | Column receiving the serialised result. Default ``result``. |
|
|
69
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
70
|
+
| on_error | No | str | ``raise`` | ``skip`` | ``store``. Default ``store``. |
|
|
71
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
72
|
+
| llm_config | No | dict | Provider, model and tuning kwargs for the agent constructor. |
|
|
73
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
74
|
+
| podcast | No | dict | Speakers, lengths and output directories for ``speech_report``|
|
|
75
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
76
|
+
| notification | No | dict | Delivery of the results (email / telegram / teams). |
|
|
77
|
+
+--------------------+----------+-----------+---------------------------------------------------------------+
|
|
78
|
+
|
|
79
|
+
Return the output of the agent method in ``output_column``, alongside every
|
|
80
|
+
column of the input DataFrame.
|
|
81
|
+
|
|
82
|
+
:consumes: any
|
|
83
|
+
:produces: dataframe
|
|
84
|
+
|
|
85
|
+
Notes:
|
|
86
|
+
Per-row notifications are sent while the task is still running, so a
|
|
87
|
+
re-run of the task re-sends them.
|
|
88
|
+
|
|
89
|
+
MS Teams credentials are global (``TEAMS_NOTIFY_*``); a missing value
|
|
90
|
+
produces an error outcome per channel, not a configuration error.
|
|
91
|
+
|
|
92
|
+
Example:
|
|
93
|
+
|
|
94
|
+
.. code-block:: yaml
|
|
95
|
+
|
|
96
|
+
ParrotAgent:
|
|
97
|
+
agent_class: agents.epson_product.EpsonProductReport
|
|
98
|
+
method: speech_report
|
|
99
|
+
row_kwargs: {report: transcript}
|
|
100
|
+
podcast:
|
|
101
|
+
speech_length: 24
|
|
102
|
+
num_speakers: 2
|
|
103
|
+
output_directory: outputs/podcasts
|
|
104
|
+
llm_config:
|
|
105
|
+
llm: google
|
|
106
|
+
model: gemini-2.5-flash
|
|
107
|
+
"""
|
|
108
|
+
|
|
109
|
+
_agent_name: str = "ParrotAgent" # verified: flowtask/interfaces/parrot/agent.py:28
|
|
110
|
+
agent_id: str = "parrot_agent" # verified: flowtask/interfaces/parrot/agent.py:29
|
|
111
|
+
_agent_class: type = BasicAgent # verified: flowtask/interfaces/parrot/agent.py:30
|
|
112
|
+
|
|
113
|
+
def __init__(self, loop=None, job=None, stat=None, **kwargs: Any) -> None:
|
|
114
|
+
self.method: Optional[str] = kwargs.get("method")
|
|
115
|
+
self.method_kwargs: Dict[str, Any] = dict(kwargs.get("method_kwargs") or {})
|
|
116
|
+
# NOTE: stored private on purpose. FlowComponent re-applies the raw YAML
|
|
117
|
+
# kwargs as attributes after super().__init__(), so a public
|
|
118
|
+
# `self._row_kwargs` would be silently reverted to the unnormalised value
|
|
119
|
+
# (spec §7, "store config under names that do not collide").
|
|
120
|
+
self._row_kwargs: Dict[str, str] = self._normalise_row_kwargs(kwargs.get("row_kwargs"))
|
|
121
|
+
self.prompt_file: Optional[str] = kwargs.get("prompt_file")
|
|
122
|
+
self.prompt_argument: str = kwargs.get("prompt_argument", "question")
|
|
123
|
+
self.output_column: str = kwargs.get("output_column", "result")
|
|
124
|
+
self.on_error: str = kwargs.get("on_error", "store")
|
|
125
|
+
|
|
126
|
+
# Validate here rather than at the first row: a typo must not surface
|
|
127
|
+
# only after an LLM call has already been paid for.
|
|
128
|
+
if not self.method or not isinstance(self.method, str):
|
|
129
|
+
raise ConfigError("ParrotAgent: 'method' is required and must be a string")
|
|
130
|
+
if self.method.startswith("_"):
|
|
131
|
+
raise ConfigError(
|
|
132
|
+
f"ParrotAgent: 'method' cannot be a private attribute, got '{self.method}'"
|
|
133
|
+
)
|
|
134
|
+
if self.on_error not in ON_ERROR_MODES:
|
|
135
|
+
raise ConfigError(
|
|
136
|
+
f"ParrotAgent: on_error must be one of {ON_ERROR_MODES}, got '{self.on_error}'"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# AgentBase.start() needs a destination (agent.py:163-167); reuse the
|
|
140
|
+
# podcast output directory when one is declared so the YAML only has to
|
|
141
|
+
# name a path once. An explicit `destination` still wins.
|
|
142
|
+
podcast_output = (kwargs.get("podcast") or {}).get("output_directory")
|
|
143
|
+
if podcast_output and "destination" not in kwargs:
|
|
144
|
+
self.destination = podcast_output
|
|
145
|
+
|
|
146
|
+
self._resolved_prompt: Optional[str] = None
|
|
147
|
+
super().__init__(loop=loop, job=job, stat=stat, **kwargs)
|
|
148
|
+
|
|
149
|
+
@staticmethod
|
|
150
|
+
def _normalise_row_kwargs(value: Any) -> Dict[str, str]:
|
|
151
|
+
"""Accept either ``[col, ...]`` or ``{argument: column}``."""
|
|
152
|
+
if not value:
|
|
153
|
+
return {}
|
|
154
|
+
if isinstance(value, dict):
|
|
155
|
+
return {str(k): str(v) for k, v in value.items()}
|
|
156
|
+
if isinstance(value, (list, tuple)):
|
|
157
|
+
return {str(item): str(item) for item in value}
|
|
158
|
+
raise ConfigError(
|
|
159
|
+
f"ParrotAgent: row_kwargs must be a list or a mapping, got {type(value).__name__}"
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
def _define_tools(self, base_dir: Path) -> List[AbstractTool]:
|
|
163
|
+
"""Return an empty list — agents declare their own tools."""
|
|
164
|
+
return []
|
|
165
|
+
|
|
166
|
+
async def create_agent(
|
|
167
|
+
self,
|
|
168
|
+
llm: Any = None,
|
|
169
|
+
model: str = None,
|
|
170
|
+
tools: Optional[List[Any]] = None,
|
|
171
|
+
backstory: Optional[str] = None,
|
|
172
|
+
) -> BasicAgent:
|
|
173
|
+
"""Instantiate the configured agent class with full constructor kwargs.
|
|
174
|
+
|
|
175
|
+
Overrides ``AgentBase.create_agent`` (agent.py:114), which passes
|
|
176
|
+
neither ``agent_id`` nor ``use_llm`` nor the tuning kwargs. Parrot
|
|
177
|
+
resolves ``temperature``/``max_tokens``/``top_p``/``top_k`` once in
|
|
178
|
+
``Chatbot.__init__`` (abstract.py:507-520), so they only take effect
|
|
179
|
+
when they arrive as constructor arguments.
|
|
180
|
+
"""
|
|
181
|
+
agent_cls = self.resolve_agent_class(self._agent_class)
|
|
182
|
+
agent_kwargs = self.agent_constructor_kwargs(
|
|
183
|
+
name=self._agent_name,
|
|
184
|
+
agent_id=self.agent_id,
|
|
185
|
+
backstory=backstory or self._backstory,
|
|
186
|
+
)
|
|
187
|
+
try:
|
|
188
|
+
agent = agent_cls(**agent_kwargs)
|
|
189
|
+
except Exception as exc:
|
|
190
|
+
raise ComponentError(
|
|
191
|
+
f"ParrotAgent: cannot build {agent_cls.__name__}: {exc}"
|
|
192
|
+
) from exc
|
|
193
|
+
agent.set_response(self._agent_response) # verified: parrot/bots/agent.py:416
|
|
194
|
+
self.apply_podcast_config(agent)
|
|
195
|
+
try:
|
|
196
|
+
await agent.configure() # verified: parrot/bots/agent.py:154
|
|
197
|
+
except Exception as exc:
|
|
198
|
+
raise ComponentError(
|
|
199
|
+
f"ParrotAgent: cannot configure {agent_cls.__name__}: {exc}"
|
|
200
|
+
) from exc
|
|
201
|
+
self._agent = agent
|
|
202
|
+
self.logger.info(
|
|
203
|
+
"ParrotAgent: using %s.%s", agent_cls.__module__, agent_cls.__name__
|
|
204
|
+
)
|
|
205
|
+
return agent
|
|
206
|
+
|
|
207
|
+
async def start(self, **kwargs: Any) -> bool:
|
|
208
|
+
"""Bind the input, build the agent and validate everything callable.
|
|
209
|
+
|
|
210
|
+
Raises:
|
|
211
|
+
DataNotFound: a ``row_kwargs`` column is missing from the input.
|
|
212
|
+
ConfigError: the configured method does not exist or is not callable.
|
|
213
|
+
"""
|
|
214
|
+
if self.previous:
|
|
215
|
+
self.data = self.input
|
|
216
|
+
|
|
217
|
+
has_input = isinstance(self.data, pd.DataFrame)
|
|
218
|
+
if has_input and self._row_kwargs:
|
|
219
|
+
missing = [c for c in self._row_kwargs.values() if c not in self.data.columns]
|
|
220
|
+
if missing:
|
|
221
|
+
raise DataNotFound(
|
|
222
|
+
f"ParrotAgent: row_kwargs column(s) {missing} not found. "
|
|
223
|
+
f"Available: {list(self.data.columns)}"
|
|
224
|
+
)
|
|
225
|
+
if not has_input and self._row_kwargs:
|
|
226
|
+
raise ConfigError(
|
|
227
|
+
"ParrotAgent: row_kwargs requires an input DataFrame — connect a previous step."
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
# AgentBase.start() sets self.directory/self.destination and builds the agent
|
|
231
|
+
await super().start(**kwargs)
|
|
232
|
+
|
|
233
|
+
method = getattr(self._agent, self.method, None)
|
|
234
|
+
if method is None or not callable(method):
|
|
235
|
+
raise ConfigError(
|
|
236
|
+
f"ParrotAgent: agent {type(self._agent).__name__} has no callable "
|
|
237
|
+
f"method '{self.method}'"
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
if self.prompt_file:
|
|
241
|
+
self._resolved_prompt = self._load_prompt(self.prompt_file)
|
|
242
|
+
|
|
243
|
+
if self.notification_config is not None:
|
|
244
|
+
# Resolve the secret-shaped fields once. Row placeholders such as
|
|
245
|
+
# {model} are deliberately left alone until send time.
|
|
246
|
+
self.resolve_notification_secrets(self.mask_replacement_recursively)
|
|
247
|
+
self.load_card_templates(Path(self.directory) / "templates")
|
|
248
|
+
self._warn_on_dead_links()
|
|
249
|
+
|
|
250
|
+
return True
|
|
251
|
+
|
|
252
|
+
def _warn_on_dead_links(self) -> None:
|
|
253
|
+
"""Warn when a card links to a result URL that cannot be built.
|
|
254
|
+
|
|
255
|
+
A Teams Adaptive Card cannot carry an attachment, so a podcast is only
|
|
256
|
+
playable from the card through an HTTP link. Without ``url_prefix`` the
|
|
257
|
+
``{<column>_url}`` placeholder survives verbatim and the action renders
|
|
258
|
+
a dead link — silently, which is the worst outcome.
|
|
259
|
+
"""
|
|
260
|
+
config = self.notification_config
|
|
261
|
+
if config is None or config.url_prefix:
|
|
262
|
+
return
|
|
263
|
+
for channel in config.channels:
|
|
264
|
+
if channel.card is None:
|
|
265
|
+
continue
|
|
266
|
+
if "_url}" in json.dumps(channel.card.model_dump(), default=str):
|
|
267
|
+
self.logger.warning(
|
|
268
|
+
"ParrotAgent: a %s card references a result URL but "
|
|
269
|
+
"notification.url_prefix is not set — the link will not resolve.",
|
|
270
|
+
channel.provider,
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
def _load_prompt(self, prompt_file: str) -> str:
|
|
274
|
+
"""Read a prompt from ``<taskstore>/<program>/prompts/``.
|
|
275
|
+
|
|
276
|
+
``BasicAgent.open_prompt`` reads ``AGENTS_DIR/<agent_id>/prompts``
|
|
277
|
+
instead, which is not where a task keeps its own prompts.
|
|
278
|
+
"""
|
|
279
|
+
path = Path(self.directory) / "prompts" / prompt_file
|
|
280
|
+
try:
|
|
281
|
+
content = path.read_text(encoding="utf-8")
|
|
282
|
+
except FileNotFoundError as exc:
|
|
283
|
+
raise ConfigError(
|
|
284
|
+
f"ParrotAgent: prompt_file '{prompt_file}' not found at {path}"
|
|
285
|
+
) from exc
|
|
286
|
+
self.logger.debug("ParrotAgent: loaded prompt from %s", path)
|
|
287
|
+
return content
|
|
288
|
+
|
|
289
|
+
@staticmethod
|
|
290
|
+
def _serialise(result: Any) -> Any:
|
|
291
|
+
"""Reduce an agent result to something a DataFrame cell can hold."""
|
|
292
|
+
if result is None:
|
|
293
|
+
return None
|
|
294
|
+
if hasattr(result, "model_dump"):
|
|
295
|
+
return result.model_dump(mode="json")
|
|
296
|
+
if isinstance(result, dict):
|
|
297
|
+
return result
|
|
298
|
+
if hasattr(result, "output"):
|
|
299
|
+
return result.output
|
|
300
|
+
if isinstance(result, (str, int, float, bool)):
|
|
301
|
+
return result
|
|
302
|
+
return str(result)
|
|
303
|
+
|
|
304
|
+
def _build_call_kwargs(self, row: Dict[str, Any]) -> Dict[str, Any]:
|
|
305
|
+
"""Merge the call arguments, lowest precedence first."""
|
|
306
|
+
call_kwargs: Dict[str, Any] = dict(self.method_kwargs)
|
|
307
|
+
if self.method == "speech_report":
|
|
308
|
+
# Only speech_report understands these; passing them to an arbitrary
|
|
309
|
+
# method would be a TypeError.
|
|
310
|
+
call_kwargs.update(self.speech_report_kwargs(base_dir=Path(self.directory)))
|
|
311
|
+
for argument, column in self._row_kwargs.items():
|
|
312
|
+
call_kwargs[argument] = row.get(column)
|
|
313
|
+
if self._resolved_prompt is not None:
|
|
314
|
+
call_kwargs[self.prompt_argument] = self._resolved_prompt.format_map(SafeDict(**row))
|
|
315
|
+
return call_kwargs
|
|
316
|
+
|
|
317
|
+
async def _invoke(self, row: Dict[str, Any]) -> Any:
|
|
318
|
+
"""Call the agent method once, awaiting it when it is a coroutine."""
|
|
319
|
+
method = getattr(self._agent, self.method)
|
|
320
|
+
returned = method(**self._build_call_kwargs(row))
|
|
321
|
+
if asyncio.iscoroutine(returned):
|
|
322
|
+
returned = await returned
|
|
323
|
+
return returned
|
|
324
|
+
|
|
325
|
+
async def run(self) -> pd.DataFrame:
|
|
326
|
+
"""Invoke the agent once per input row, or once when there is no input.
|
|
327
|
+
|
|
328
|
+
Returns the input DataFrame with ``output_column`` appended — every
|
|
329
|
+
input column is preserved so downstream steps (``TableOutput``,
|
|
330
|
+
``CopyToPg``, ``SendNotify``) still see what they were given.
|
|
331
|
+
"""
|
|
332
|
+
has_input = isinstance(self.data, pd.DataFrame)
|
|
333
|
+
rows: List[Dict[str, Any]] = (
|
|
334
|
+
self.data.to_dict("records") if has_input else [{}]
|
|
335
|
+
)
|
|
336
|
+
|
|
337
|
+
keep: List[int] = []
|
|
338
|
+
results: List[Any] = []
|
|
339
|
+
errors: List[Optional[str]] = []
|
|
340
|
+
notifications: List[Optional[str]] = []
|
|
341
|
+
success_count = 0
|
|
342
|
+
|
|
343
|
+
for index, row in enumerate(rows):
|
|
344
|
+
outcome_json: Optional[str] = None
|
|
345
|
+
try:
|
|
346
|
+
returned = await self._invoke(row)
|
|
347
|
+
except Exception as exc:
|
|
348
|
+
self.logger.error("ParrotAgent: row %s failed: %s", index, exc)
|
|
349
|
+
if self.on_error == "raise":
|
|
350
|
+
raise ComponentError(
|
|
351
|
+
f"ParrotAgent: row {index} failed calling '{self.method}': {exc}"
|
|
352
|
+
) from exc
|
|
353
|
+
if self.on_error == "skip":
|
|
354
|
+
continue
|
|
355
|
+
keep.append(index)
|
|
356
|
+
results.append(None)
|
|
357
|
+
errors.append(str(exc))
|
|
358
|
+
notifications.append(await self._notify_row(row, None, str(exc)))
|
|
359
|
+
continue
|
|
360
|
+
|
|
361
|
+
success_count += 1
|
|
362
|
+
serialised = self._serialise(returned)
|
|
363
|
+
keep.append(index)
|
|
364
|
+
results.append(serialised)
|
|
365
|
+
errors.append(None)
|
|
366
|
+
outcome_json = await self._notify_row(row, returned, None, serialised=serialised)
|
|
367
|
+
notifications.append(outcome_json)
|
|
368
|
+
|
|
369
|
+
df = self._assemble(has_input, rows, keep, results, errors, notifications)
|
|
370
|
+
await self._notify_summary(df, len(rows), success_count)
|
|
371
|
+
return df
|
|
372
|
+
|
|
373
|
+
def _assemble(
|
|
374
|
+
self,
|
|
375
|
+
has_input: bool,
|
|
376
|
+
rows: List[Dict[str, Any]],
|
|
377
|
+
keep: List[int],
|
|
378
|
+
results: List[Any],
|
|
379
|
+
errors: List[Optional[str]],
|
|
380
|
+
notifications: List[Optional[str]],
|
|
381
|
+
) -> pd.DataFrame:
|
|
382
|
+
"""Build the output frame, preserving every input column."""
|
|
383
|
+
if has_input:
|
|
384
|
+
df = self.data.iloc[keep].copy() if len(keep) != len(rows) else self.data.copy()
|
|
385
|
+
else:
|
|
386
|
+
df = pd.DataFrame(index=range(len(keep)))
|
|
387
|
+
df[self.output_column] = results
|
|
388
|
+
if self.on_error == "store":
|
|
389
|
+
df[f"{self.output_column}_error"] = errors
|
|
390
|
+
if self.notification_config is not None and self.notification_config.mode == "per_row":
|
|
391
|
+
df[f"{self.output_column}_notifications"] = notifications
|
|
392
|
+
self._result = df
|
|
393
|
+
return df
|
|
394
|
+
|
|
395
|
+
def _base_context(self) -> Dict[str, Any]:
|
|
396
|
+
"""Task-level values every notification context starts from."""
|
|
397
|
+
return {
|
|
398
|
+
**(getattr(self, "_variables", None) or {}),
|
|
399
|
+
"task": self.StepName or "",
|
|
400
|
+
"program": self._program,
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
async def _notify_row(
|
|
404
|
+
self,
|
|
405
|
+
row: Dict[str, Any],
|
|
406
|
+
result: Any,
|
|
407
|
+
error: Optional[str],
|
|
408
|
+
serialised: Any = None,
|
|
409
|
+
) -> Optional[str]:
|
|
410
|
+
"""Deliver one row's result, returning the outcomes as JSON.
|
|
411
|
+
|
|
412
|
+
Context precedence, lowest first: task variables, the row's columns,
|
|
413
|
+
the serialised result's fields, then ``result``/``error``.
|
|
414
|
+
"""
|
|
415
|
+
config = self.notification_config
|
|
416
|
+
if config is None or config.mode != "per_row":
|
|
417
|
+
return None
|
|
418
|
+
if not self.should_notify(error is None):
|
|
419
|
+
return None
|
|
420
|
+
|
|
421
|
+
context = self._base_context()
|
|
422
|
+
context.update(row)
|
|
423
|
+
if isinstance(serialised, dict):
|
|
424
|
+
context.update(serialised)
|
|
425
|
+
context["result"] = serialised if isinstance(serialised, str) else ""
|
|
426
|
+
context["error"] = error or ""
|
|
427
|
+
|
|
428
|
+
outcomes = await self.send_configured_notifications(self._agent, context, result)
|
|
429
|
+
return json.dumps([outcome.model_dump() for outcome in outcomes])
|
|
430
|
+
|
|
431
|
+
async def _notify_summary(self, df: pd.DataFrame, count: int, success_count: int) -> None:
|
|
432
|
+
"""Deliver a single notification describing the whole run."""
|
|
433
|
+
config = self.notification_config
|
|
434
|
+
if config is None or config.mode != "summary":
|
|
435
|
+
return
|
|
436
|
+
if not self.should_notify(success_count > 0):
|
|
437
|
+
return
|
|
438
|
+
|
|
439
|
+
context = self._base_context()
|
|
440
|
+
context.update(
|
|
441
|
+
{
|
|
442
|
+
"count": count,
|
|
443
|
+
"success_count": success_count,
|
|
444
|
+
"error_count": count - success_count,
|
|
445
|
+
"results": self._results_table(df, config.summary_max_rows),
|
|
446
|
+
"result": "",
|
|
447
|
+
"error": "",
|
|
448
|
+
}
|
|
449
|
+
)
|
|
450
|
+
# Attachment columns hold one path per row; a summary attaches them all,
|
|
451
|
+
# capped so a large run cannot mail hundreds of files. A dict result
|
|
452
|
+
# keeps its fields inside `output_column` rather than as columns of
|
|
453
|
+
# their own, so look there too — otherwise `attach_columns` would work
|
|
454
|
+
# per row (where the result is merged into the context) but not here.
|
|
455
|
+
for column in {c for ch in config.channels for c in ch.attach_columns}:
|
|
456
|
+
values = self._collect_paths(df, column)
|
|
457
|
+
if values:
|
|
458
|
+
context[column] = values[: config.max_attachments]
|
|
459
|
+
|
|
460
|
+
outcomes = await self.send_configured_notifications(self._agent, context)
|
|
461
|
+
self.logger.info(
|
|
462
|
+
"ParrotAgent: summary notification sent — %s",
|
|
463
|
+
", ".join(f"{o.provider}={o.status}" for o in outcomes) or "no channels",
|
|
464
|
+
)
|
|
465
|
+
|
|
466
|
+
def _collect_paths(self, df: pd.DataFrame, column: str) -> List[Any]:
|
|
467
|
+
"""Gather one attachment column's values across every row."""
|
|
468
|
+
if column in df.columns:
|
|
469
|
+
return [value for value in df[column].tolist() if value]
|
|
470
|
+
values: List[Any] = []
|
|
471
|
+
for item in df.get(self.output_column, pd.Series(dtype=object)).tolist():
|
|
472
|
+
if isinstance(item, dict) and item.get(column):
|
|
473
|
+
values.append(item[column])
|
|
474
|
+
return values
|
|
475
|
+
|
|
476
|
+
@staticmethod
|
|
477
|
+
def _results_table(df: pd.DataFrame, max_rows: int) -> str:
|
|
478
|
+
"""Render the first `max_rows` rows as a markdown table."""
|
|
479
|
+
if df.empty:
|
|
480
|
+
return "_no rows_"
|
|
481
|
+
try:
|
|
482
|
+
return df.head(max_rows).to_markdown(index=False)
|
|
483
|
+
except ImportError:
|
|
484
|
+
# to_markdown needs `tabulate`; a summary must not fail over formatting.
|
|
485
|
+
return df.head(max_rows).to_string(index=False)
|
|
486
|
+
|
|
487
|
+
async def close(self) -> None:
|
|
488
|
+
"""Release the agent context if one was entered."""
|
|
489
|
+
self._agent = None
|