flowtask 5.12.2__tar.gz → 5.12.4__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.2 → flowtask-5.12.4}/PKG-INFO +5 -3
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CallAnalysis.py +83 -1
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWithBase.py +7 -9
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWithPandas.py +15 -9
- flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/__init__.py +5 -0
- flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/loader.py +439 -0
- flowtask-5.12.4/flowtask/components/ParrotKnowledgeBuilder/payload.py +26 -0
- flowtask-5.12.4/flowtask/components/SearchQuery.py +204 -0
- flowtask-5.12.4/flowtask/components/tFlatten.py +141 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/categories.json +1 -0
- flowtask-5.12.4/flowtask/documentation/generated/components/CreateReport.doc.json +49 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PandasToFile.doc.json +4 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/RESTClient.doc.json +4 -0
- flowtask-5.12.4/flowtask/documentation/generated/components/SearchQuery.doc.json +53 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/index.json +403 -508
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/notify_event.py +8 -1
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/local.py +9 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/__init__.py +4 -0
- flowtask-5.12.4/flowtask/interfaces/search.py +589 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +2 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +2 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_blocks.py +5 -1
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/clock_event.py +5 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/runner.py +8 -6
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/version.py +1 -1
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/PKG-INFO +5 -3
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/SOURCES.txt +8 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/requires.txt +4 -2
- {flowtask-5.12.2 → flowtask-5.12.4}/pyproject.toml +29 -6
- {flowtask-5.12.2 → flowtask-5.12.4}/CONTRIBUTING.md +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/INSTALL +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/LICENSE +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/MANIFEST.in +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/README.md +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/__main__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/check.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ATT.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Azure.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/BestBuy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToPg.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Costco.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DateList.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadFromSmartsheet.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileList.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GenData.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/HTTPClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IF.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Loop.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MarketClustering.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenStreetMap.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ProductReportBot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QS.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RESTClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SchedulingVisits.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/component.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Staples.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Switch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TableSchema.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Target.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/TransformRows.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransformRows/functions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Wait.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workday/workday.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/flow.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/google.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/group.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/py.typed +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tJoin.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/functions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tMerge.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/components/user.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/conf.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/download.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/log.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/task.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/teams.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/events/manager.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/exceptions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/docker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/events.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/publish.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/registry.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/agent.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/composer.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/parser.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/factory/validator.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/handlers/component.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/step.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/mail.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/sharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/AzureGraph.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/O365Client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_to.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/dt.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/config.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/custom_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/handlers/workers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/models/worker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/zammad.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/model.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/files/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/command.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/task.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/template/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/tests.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/types/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/constants.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/executor.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/mail.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/msgraph_patch.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/stats.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/uv.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask/utils/validators.py +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/setup.cfg +0 -0
- {flowtask-5.12.2 → flowtask-5.12.4}/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.4
|
|
4
4
|
Summary: Framework for Task orchestration
|
|
5
5
|
Author-email: Jesus Lara <jesuslarag@gmail.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -37,7 +37,7 @@ Requires-Dist: selenium>=4.35.0
|
|
|
37
37
|
Requires-Dist: snapshot-selenium==0.0.2
|
|
38
38
|
Requires-Dist: httpx[http2,socks]>=0.26.0
|
|
39
39
|
Requires-Dist: urllib3[socks]>=2.3.0
|
|
40
|
-
Requires-Dist: requests
|
|
40
|
+
Requires-Dist: requests<2.34,>=2.33.0
|
|
41
41
|
Requires-Dist: h2>=4.2.0
|
|
42
42
|
Requires-Dist: blinker>=1.9.0
|
|
43
43
|
Requires-Dist: webdriver-manager==4.0.2
|
|
@@ -127,10 +127,12 @@ Requires-Dist: kr8s>=0.16.0; extra == "k8s"
|
|
|
127
127
|
Provides-Extra: git
|
|
128
128
|
Requires-Dist: gitpython>=3.1.50; extra == "git"
|
|
129
129
|
Provides-Extra: ai
|
|
130
|
-
Requires-Dist: ai-parrot[agents,images,
|
|
130
|
+
Requires-Dist: ai-parrot[agents,graphindex,images,llms,retrieval]>=0.20.4; extra == "ai"
|
|
131
131
|
Requires-Dist: ai-parrot-loaders[audio,document,ebook,ml,pdf,scraping,video,web,youtube]>=0.1.0; extra == "ai"
|
|
132
132
|
Requires-Dist: ai-parrot-tools[analysis,arxiv,aws,codeinterpreter,db,docker,excel,finance,flowtask,git,google,jira,messaging,pdf,pulumi,sandbox,scraping,sitesearch,slack,weather,wikipedia]>=0.1.0; extra == "ai"
|
|
133
133
|
Requires-Dist: ai-parrot-pipelines>=0.1.0; extra == "ai"
|
|
134
|
+
Requires-Dist: ai-parrot-server[all]>=0.1.0; extra == "ai"
|
|
135
|
+
Requires-Dist: ai-parrot-integrations[all]>=0.0.17; extra == "ai"
|
|
134
136
|
Provides-Extra: dev
|
|
135
137
|
Requires-Dist: pytest>=5.4.0; extra == "dev"
|
|
136
138
|
Requires-Dist: coverage; extra == "dev"
|
|
@@ -2,7 +2,7 @@ from collections.abc import Callable
|
|
|
2
2
|
import asyncio
|
|
3
3
|
import pandas as pd
|
|
4
4
|
import orjson
|
|
5
|
-
from ..exceptions import DataNotFound
|
|
5
|
+
from ..exceptions import DataNotFound, ComponentError
|
|
6
6
|
from ..interfaces.ParrotBot import ParrotBot
|
|
7
7
|
from ..interfaces.flow import FlowComponent
|
|
8
8
|
|
|
@@ -236,6 +236,49 @@ class CallAnalysis(ParrotBot, FlowComponent):
|
|
|
236
236
|
self.skip_existing: bool = kwargs.get('skip_existing', True)
|
|
237
237
|
self.lookup_schema_column: str = kwargs.get('schema_column', 'program_slug')
|
|
238
238
|
|
|
239
|
+
# Credentials/auth abort state (set per bot_evaluation run).
|
|
240
|
+
# When a non-retryable credentials error is detected, _auth_error holds
|
|
241
|
+
# the offending exception and _abort_event signals every in-flight/queued
|
|
242
|
+
# task to bail out so no further API calls are attempted.
|
|
243
|
+
self._auth_error: Exception | None = None
|
|
244
|
+
self._abort_event: asyncio.Event | None = None
|
|
245
|
+
|
|
246
|
+
# Substrings that flag a non-retryable credentials/permission failure.
|
|
247
|
+
# Retrying these only wastes API quota — the key/permissions must be fixed.
|
|
248
|
+
_CREDENTIALS_ERROR_MARKERS = (
|
|
249
|
+
"PERMISSION_DENIED",
|
|
250
|
+
"API_KEY_SERVICE_BLOCKED",
|
|
251
|
+
"API_KEY_INVALID",
|
|
252
|
+
"API key not valid",
|
|
253
|
+
"API_KEY_HTTP_REFERRER_BLOCKED",
|
|
254
|
+
"UNAUTHENTICATED",
|
|
255
|
+
"CONSUMER_INVALID",
|
|
256
|
+
)
|
|
257
|
+
|
|
258
|
+
def _is_credentials_error(self, exc: Exception) -> bool:
|
|
259
|
+
"""Return True if ``exc`` is a non-retryable credentials/auth failure.
|
|
260
|
+
|
|
261
|
+
Detects the Google GenAI ``403 PERMISSION_DENIED`` /
|
|
262
|
+
``API_KEY_SERVICE_BLOCKED`` family (and equivalent auth errors) so the
|
|
263
|
+
batch can fail fast instead of retrying a blocked API key.
|
|
264
|
+
|
|
265
|
+
Args:
|
|
266
|
+
exc: The exception raised by the LLM provider call.
|
|
267
|
+
|
|
268
|
+
Returns:
|
|
269
|
+
bool: True when the error indicates blocked/invalid credentials.
|
|
270
|
+
"""
|
|
271
|
+
# HTTP status carried on the exception (google-genai / aiohttp styles).
|
|
272
|
+
status = (
|
|
273
|
+
getattr(exc, 'status_code', None)
|
|
274
|
+
or getattr(exc, 'code', None)
|
|
275
|
+
or getattr(exc, 'status', None)
|
|
276
|
+
)
|
|
277
|
+
if status in (401, 403):
|
|
278
|
+
return True
|
|
279
|
+
message = str(exc)
|
|
280
|
+
return any(marker in message for marker in self._CREDENTIALS_ERROR_MARKERS)
|
|
281
|
+
|
|
239
282
|
def load_from_file(
|
|
240
283
|
self,
|
|
241
284
|
df: pd.DataFrame,
|
|
@@ -651,6 +694,13 @@ class CallAnalysis(ParrotBot, FlowComponent):
|
|
|
651
694
|
"""
|
|
652
695
|
call_key = call_key or call_identifier
|
|
653
696
|
async with semaphore:
|
|
697
|
+
# A fatal credentials error already aborted the batch — bail out
|
|
698
|
+
# without making another doomed API call.
|
|
699
|
+
if self._abort_event is not None and self._abort_event.is_set():
|
|
700
|
+
self._logger.debug(
|
|
701
|
+
f"Skipping {call_identifier} - batch aborted due to credentials error"
|
|
702
|
+
)
|
|
703
|
+
return (call_key, None)
|
|
654
704
|
for attempt in range(self.retry_attempts):
|
|
655
705
|
try:
|
|
656
706
|
# Wait minimum interval before request to respect RPM limit
|
|
@@ -673,6 +723,23 @@ class CallAnalysis(ParrotBot, FlowComponent):
|
|
|
673
723
|
|
|
674
724
|
|
|
675
725
|
except Exception as e:
|
|
726
|
+
# Credentials / permission errors are NOT retryable: retrying
|
|
727
|
+
# only burns API quota against a blocked key. Flag the batch
|
|
728
|
+
# for abort so no further calls are attempted and surface it
|
|
729
|
+
# clearly (distinct from DataNotFound) in bot_evaluation.
|
|
730
|
+
if self._is_credentials_error(e):
|
|
731
|
+
if self._auth_error is None:
|
|
732
|
+
self._auth_error = e
|
|
733
|
+
self._logger.error(
|
|
734
|
+
f"🔑 Credentials/permission error from LLM provider while "
|
|
735
|
+
f"analyzing {call_identifier}: {e}. Aborting batch — the API "
|
|
736
|
+
f"key is blocked/invalid or lacks permission. No further "
|
|
737
|
+
f"calls will be attempted."
|
|
738
|
+
)
|
|
739
|
+
if self._abort_event is not None:
|
|
740
|
+
self._abort_event.set()
|
|
741
|
+
return (call_key, None)
|
|
742
|
+
|
|
676
743
|
if attempt < self.retry_attempts - 1:
|
|
677
744
|
# Calculate exponential backoff wait time
|
|
678
745
|
wait_time = self.retry_backoff_factor ** attempt
|
|
@@ -704,6 +771,10 @@ class CallAnalysis(ParrotBot, FlowComponent):
|
|
|
704
771
|
A Pandas Dataframe with the Call Analysis results.
|
|
705
772
|
|
|
706
773
|
"""
|
|
774
|
+
# Reset credentials-abort state for this run.
|
|
775
|
+
self._auth_error = None
|
|
776
|
+
self._abort_event = asyncio.Event()
|
|
777
|
+
|
|
707
778
|
# Determine if we should group the data or process row by row
|
|
708
779
|
should_group = self.group_analysis
|
|
709
780
|
schema_col_present = (
|
|
@@ -944,6 +1015,17 @@ class CallAnalysis(ParrotBot, FlowComponent):
|
|
|
944
1015
|
# Add the analysis results as a new column
|
|
945
1016
|
result_df[self.output_column] = analysis_results
|
|
946
1017
|
|
|
1018
|
+
# If a fatal credentials/permission error aborted the batch, surface it
|
|
1019
|
+
# explicitly. Do NOT let it fall through to the DataNotFound below — that
|
|
1020
|
+
# status (204, "nothing to analyze") would mask a blocked/invalid API key.
|
|
1021
|
+
if self._auth_error is not None:
|
|
1022
|
+
raise ComponentError(
|
|
1023
|
+
f"{self._bot_name}: aborted analysis due to a credentials/permission "
|
|
1024
|
+
f"error from the LLM provider ({self._auth_error}). The API key is "
|
|
1025
|
+
f"blocked, invalid, or lacks permission to call the model. Fix the "
|
|
1026
|
+
f"credentials and retry — no further API calls were attempted."
|
|
1027
|
+
)
|
|
1028
|
+
|
|
947
1029
|
# Clean up JSON formatting in the output column if present
|
|
948
1030
|
# Only clean strings, preserve dicts/lists that are already valid JSON objects
|
|
949
1031
|
if self.output_column in result_df.columns and not result_df[self.output_column].isna().all():
|
|
@@ -56,15 +56,13 @@ def detect_encoding(filename, encoding: str = "utf-8"):
|
|
|
56
56
|
try:
|
|
57
57
|
result = chardet.detect(raw)
|
|
58
58
|
if result["encoding"] in ("ASCII", "ascii"):
|
|
59
|
-
#
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
output.seek(0)
|
|
67
|
-
return [output, encoding]
|
|
59
|
+
# ASCII is a strict subset of UTF-8, so the declared encoding
|
|
60
|
+
# is safe to use as-is. Do NOT slurp the whole file here: the
|
|
61
|
+
# only thing every caller consumes from this function is the
|
|
62
|
+
# encoding string (the buffer is always discarded), and reading
|
|
63
|
+
# a multi-GB file just to throw it away caused massive memory
|
|
64
|
+
# pressure / apparent hangs on large CSVs.
|
|
65
|
+
return [None, encoding]
|
|
68
66
|
else:
|
|
69
67
|
enc = result["encoding"]
|
|
70
68
|
except UnicodeDecodeError:
|
|
@@ -539,11 +539,13 @@ class OpenWithPandas(OpenWithBase):
|
|
|
539
539
|
raise ComponentError(
|
|
540
540
|
f"Error Combining Resultset Dataframes: {err}"
|
|
541
541
|
) from err
|
|
542
|
-
# When
|
|
543
|
-
#
|
|
544
|
-
#
|
|
545
|
-
#
|
|
546
|
-
|
|
542
|
+
# When is_debug is on, log the RAW read shape/columns BEFORE any
|
|
543
|
+
# post-processing (drop_empty/trim/dropna) — useful to validate which
|
|
544
|
+
# columns came in and which are all-empty (and would be dropped below
|
|
545
|
+
# by drop_empty). Gated behind the explicit is_debug YAML flag (NOT the
|
|
546
|
+
# global --debug) so normal debug runs don't flood the logs with the
|
|
547
|
+
# per-column non-null dump on every OpenWithPandas step.
|
|
548
|
+
if getattr(self, 'is_debug', False) is True:
|
|
547
549
|
try:
|
|
548
550
|
nonnull = df.notna().sum()
|
|
549
551
|
empty_cols = [c for c in df.columns if nonnull[c] == 0]
|
|
@@ -656,11 +658,15 @@ class OpenWithPandas(OpenWithBase):
|
|
|
656
658
|
self.add_metric("NUMROWS", numrows)
|
|
657
659
|
self.add_metric("OPENED_FILES", self._filenames)
|
|
658
660
|
if getattr(self, 'is_debug', False) is True:
|
|
659
|
-
|
|
661
|
+
# Do NOT render the full DataFrame (df.to_string() with no row limit
|
|
662
|
+
# materialises every row into one giant string — CPU-bound for
|
|
663
|
+
# minutes/hours on multi-GB frames, the apparent "hang"). Instead,
|
|
664
|
+
# show the shape and a single representative row: every column with
|
|
665
|
+
# its dtype and its first value.
|
|
666
|
+
self._logger.debug("DataFrame result: shape=%s", df.shape)
|
|
660
667
|
self._logger.debug("::: Column Information ===")
|
|
661
668
|
for column, t in df.dtypes.items():
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
)
|
|
669
|
+
sample = df[column].iloc[0] if len(df.index) else "<empty>"
|
|
670
|
+
self._logger.debug("%s -> %s -> %s", column, t, sample)
|
|
665
671
|
self._logger.debug("Opened File(s) with Pandas %s", self._filenames)
|
|
666
672
|
return self._result
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
"""ParrotKnowledgeBuilder — FlowComponent that builds GraphIndex/PageIndex structures."""
|
|
2
|
+
import asyncio
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from contextlib import AsyncExitStack
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Any, Optional
|
|
7
|
+
|
|
8
|
+
from ...exceptions import ComponentError, ConfigError, DataNotFound
|
|
9
|
+
from ...interfaces.flow import FlowComponent
|
|
10
|
+
|
|
11
|
+
# Reuse module-level helpers and private methods from ParrotLoader without
|
|
12
|
+
# modifying it. In Python 3, accessing a method via the class returns the
|
|
13
|
+
# underlying function whose __globals__ still live in ParrotLoader's module, so
|
|
14
|
+
# every helper they depend on (_has_glob, pd, json, …) resolves correctly.
|
|
15
|
+
from ..ParrotLoader.loader import (
|
|
16
|
+
ParrotLoader as _PL,
|
|
17
|
+
_has_glob,
|
|
18
|
+
)
|
|
19
|
+
from .payload import KnowledgeArtifact as KnowledgeArtifact # re-exported
|
|
20
|
+
|
|
21
|
+
_VALID_INDEX_TYPES = frozenset({"graphindex", "pageindex"})
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class ParrotKnowledgeBuilder(FlowComponent):
|
|
25
|
+
"""Build a GraphIndex graph or PageIndex tree from documents; emit KnowledgeArtifact.
|
|
26
|
+
|
|
27
|
+
Config keys (YAML):
|
|
28
|
+
index_type: graphindex | pageindex (required)
|
|
29
|
+
path: single file/dir/glob pattern
|
|
30
|
+
path_list: inline list or path to .txt/.json/.csv file of sources
|
|
31
|
+
path_column: column name when upstream component provides a DataFrame
|
|
32
|
+
loader: ParrotLoader class name (graphindex only)
|
|
33
|
+
tenant_id: ArangoDB tenant identifier (graphindex; default "default")
|
|
34
|
+
directory: KB storage directory under the task storage. A relative
|
|
35
|
+
path (e.g. "mi_agente/kb") resolves to
|
|
36
|
+
programs/{program}/agents/{directory}; absolute is used
|
|
37
|
+
as-is; if omitted, defaults to programs/{program}/agents.
|
|
38
|
+
Each mode writes to its own leaf so they never intermix:
|
|
39
|
+
pageindex → {directory}/pages, graphindex → {directory}/graph.
|
|
40
|
+
(index JSON + per-node markdown; graphindex section nodes
|
|
41
|
+
get a content_ref pointing at it.)
|
|
42
|
+
llm: LLM provider name (e.g. "anthropic", "google", "groq").
|
|
43
|
+
Required by pageindex; OPTIONAL for graphindex (enables
|
|
44
|
+
hierarchical section extraction + disk persistence;
|
|
45
|
+
omit for flat, in-memory extraction).
|
|
46
|
+
llm_model: model id for the adapter. If omitted, the client's own
|
|
47
|
+
default model is used (NOT the adapter's Google default).
|
|
48
|
+
llm_concurrency: max concurrent LLM calls (legacy; the PageIndexToolkit
|
|
49
|
+
manages its own concurrency).
|
|
50
|
+
with_summaries: generate section summaries via LLM (pageindex; default True)
|
|
51
|
+
fail_on_empty: raise DataNotFound when no nodes/tree extracted (default True)
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
_version = "1.0.0"
|
|
55
|
+
|
|
56
|
+
def __init__(
|
|
57
|
+
self,
|
|
58
|
+
loop: asyncio.AbstractEventLoop = None,
|
|
59
|
+
job: Callable = None,
|
|
60
|
+
stat: Callable = None,
|
|
61
|
+
**kwargs: Any,
|
|
62
|
+
) -> None:
|
|
63
|
+
"""Initialise the component from YAML config kwargs.
|
|
64
|
+
|
|
65
|
+
Args:
|
|
66
|
+
loop: optional event loop (forwarded to super).
|
|
67
|
+
job: upstream job/component (forwarded to super).
|
|
68
|
+
stat: stats callback (forwarded to super).
|
|
69
|
+
**kwargs: YAML config keys consumed here; remainder forwarded to FlowComponent.
|
|
70
|
+
"""
|
|
71
|
+
# Source resolution (mirror ParrotLoader attribute layout so rebound
|
|
72
|
+
# methods work without modification)
|
|
73
|
+
self.path: Optional[str] = kwargs.pop("path", None)
|
|
74
|
+
self._path_list: Optional[Any] = kwargs.pop("path_list", None)
|
|
75
|
+
self._path_list_format: str = str(
|
|
76
|
+
kwargs.pop("path_list_format", "auto") or "auto"
|
|
77
|
+
).lower()
|
|
78
|
+
self._path_column: Optional[str] = kwargs.pop("path_column", None)
|
|
79
|
+
self.encoding: str = kwargs.get("encoding", "utf-8")
|
|
80
|
+
|
|
81
|
+
# Mode
|
|
82
|
+
self._index_type: Optional[str] = kwargs.pop("index_type", None)
|
|
83
|
+
|
|
84
|
+
# graphindex config
|
|
85
|
+
self._loader_name: Optional[str] = kwargs.pop("loader", None)
|
|
86
|
+
self._tenant_id: str = kwargs.pop("tenant_id", "default")
|
|
87
|
+
|
|
88
|
+
# KB storage directory (both modes persist the PageIndex tree here)
|
|
89
|
+
self._directory: Optional[str] = kwargs.pop("directory", None)
|
|
90
|
+
|
|
91
|
+
# pageindex config
|
|
92
|
+
self._llm: Optional[Any] = kwargs.pop("llm", None)
|
|
93
|
+
self._llm_model: Optional[str] = kwargs.pop("llm_model", None)
|
|
94
|
+
self._llm_concurrency: int = int(kwargs.pop("llm_concurrency", 8))
|
|
95
|
+
self._with_summaries: bool = bool(kwargs.pop("with_summaries", True))
|
|
96
|
+
|
|
97
|
+
# Behaviour
|
|
98
|
+
self._fail_on_empty: bool = bool(kwargs.pop("fail_on_empty", True))
|
|
99
|
+
|
|
100
|
+
super().__init__(loop=loop, job=job, stat=stat, **kwargs)
|
|
101
|
+
|
|
102
|
+
# ------------------------------------------------------------------
|
|
103
|
+
# Reuse ParrotLoader source-resolution and LLM-building helpers.
|
|
104
|
+
# These functions' __globals__ live in ParrotLoader's module, so their
|
|
105
|
+
# module-level dependencies (_has_glob, pd, json, …) resolve correctly.
|
|
106
|
+
# ------------------------------------------------------------------
|
|
107
|
+
_build_llm_client = _PL._build_llm_client
|
|
108
|
+
_resolve_loader_class = _PL._resolve_loader_class
|
|
109
|
+
_resolve_sources = _PL._resolve_sources
|
|
110
|
+
_read_path_list_file = _PL._read_path_list_file
|
|
111
|
+
_extract_paths_from_dataframe = _PL._extract_paths_from_dataframe
|
|
112
|
+
|
|
113
|
+
def _resolve_model(self, client: Any) -> Optional[str]:
|
|
114
|
+
"""Resolve the model name to hand to ``PageIndexLLMAdapter``.
|
|
115
|
+
|
|
116
|
+
Precedence: explicit ``llm_model`` config → the client's configured
|
|
117
|
+
``model`` → the client's provider default (``_default_model``). This
|
|
118
|
+
avoids ``PageIndexLLMAdapter``'s hardcoded Google default
|
|
119
|
+
(``gemini-3.1-flash-lite-preview``) leaking onto a non-Google client
|
|
120
|
+
(e.g. Groq), which causes a 404 model_not_found.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
client: the built ``AbstractClient`` (e.g. GroqClient).
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
A provider-appropriate model name, or ``None`` to defer to the
|
|
127
|
+
adapter (only when nothing could be resolved).
|
|
128
|
+
"""
|
|
129
|
+
return (
|
|
130
|
+
self._llm_model
|
|
131
|
+
or getattr(client, "model", None)
|
|
132
|
+
or getattr(client, "_default_model", None)
|
|
133
|
+
)
|
|
134
|
+
|
|
135
|
+
def _resolve_kb_directory(self, subdir: str) -> Path:
|
|
136
|
+
"""Resolve the KB storage directory under the task storage.
|
|
137
|
+
|
|
138
|
+
Layout (per Jesús Lara): ``<task-storage-root>/{program}/agents/{directory}``,
|
|
139
|
+
with a per-mode ``subdir`` appended so the two builders never intermix in
|
|
140
|
+
the same folder:
|
|
141
|
+
|
|
142
|
+
programs/{program}/agents/{directory}/pages (pageindex)
|
|
143
|
+
programs/{program}/agents/{directory}/graph (graphindex)
|
|
144
|
+
|
|
145
|
+
- relative ``directory`` (e.g. "mi_agente/kb") → joined under
|
|
146
|
+
``programs/{program}/agents``;
|
|
147
|
+
- absolute ``directory`` → used as-is;
|
|
148
|
+
- omitted → defaults to ``programs/{program}/agents``.
|
|
149
|
+
|
|
150
|
+
The PageIndex stores auto-create the directory (``mkdir parents=True``).
|
|
151
|
+
|
|
152
|
+
Args:
|
|
153
|
+
subdir: per-mode leaf folder ("pages" or "graph").
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
Absolute :class:`~pathlib.Path` for the PageIndex ``storage_dir``.
|
|
157
|
+
"""
|
|
158
|
+
base = Path(self._taskstore.get_path()).joinpath(self._program, "agents")
|
|
159
|
+
if self._directory:
|
|
160
|
+
directory = Path(self._directory)
|
|
161
|
+
base = directory if directory.is_absolute() else base.joinpath(directory)
|
|
162
|
+
return base.joinpath(subdir)
|
|
163
|
+
|
|
164
|
+
# ------------------------------------------------------------------
|
|
165
|
+
# FlowComponent lifecycle
|
|
166
|
+
# ------------------------------------------------------------------
|
|
167
|
+
|
|
168
|
+
async def start(self, **kwargs: Any) -> None:
|
|
169
|
+
"""Validate config and resolve document sources.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
**kwargs: forwarded to FlowComponent.start().
|
|
173
|
+
|
|
174
|
+
Raises:
|
|
175
|
+
ConfigError: missing/invalid index_type or no source provided.
|
|
176
|
+
ComponentError: resolved path does not exist.
|
|
177
|
+
"""
|
|
178
|
+
await super().start(**kwargs)
|
|
179
|
+
|
|
180
|
+
# Validate index_type
|
|
181
|
+
if not self._index_type:
|
|
182
|
+
raise ConfigError(
|
|
183
|
+
"ParrotKnowledgeBuilder: 'index_type' is required. "
|
|
184
|
+
f"Supported values: {sorted(_VALID_INDEX_TYPES)}."
|
|
185
|
+
)
|
|
186
|
+
if self._index_type == "ontology":
|
|
187
|
+
raise ConfigError(
|
|
188
|
+
"ParrotKnowledgeBuilder: 'index_type: ontology' is not supported here. "
|
|
189
|
+
"Ontology is an ArangoDB persistence/schema layer — use the CopyToArango "
|
|
190
|
+
"spec for persistence instead."
|
|
191
|
+
)
|
|
192
|
+
if self._index_type not in _VALID_INDEX_TYPES:
|
|
193
|
+
raise ConfigError(
|
|
194
|
+
f"ParrotKnowledgeBuilder: unsupported index_type '{self._index_type}'. "
|
|
195
|
+
f"Supported values: {sorted(_VALID_INDEX_TYPES)}."
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
# Normalize path_list string through mask replacement
|
|
199
|
+
if isinstance(self._path_list, str):
|
|
200
|
+
self._path_list = self.mask_replacement_recursively(self._path_list)
|
|
201
|
+
|
|
202
|
+
# Resolve and validate single path
|
|
203
|
+
if self.path:
|
|
204
|
+
if isinstance(self.path, str):
|
|
205
|
+
self.path = self.mask_replacement_recursively(self.path)
|
|
206
|
+
if not self.path.startswith(("http://", "https://", "ftp://")):
|
|
207
|
+
if _has_glob(self.path):
|
|
208
|
+
pass # glob expansion deferred to run()
|
|
209
|
+
else:
|
|
210
|
+
self.path = Path(self.path).resolve()
|
|
211
|
+
if not self.path.exists():
|
|
212
|
+
raise ComponentError(
|
|
213
|
+
f"ParrotKnowledgeBuilder: {self.path} doesn't exist."
|
|
214
|
+
)
|
|
215
|
+
elif isinstance(self.path, Path) and not self.path.exists():
|
|
216
|
+
raise ComponentError(
|
|
217
|
+
f"ParrotKnowledgeBuilder: {self.path} doesn't exist."
|
|
218
|
+
)
|
|
219
|
+
elif self._path_list is None and not self._path_column:
|
|
220
|
+
raise ConfigError(
|
|
221
|
+
"ParrotKnowledgeBuilder: provide at least one of: 'path', "
|
|
222
|
+
"'path_list', or 'path_column' (with an upstream DataFrame)."
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
async def run(self) -> bool:
|
|
226
|
+
"""Dispatch to the appropriate index-type branch and set self._result.
|
|
227
|
+
|
|
228
|
+
Returns:
|
|
229
|
+
True on success.
|
|
230
|
+
"""
|
|
231
|
+
if self._index_type == "graphindex":
|
|
232
|
+
await self._run_graphindex()
|
|
233
|
+
else:
|
|
234
|
+
await self._run_pageindex()
|
|
235
|
+
return True
|
|
236
|
+
|
|
237
|
+
async def _run_graphindex(self) -> None:
|
|
238
|
+
"""Build a merged tenant graph via LoaderExtractor + GraphAssembler.
|
|
239
|
+
|
|
240
|
+
For each resolved source, runs LoaderExtractor.extract() to get
|
|
241
|
+
(nodes, edges), feeds them into a single GraphAssembler, then emits one
|
|
242
|
+
KnowledgeArtifact(kind="graph") with model_dump() dicts. When `llm` is
|
|
243
|
+
set, a PageIndexToolkit(storage_dir) is supplied so section content is
|
|
244
|
+
persisted to disk and nodes carry a content_ref; otherwise extraction is
|
|
245
|
+
flat/in-memory. Embed and cross-domain resolve are intentionally skipped
|
|
246
|
+
(no vectors in v1).
|
|
247
|
+
|
|
248
|
+
Raises:
|
|
249
|
+
ConfigError: loader name not provided or loader class not found.
|
|
250
|
+
DataNotFound: extraction produced no nodes and fail_on_empty is True.
|
|
251
|
+
"""
|
|
252
|
+
# defer heavy import so graphindex extra is only required at runtime
|
|
253
|
+
from parrot.knowledge.graphindex.assemble import GraphAssembler
|
|
254
|
+
from parrot.knowledge.graphindex.extractors.loader import LoaderExtractor
|
|
255
|
+
|
|
256
|
+
if not self._loader_name:
|
|
257
|
+
raise ConfigError(
|
|
258
|
+
"ParrotKnowledgeBuilder: 'loader' is required for graphindex mode."
|
|
259
|
+
)
|
|
260
|
+
loader_cls = self._resolve_loader_class(self._loader_name)
|
|
261
|
+
if loader_cls is None:
|
|
262
|
+
raise ConfigError(
|
|
263
|
+
f"ParrotKnowledgeBuilder: loader '{self._loader_name}' not found "
|
|
264
|
+
"in LOADER_REGISTRY, parrot_loaders, or parrot.loaders."
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
sources = self._resolve_sources()
|
|
268
|
+
if sources is None:
|
|
269
|
+
sources = [self.path]
|
|
270
|
+
|
|
271
|
+
# Deduplicate the payload to mirror the assembler's merged view: a
|
|
272
|
+
# node_id seen across multiple sources collapses to one entry (last
|
|
273
|
+
# wins, as GraphAssembler.add_node does), and parallel edges collapse
|
|
274
|
+
# on (source_id, target_id, kind). This keeps artifact.nodes/edges
|
|
275
|
+
# consistent with the node_count/edge_count metadata and avoids pushing
|
|
276
|
+
# duplicate upserts to a downstream CopyToArango.
|
|
277
|
+
assembler = GraphAssembler(self._tenant_id)
|
|
278
|
+
nodes_by_id: dict[str, Any] = {}
|
|
279
|
+
edges_by_key: dict[tuple, Any] = {}
|
|
280
|
+
|
|
281
|
+
# Optional LLM adapter + PageIndexToolkit: when `llm` is configured,
|
|
282
|
+
# LoaderExtractor routes hierarchical content through the toolkit, which
|
|
283
|
+
# persists each document's sections to disk (index JSON + per-node
|
|
284
|
+
# markdown under storage_dir) and gives every SECTION node a
|
|
285
|
+
# content_ref = "pageindex://<tree>/<node>". Without `llm` it degrades to
|
|
286
|
+
# flat, in-memory extraction (one DOCUMENT node, no content_ref).
|
|
287
|
+
# The AbstractClient MUST be entered as an async context manager
|
|
288
|
+
# (__aenter__ initializes the per-loop SDK client).
|
|
289
|
+
storage_dir = self._resolve_kb_directory("graph")
|
|
290
|
+
persisted = self._llm is not None
|
|
291
|
+
async with AsyncExitStack() as stack:
|
|
292
|
+
extractor_kwargs: dict = {"toolkit": None}
|
|
293
|
+
if persisted:
|
|
294
|
+
from parrot.knowledge.pageindex.llm_adapter import PageIndexLLMAdapter
|
|
295
|
+
from parrot.knowledge.pageindex.toolkit import PageIndexToolkit
|
|
296
|
+
client = await stack.enter_async_context(self._build_llm_client())
|
|
297
|
+
adapter = PageIndexLLMAdapter(
|
|
298
|
+
client=client, model=self._resolve_model(client)
|
|
299
|
+
)
|
|
300
|
+
extractor_kwargs["llm_adapter"] = adapter
|
|
301
|
+
extractor_kwargs["toolkit"] = PageIndexToolkit(
|
|
302
|
+
adapter=adapter, storage_dir=str(storage_dir)
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
extractor = LoaderExtractor(**extractor_kwargs)
|
|
306
|
+
|
|
307
|
+
for source in sources:
|
|
308
|
+
source_str = str(source)
|
|
309
|
+
try:
|
|
310
|
+
loader = loader_cls(source=source_str)
|
|
311
|
+
nodes, edges = await extractor.extract(loader, source_str)
|
|
312
|
+
except Exception as exc: # noqa: BLE001
|
|
313
|
+
self._logger.warning(
|
|
314
|
+
"ParrotKnowledgeBuilder: source %s failed, skipping: %s",
|
|
315
|
+
source_str, exc,
|
|
316
|
+
)
|
|
317
|
+
continue
|
|
318
|
+
assembler.add_nodes(nodes)
|
|
319
|
+
assembler.add_edges(edges)
|
|
320
|
+
for node in nodes:
|
|
321
|
+
nodes_by_id[node.node_id] = node
|
|
322
|
+
for edge in edges:
|
|
323
|
+
edges_by_key[(edge.source_id, edge.target_id, edge.kind)] = edge
|
|
324
|
+
|
|
325
|
+
if self._fail_on_empty and not nodes_by_id:
|
|
326
|
+
raise DataNotFound(
|
|
327
|
+
"ParrotKnowledgeBuilder: graphindex extraction produced no nodes "
|
|
328
|
+
f"across {len(sources)} source(s)."
|
|
329
|
+
)
|
|
330
|
+
|
|
331
|
+
self._result = KnowledgeArtifact(
|
|
332
|
+
kind="graph",
|
|
333
|
+
index_type="graphindex",
|
|
334
|
+
source="<merged>",
|
|
335
|
+
tenant_id=self._tenant_id,
|
|
336
|
+
nodes=[n.model_dump() for n in nodes_by_id.values()],
|
|
337
|
+
edges=[e.model_dump() for e in edges_by_key.values()],
|
|
338
|
+
metadata={
|
|
339
|
+
"source_count": len(sources),
|
|
340
|
+
"node_count": assembler.node_count,
|
|
341
|
+
"edge_count": assembler.edge_count,
|
|
342
|
+
# Where section markdown/index were persisted (content_ref base);
|
|
343
|
+
# None when running flat/in-memory (no `llm`).
|
|
344
|
+
"storage_dir": str(storage_dir) if persisted else None,
|
|
345
|
+
},
|
|
346
|
+
)
|
|
347
|
+
self.add_metric("NUM_NODES", assembler.node_count)
|
|
348
|
+
self.add_metric("NUM_EDGES", assembler.edge_count)
|
|
349
|
+
|
|
350
|
+
async def _run_pageindex(self) -> None:
|
|
351
|
+
"""Build + persist one PageIndex tree per PDF via PageIndexToolkit.
|
|
352
|
+
|
|
353
|
+
For each PDF, ``toolkit.import_pdf`` builds the tree AND writes it to
|
|
354
|
+
disk under the resolved storage_dir:
|
|
355
|
+
``<storage_dir>/<tree_name>.json`` (index) + ``<storage_dir>/<tree_name>/
|
|
356
|
+
<node_id>.md`` (per-node markdown). The emitted KnowledgeArtifact keeps
|
|
357
|
+
the lean tree/index in ``tree`` and points at the on-disk content via
|
|
358
|
+
``metadata`` (storage_dir / tree_name / index_file / content_dir);
|
|
359
|
+
``node_markdown`` stays empty since the bodies live on disk. A downstream
|
|
360
|
+
CopyTo* persister reads from those paths.
|
|
361
|
+
|
|
362
|
+
Raises:
|
|
363
|
+
ConfigError: source is not a PDF file.
|
|
364
|
+
DataNotFound: no trees produced and fail_on_empty is True.
|
|
365
|
+
"""
|
|
366
|
+
# defer heavy import; requires dev parrot 0.25.7 + editable-source toggle
|
|
367
|
+
from parrot.knowledge.pageindex.llm_adapter import PageIndexLLMAdapter
|
|
368
|
+
from parrot.knowledge.pageindex.toolkit import PageIndexToolkit
|
|
369
|
+
|
|
370
|
+
sources = self._resolve_sources()
|
|
371
|
+
if sources is None:
|
|
372
|
+
sources = [self.path]
|
|
373
|
+
|
|
374
|
+
storage_dir = self._resolve_kb_directory("pages")
|
|
375
|
+
artifacts: list[KnowledgeArtifact] = []
|
|
376
|
+
|
|
377
|
+
# The AbstractClient MUST be entered as an async context manager so its
|
|
378
|
+
# per-loop SDK client is initialized; a bare instance leaves the SDK as
|
|
379
|
+
# None and the toolkit's LLM calls fail with 'NoneType .. chat'.
|
|
380
|
+
async with self._build_llm_client() as client:
|
|
381
|
+
adapter = PageIndexLLMAdapter(
|
|
382
|
+
client=client, model=self._resolve_model(client)
|
|
383
|
+
)
|
|
384
|
+
toolkit = PageIndexToolkit(adapter=adapter, storage_dir=str(storage_dir))
|
|
385
|
+
|
|
386
|
+
for source in sources:
|
|
387
|
+
source_str = str(source)
|
|
388
|
+
if not source_str.lower().endswith(".pdf"):
|
|
389
|
+
raise ConfigError(
|
|
390
|
+
f"ParrotKnowledgeBuilder: pageindex requires PDF sources, "
|
|
391
|
+
f"got: {source_str!r}. Non-PDF formats are not supported by build_page_index."
|
|
392
|
+
)
|
|
393
|
+
tree_name = Path(source_str).stem
|
|
394
|
+
try:
|
|
395
|
+
# Idempotent: replace any prior tree for this document.
|
|
396
|
+
if tree_name in await toolkit.list_trees():
|
|
397
|
+
await toolkit.delete_tree(tree_name)
|
|
398
|
+
await toolkit.create_tree(tree_name, doc_name=Path(source_str).name)
|
|
399
|
+
await toolkit.import_pdf(
|
|
400
|
+
tree_name=tree_name,
|
|
401
|
+
pdf_path=source_str,
|
|
402
|
+
with_summaries=self._with_summaries,
|
|
403
|
+
)
|
|
404
|
+
tree = await toolkit.get_tree(tree_name)
|
|
405
|
+
except Exception as exc: # noqa: BLE001
|
|
406
|
+
self._logger.warning(
|
|
407
|
+
"ParrotKnowledgeBuilder: pageindex failed for %s, skipping: %s",
|
|
408
|
+
source_str, exc,
|
|
409
|
+
)
|
|
410
|
+
continue
|
|
411
|
+
|
|
412
|
+
artifacts.append(
|
|
413
|
+
KnowledgeArtifact(
|
|
414
|
+
kind="tree",
|
|
415
|
+
index_type="pageindex",
|
|
416
|
+
source=source_str,
|
|
417
|
+
tree=tree, # lean index kept in the payload too
|
|
418
|
+
node_markdown={}, # bodies live on disk, not embedded
|
|
419
|
+
metadata={
|
|
420
|
+
"storage_dir": str(storage_dir),
|
|
421
|
+
"tree_name": tree_name,
|
|
422
|
+
"index_file": str(storage_dir / f"{tree_name}.json"),
|
|
423
|
+
"content_dir": str(storage_dir / tree_name),
|
|
424
|
+
},
|
|
425
|
+
)
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
if self._fail_on_empty and not artifacts:
|
|
429
|
+
raise DataNotFound(
|
|
430
|
+
"ParrotKnowledgeBuilder: pageindex extraction produced no trees "
|
|
431
|
+
f"across {len(sources)} source(s)."
|
|
432
|
+
)
|
|
433
|
+
|
|
434
|
+
self._result = artifacts
|
|
435
|
+
self.add_metric("NUM_TREES", len(artifacts))
|
|
436
|
+
self.add_metric("STORAGE_DIR", str(storage_dir))
|
|
437
|
+
|
|
438
|
+
async def close(self) -> None:
|
|
439
|
+
"""Release resources (LLM client, etc.)."""
|