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