flowtask 5.12.7__tar.gz → 5.12.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flowtask-5.12.7 → flowtask-5.12.8}/PKG-INFO +1 -1
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/conf.py +16 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_report.py +75 -10
- flowtask-5.12.8/flowtask/interfaces/workday/rest.py +217 -0
- flowtask-5.12.8/flowtask/services/maintenance/README.md +80 -0
- flowtask-5.12.8/flowtask/services/maintenance/__init__.py +45 -0
- flowtask-5.12.8/flowtask/services/maintenance/changelog.py +184 -0
- flowtask-5.12.8/flowtask/services/maintenance/handlers.py +128 -0
- flowtask-5.12.8/flowtask/services/maintenance/health.py +169 -0
- flowtask-5.12.8/flowtask/services/maintenance/models.py +216 -0
- flowtask-5.12.8/flowtask/services/maintenance/service.py +272 -0
- flowtask-5.12.8/flowtask/services/maintenance/store.py +211 -0
- flowtask-5.12.8/flowtask/services/maintenance/templates.py +172 -0
- flowtask-5.12.8/flowtask/services/maintenance/windows.py +148 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/version.py +1 -1
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/PKG-INFO +1 -1
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/SOURCES.txt +11 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/CONTRIBUTING.md +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/INSTALL +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/LICENSE +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/MANIFEST.in +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/README.md +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/__main__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/bots/check.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ATT.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Azure.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/BestBuy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CallAnalysis.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToPg.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Costco.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DateList.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadFromSmartsheet.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileList.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GenData.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/HTTPClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/IF.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Loop.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MarketClustering.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OpenStreetMap.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OpenWithBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/OpenWithPandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ProductReportBot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/QS.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/RESTClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SchedulingVisits.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SearchQuery.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendNotify/component.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Staples.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Switch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TableSchema.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Target.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TransformRows/TransformRows.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TransformRows/functions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Wait.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workday/workday.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/flow.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/google.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/group.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/py.typed +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tFlatten.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tJoin.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tMap/functions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tMerge.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/components/user.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/categories.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generated/index.json +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/download.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/log.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/notify_event.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/task.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/teams.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/events/manager.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/exceptions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/docker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/events.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/local.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/publish.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/registry.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/factory/agent.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/factory/composer.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/factory/parser.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/factory/validator.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/handlers/component.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/step.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/mail.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/sharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/AzureGraph.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/O365Client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/copy_to.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/dt.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/parrot/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/search.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/config.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/handlers/workers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/clock_event.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/models/worker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/zammad.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/runner.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/files/model.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/files/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/command.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/task.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/template/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/tests.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/types/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/constants.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/executor.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/mail.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/msgraph_patch.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/stats.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/uv.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask/utils/validators.py +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/requires.txt +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/pyproject.toml +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/setup.cfg +0 -0
- {flowtask-5.12.7 → flowtask-5.12.8}/setup.py +0 -0
|
@@ -546,6 +546,22 @@ ZOOM_WEBHOOK_REPLAY_WINDOW_SECONDS = config.getint(
|
|
|
546
546
|
)
|
|
547
547
|
ZOOM_ALLOWED_CIDRS = config.get('ZOOM_ALLOWED_CIDRS', fallback='')
|
|
548
548
|
|
|
549
|
+
## Maintenance / Status service (SOC2 CC8):
|
|
550
|
+
# Master switch for the MaintenanceService (status + changelog + windows).
|
|
551
|
+
MAINTENANCE_ENABLED = config.getboolean("MAINTENANCE_ENABLED", fallback=True)
|
|
552
|
+
# Whether to email a summary of upcoming maintenance windows on startup.
|
|
553
|
+
MAINTENANCE_NOTIFY_ON_STARTUP = config.getboolean(
|
|
554
|
+
"MAINTENANCE_NOTIFY_ON_STARTUP", fallback=True
|
|
555
|
+
)
|
|
556
|
+
# Recipient for maintenance-window notifications (falls back to DEFAULT_RECIPIENT).
|
|
557
|
+
MAINTENANCE_NOTIFY_EMAIL = config.get("MAINTENANCE_NOTIFY_EMAIL", fallback=None)
|
|
558
|
+
# Changelog source: a GitHub "owner/name" slug and/or a local CHANGELOG.md.
|
|
559
|
+
MAINTENANCE_GITHUB_REPO = config.get("MAINTENANCE_GITHUB_REPO", fallback=None)
|
|
560
|
+
MAINTENANCE_GITHUB_TOKEN = config.get("MAINTENANCE_GITHUB_TOKEN", fallback=None)
|
|
561
|
+
MAINTENANCE_CHANGELOG_TITLE = config.get(
|
|
562
|
+
"MAINTENANCE_CHANGELOG_TITLE", fallback="What's New"
|
|
563
|
+
)
|
|
564
|
+
|
|
549
565
|
try:
|
|
550
566
|
from navconfig.conf import * # pylint: disable=W0401,W0614 # noqa
|
|
551
567
|
except ImportError as e:
|
|
@@ -129,6 +129,22 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
129
129
|
result[f"ID_{key}"] = values[0] if len(values) == 1 else values
|
|
130
130
|
return result or None
|
|
131
131
|
|
|
132
|
+
# JSON RaaS shape: a list of dicts whose values are plain scalars, e.g.
|
|
133
|
+
# ``[{"Time_Entry_Codes": "A; B"}, {"Time_Entry_Codes": "C"}]``. Merge by
|
|
134
|
+
# key, joining repeated values with ``"; "`` so the multi-instance group
|
|
135
|
+
# collapses into a single flat string column.
|
|
136
|
+
if all(all(not isinstance(v, (dict, list)) for v in i.values()) for i in items):
|
|
137
|
+
result = {}
|
|
138
|
+
for item in items:
|
|
139
|
+
for key, value in item.items():
|
|
140
|
+
if value is None:
|
|
141
|
+
continue
|
|
142
|
+
if key in result:
|
|
143
|
+
result[key] = f"{result[key]}; {value}"
|
|
144
|
+
else:
|
|
145
|
+
result[key] = value
|
|
146
|
+
return result or None
|
|
147
|
+
|
|
132
148
|
return None
|
|
133
149
|
|
|
134
150
|
def _expand_list_dict_columns(self, df: pd.DataFrame, drop_original: bool) -> pd.DataFrame:
|
|
@@ -207,6 +223,37 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
207
223
|
self._logger.error(f"Error parsing XML response: {e}")
|
|
208
224
|
raise
|
|
209
225
|
|
|
226
|
+
def _parse_json_to_entries(self, body: Any) -> List[Dict[str, Any]]:
|
|
227
|
+
"""Extract ``Report_Entry`` rows from a RaaS JSON response.
|
|
228
|
+
|
|
229
|
+
Workday's ``?format=json`` RaaS output is already a list of flat dicts
|
|
230
|
+
(no namespace prefixes, no ``type``/``_value`` wrappers), so it feeds
|
|
231
|
+
straight into ``pd.json_normalize``. Multi-instance group columns arrive
|
|
232
|
+
as a list of dicts with scalar values, collapsed later by
|
|
233
|
+
:meth:`_list_of_dicts_to_dict` when ``flatten_list_dicts`` is set.
|
|
234
|
+
|
|
235
|
+
Args:
|
|
236
|
+
body: Parsed JSON payload (dict) or a raw JSON string/bytes.
|
|
237
|
+
|
|
238
|
+
Returns:
|
|
239
|
+
List of report-entry dicts (empty when none present).
|
|
240
|
+
"""
|
|
241
|
+
import json as _json
|
|
242
|
+
|
|
243
|
+
if isinstance(body, (bytes, bytearray)):
|
|
244
|
+
body = body.decode("utf-8", errors="replace")
|
|
245
|
+
if isinstance(body, str):
|
|
246
|
+
body = _json.loads(body)
|
|
247
|
+
|
|
248
|
+
if isinstance(body, list):
|
|
249
|
+
return body
|
|
250
|
+
if isinstance(body, dict):
|
|
251
|
+
entries = body.get("Report_Entry", [])
|
|
252
|
+
if entries and not isinstance(entries, list):
|
|
253
|
+
entries = [entries]
|
|
254
|
+
return entries or []
|
|
255
|
+
return []
|
|
256
|
+
|
|
210
257
|
def _build_raas_url(
|
|
211
258
|
self,
|
|
212
259
|
report_name: str,
|
|
@@ -317,12 +364,21 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
317
364
|
'flatten_list_dicts', 'drop_flattened_columns',
|
|
318
365
|
'supervisory_organizations', 'supervisory_organizations_wid',
|
|
319
366
|
'supervisory_organization_wid', 'include_subordinate_organizations',
|
|
320
|
-
'query_string_template'
|
|
367
|
+
'query_string_template', 'output_format'
|
|
321
368
|
}
|
|
322
369
|
|
|
323
370
|
offer_and_hire = self._coerce_bool(query_params.pop('offer_and_hire', False))
|
|
324
371
|
flatten_list_dicts = self._coerce_bool(query_params.pop('flatten_list_dicts', False))
|
|
325
372
|
drop_flattened_columns = self._coerce_bool(query_params.pop('drop_flattened_columns', False))
|
|
373
|
+
# Output format: 'xml' (default, legacy) or 'json'. JSON yields a cleaner
|
|
374
|
+
# shape for reports with nested multi-instance groups (no xmltodict
|
|
375
|
+
# cardinality split), at the cost of needing a flowtask that supports it.
|
|
376
|
+
output_format = str(query_params.pop('output_format', 'xml')).strip().lower()
|
|
377
|
+
if output_format not in ('xml', 'json'):
|
|
378
|
+
self._logger.warning(
|
|
379
|
+
"Unknown output_format '%s'; falling back to 'xml'", output_format
|
|
380
|
+
)
|
|
381
|
+
output_format = 'xml'
|
|
326
382
|
report_path = query_params.pop('report_path', None)
|
|
327
383
|
query_string_template = query_params.pop('query_string_template', None)
|
|
328
384
|
|
|
@@ -356,6 +412,10 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
356
412
|
if k not in internal_params
|
|
357
413
|
}
|
|
358
414
|
|
|
415
|
+
# RaaS switches output via the ``format`` query param (default is XML).
|
|
416
|
+
if output_format == 'json' and 'format' not in filtered_params:
|
|
417
|
+
filtered_params['format'] = 'json'
|
|
418
|
+
|
|
359
419
|
if offer_and_hire:
|
|
360
420
|
self._logger.debug(
|
|
361
421
|
"offer_and_hire flag enabled: mapping start/end to Ready for Hire fields and adjusting path"
|
|
@@ -412,6 +472,8 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
412
472
|
# Build base URL without query params, then append template
|
|
413
473
|
base_url = self._build_raas_url(report_name, report_owner, None, report_path)
|
|
414
474
|
url = f"{base_url}?{query_string}"
|
|
475
|
+
if output_format == 'json' and 'format=' not in query_string:
|
|
476
|
+
url = f"{url}&format=json"
|
|
415
477
|
else:
|
|
416
478
|
# Use standard URL building with filtered_params
|
|
417
479
|
url = self._build_raas_url(report_name, report_owner, filtered_params, report_path)
|
|
@@ -419,6 +481,8 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
419
481
|
self._logger.info(f"Executing custom report: {report_name}")
|
|
420
482
|
self._logger.debug(f"RaaS URL: {url}")
|
|
421
483
|
|
|
484
|
+
accept_mime = "application/json" if output_format == "json" else "application/xml"
|
|
485
|
+
|
|
422
486
|
# Initialize HTTP client if needed
|
|
423
487
|
if self._http_client is None:
|
|
424
488
|
# Get credentials from component
|
|
@@ -446,7 +510,7 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
446
510
|
"password": password
|
|
447
511
|
},
|
|
448
512
|
auth_type="basic",
|
|
449
|
-
accept=
|
|
513
|
+
accept=accept_mime,
|
|
450
514
|
timeout=120
|
|
451
515
|
)
|
|
452
516
|
# Set logger for HTTP client
|
|
@@ -457,7 +521,7 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
457
521
|
result, error = await self._http_client.async_request(
|
|
458
522
|
url=url,
|
|
459
523
|
method="GET",
|
|
460
|
-
accept=
|
|
524
|
+
accept=accept_mime
|
|
461
525
|
)
|
|
462
526
|
|
|
463
527
|
if error:
|
|
@@ -472,15 +536,16 @@ class CustomReportType(WorkdayTypeBase):
|
|
|
472
536
|
self._logger.error(f"Error executing custom report via REST: {exc}")
|
|
473
537
|
raise
|
|
474
538
|
|
|
475
|
-
# Parse the
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
539
|
+
# Parse the response into a list of report-entry dicts.
|
|
540
|
+
if output_format == "json":
|
|
541
|
+
raw_response = self._parse_json_to_entries(result)
|
|
542
|
+
else:
|
|
543
|
+
# Convert to bytes for xmltodict
|
|
544
|
+
xml_bytes = result if isinstance(result, (bytes, bytearray)) else str(result).encode()
|
|
545
|
+
raw_response = self._parse_xml_to_entries(xml_bytes)
|
|
481
546
|
|
|
482
547
|
if not raw_response:
|
|
483
|
-
self._logger.warning("No report entries found in
|
|
548
|
+
self._logger.warning("No report entries found in %s response", output_format.upper())
|
|
484
549
|
return pd.DataFrame()
|
|
485
550
|
|
|
486
551
|
# Convert parsed XML (now as list of dicts) to DataFrame
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
"""Workday REST API client (``/ccx/api``).
|
|
2
|
+
|
|
3
|
+
Minimal async client for Workday's REST surface, sharing :class:`WorkdayConfig`
|
|
4
|
+
(credentials, tenant, prod/sandbox ``env`` selector) with the SOAP
|
|
5
|
+
``WorkdayService``. Unlike the WSDL services — which have **no** operation to
|
|
6
|
+
read raw time clock events — the REST API exposes them, echoing back the
|
|
7
|
+
client-assigned ``Time_Clock_Event_ID`` as ``reference_ID`` and the effective
|
|
8
|
+
``timeEntryCode`` applied to *In* events. That makes post-punch verification
|
|
9
|
+
possible.
|
|
10
|
+
|
|
11
|
+
Verified endpoints (Workday implementation tenant, 2026-07-03):
|
|
12
|
+
|
|
13
|
+
- ``GET /ccx/api/v1/{tenant}/workers?search={text}`` — worker lookup; each row
|
|
14
|
+
carries ``id`` (the Workday WID) and ``descriptor``.
|
|
15
|
+
- ``GET /ccx/api/timeTracking/v5/{tenant}/timeClockEvents?worker={WID}`` — raw
|
|
16
|
+
clock events. The ``worker`` parameter **requires a WID**; Employee_ID values
|
|
17
|
+
are rejected with ``400 "not found"``.
|
|
18
|
+
|
|
19
|
+
Example::
|
|
20
|
+
|
|
21
|
+
from flowtask.interfaces.workday.config import WorkdayConfig
|
|
22
|
+
from flowtask.interfaces.workday.rest import WorkdayRestClient
|
|
23
|
+
|
|
24
|
+
client = WorkdayRestClient(config=WorkdayConfig(env="sandbox"))
|
|
25
|
+
workers = await client.find_worker("123456")
|
|
26
|
+
events = await client.get_time_clock_events(workers[0]["id"])
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
from __future__ import annotations
|
|
30
|
+
|
|
31
|
+
import base64
|
|
32
|
+
import logging
|
|
33
|
+
import time as _time
|
|
34
|
+
from typing import Any, Optional
|
|
35
|
+
|
|
36
|
+
import httpx
|
|
37
|
+
|
|
38
|
+
from flowtask.interfaces.workday.config import WorkdayConfig
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class WorkdayRestClient:
|
|
42
|
+
"""Async client for Workday's ``/ccx/api`` REST endpoints.
|
|
43
|
+
|
|
44
|
+
Uses the same OAuth *refresh-token* grant as ``SOAPClient`` (no Redis
|
|
45
|
+
dependency — the bearer token is cached in-memory until shortly before
|
|
46
|
+
expiry). Host and credentials come from :class:`WorkdayConfig`, so the
|
|
47
|
+
``WORKDAY_ENV`` prod/sandbox selector applies here too.
|
|
48
|
+
|
|
49
|
+
Args:
|
|
50
|
+
config: Explicit credentials / tenant. ``None`` → ``WorkdayConfig()``
|
|
51
|
+
(conf fallbacks + ``WORKDAY_ENV``).
|
|
52
|
+
timeout: HTTP timeout in seconds (default 30).
|
|
53
|
+
time_tracking_version: REST version segment for the timeTracking
|
|
54
|
+
service (default ``"v5"`` — the version available on this tenant;
|
|
55
|
+
``v6`` returned 400 when probed).
|
|
56
|
+
"""
|
|
57
|
+
|
|
58
|
+
def __init__(
|
|
59
|
+
self,
|
|
60
|
+
*,
|
|
61
|
+
config: WorkdayConfig | None = None,
|
|
62
|
+
timeout: int = 30,
|
|
63
|
+
time_tracking_version: str = "v5",
|
|
64
|
+
) -> None:
|
|
65
|
+
self.config = config or WorkdayConfig()
|
|
66
|
+
self.timeout = timeout
|
|
67
|
+
self.time_tracking_version = time_tracking_version
|
|
68
|
+
self._token: Optional[str] = None
|
|
69
|
+
self._token_expires_at: float = 0.0
|
|
70
|
+
self._logger = logging.getLogger("flowtask.workday.rest")
|
|
71
|
+
|
|
72
|
+
# ------------------------------------------------------------------
|
|
73
|
+
# Auth
|
|
74
|
+
# ------------------------------------------------------------------
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def base_url(self) -> str:
|
|
78
|
+
"""REST base: ``{workday_url}/ccx/api`` (env-aware host)."""
|
|
79
|
+
return f"{self.config.workday_url.rstrip('/')}/ccx/api"
|
|
80
|
+
|
|
81
|
+
def set_token(self, token: str, expires_in: int = 300) -> None:
|
|
82
|
+
"""Reuse an externally obtained bearer token (e.g. from the SOAP flow).
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
token: A valid Workday OAuth access token.
|
|
86
|
+
expires_in: Seconds the token remains valid (default 300).
|
|
87
|
+
"""
|
|
88
|
+
self._token = token
|
|
89
|
+
self._token_expires_at = _time.monotonic() + max(expires_in - 10, 0)
|
|
90
|
+
|
|
91
|
+
async def get_token(self) -> str:
|
|
92
|
+
"""Return a cached bearer token, refreshing via OAuth when expired.
|
|
93
|
+
|
|
94
|
+
Performs the same ``refresh_token`` grant as ``SOAPClient`` (Basic auth
|
|
95
|
+
with client_id/client_secret against ``token_url``).
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
A valid access token.
|
|
99
|
+
"""
|
|
100
|
+
if self._token and _time.monotonic() < self._token_expires_at:
|
|
101
|
+
return self._token
|
|
102
|
+
|
|
103
|
+
cid = self.config.resolved_client_id
|
|
104
|
+
secret = self.config.resolved_client_secret
|
|
105
|
+
basic = base64.b64encode(f"{cid}:{secret}".encode()).decode()
|
|
106
|
+
async with httpx.AsyncClient(timeout=self.timeout) as http:
|
|
107
|
+
resp = await http.post(
|
|
108
|
+
self.config.resolved_token_url,
|
|
109
|
+
data={
|
|
110
|
+
"grant_type": "refresh_token",
|
|
111
|
+
"refresh_token": self.config.resolved_refresh_token,
|
|
112
|
+
},
|
|
113
|
+
headers={
|
|
114
|
+
"Authorization": f"Basic {basic}",
|
|
115
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
116
|
+
},
|
|
117
|
+
)
|
|
118
|
+
resp.raise_for_status()
|
|
119
|
+
payload = resp.json()
|
|
120
|
+
|
|
121
|
+
self.set_token(payload["access_token"], int(payload.get("expires_in", 300)))
|
|
122
|
+
self._logger.debug("Workday REST token refreshed (env=%s)", self.config.resolved_env)
|
|
123
|
+
return self._token # type: ignore[return-value]
|
|
124
|
+
|
|
125
|
+
# ------------------------------------------------------------------
|
|
126
|
+
# Core GET
|
|
127
|
+
# ------------------------------------------------------------------
|
|
128
|
+
|
|
129
|
+
async def get(self, path: str, params: dict[str, Any] | None = None) -> dict:
|
|
130
|
+
"""Perform an authenticated GET against ``{base_url}{path}``.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
path: Path below ``/ccx/api`` (must start with ``/``).
|
|
134
|
+
params: Optional query parameters.
|
|
135
|
+
|
|
136
|
+
Returns:
|
|
137
|
+
The parsed JSON body.
|
|
138
|
+
|
|
139
|
+
Raises:
|
|
140
|
+
httpx.HTTPStatusError: on non-2xx responses.
|
|
141
|
+
"""
|
|
142
|
+
token = await self.get_token()
|
|
143
|
+
url = f"{self.base_url}{path}"
|
|
144
|
+
async with httpx.AsyncClient(timeout=self.timeout) as http:
|
|
145
|
+
resp = await http.get(
|
|
146
|
+
url,
|
|
147
|
+
params=params or {},
|
|
148
|
+
headers={"Authorization": f"Bearer {token}"},
|
|
149
|
+
)
|
|
150
|
+
resp.raise_for_status()
|
|
151
|
+
return resp.json()
|
|
152
|
+
|
|
153
|
+
# ------------------------------------------------------------------
|
|
154
|
+
# Endpoints
|
|
155
|
+
# ------------------------------------------------------------------
|
|
156
|
+
|
|
157
|
+
async def find_worker(self, search: str, *, limit: int = 20) -> list[dict]:
|
|
158
|
+
"""Search workers; each result carries ``id`` (WID) and ``descriptor``.
|
|
159
|
+
|
|
160
|
+
Args:
|
|
161
|
+
search: Free-text search (name; associate/employee id support is
|
|
162
|
+
tenant-dependent — verify before relying on it).
|
|
163
|
+
limit: Max results (default 20).
|
|
164
|
+
|
|
165
|
+
Returns:
|
|
166
|
+
List of worker dicts (empty when no match).
|
|
167
|
+
"""
|
|
168
|
+
payload = await self.get(
|
|
169
|
+
f"/v1/{self.config.tenant}/workers",
|
|
170
|
+
{"search": search, "limit": limit},
|
|
171
|
+
)
|
|
172
|
+
return payload.get("data", [])
|
|
173
|
+
|
|
174
|
+
async def get_time_clock_events(
|
|
175
|
+
self, worker_wid: str, *, limit: int = 100
|
|
176
|
+
) -> list[dict]:
|
|
177
|
+
"""Return the raw time clock events of a worker.
|
|
178
|
+
|
|
179
|
+
Each event carries ``reference_ID`` (the client-assigned
|
|
180
|
+
``Time_Clock_Event_ID`` when the event was created via
|
|
181
|
+
``Put_Time_Clock_Events``), ``dateTime`` (UTC ISO), ``eventType``,
|
|
182
|
+
``comment``, ``timeZone``, and — on *In* events of time-tracking
|
|
183
|
+
eligible workers — the effective ``timeEntryCode``.
|
|
184
|
+
|
|
185
|
+
Args:
|
|
186
|
+
worker_wid: The worker's Workday WID (NOT an Employee_ID — the
|
|
187
|
+
REST API rejects those).
|
|
188
|
+
limit: Max events returned (default 100).
|
|
189
|
+
|
|
190
|
+
Returns:
|
|
191
|
+
List of event dicts (empty when the worker has none).
|
|
192
|
+
"""
|
|
193
|
+
payload = await self.get(
|
|
194
|
+
f"/timeTracking/{self.time_tracking_version}/{self.config.tenant}/timeClockEvents",
|
|
195
|
+
{"worker": worker_wid, "limit": limit},
|
|
196
|
+
)
|
|
197
|
+
return payload.get("data", [])
|
|
198
|
+
|
|
199
|
+
async def find_time_clock_event(
|
|
200
|
+
self, worker_wid: str, reference_id: str
|
|
201
|
+
) -> dict | None:
|
|
202
|
+
"""Locate one clock event by its client-assigned ``reference_ID``.
|
|
203
|
+
|
|
204
|
+
Convenience for punch verification: after ``Put_Time_Clock_Events``
|
|
205
|
+
succeeds, the event is visible here within ~1 s (verified live).
|
|
206
|
+
|
|
207
|
+
Args:
|
|
208
|
+
worker_wid: The worker's Workday WID.
|
|
209
|
+
reference_id: The ``Time_Clock_Event_ID`` sent on the Put.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
The matching event dict, or ``None`` when not (yet) present.
|
|
213
|
+
"""
|
|
214
|
+
for event in await self.get_time_clock_events(worker_wid):
|
|
215
|
+
if event.get("reference_ID") == reference_id:
|
|
216
|
+
return event
|
|
217
|
+
return None
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Flowtask Maintenance / Status Service
|
|
2
|
+
|
|
3
|
+
SOC2 **CC8 (change management)** support for Flowtask running in aiohttp
|
|
4
|
+
**server mode**. It exposes three surfaces:
|
|
5
|
+
|
|
6
|
+
| Surface | What it does |
|
|
7
|
+
|---------|--------------|
|
|
8
|
+
| **Status page** | Reports server liveness, the startup-job outcome and the availability of the `/api/v2/task` and `/api/v2/scheduler` APIs. Failures are persisted (Redis, in-memory fallback) for auditing. |
|
|
9
|
+
| **Changelog page** | End-user "What's New" page built from `CHANGELOG.md` or GitHub Releases and served as HTML. |
|
|
10
|
+
| **Maintenance windows** | Register a window (day + hour range) over HTTP; upcoming windows are shown on the status page and emailed on startup via `async-notify`. |
|
|
11
|
+
|
|
12
|
+
## Wiring it up
|
|
13
|
+
|
|
14
|
+
Inside a Navigator `AppHandler.configure()` (already done in `app.py`):
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
from flowtask.services.maintenance import MaintenanceService
|
|
18
|
+
|
|
19
|
+
maintenance = MaintenanceService()
|
|
20
|
+
maintenance.setup(self.app)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Endpoints
|
|
24
|
+
|
|
25
|
+
| Method | Path | Description |
|
|
26
|
+
|--------|------|-------------|
|
|
27
|
+
| GET | `/status` | HTML status page |
|
|
28
|
+
| GET | `/changelog` | HTML "What's New" page |
|
|
29
|
+
| GET | `/api/v2/maintenance/status` | JSON status (HTTP 503 when unhealthy) |
|
|
30
|
+
| GET | `/api/v2/maintenance/failures?limit=` | Recent recorded failures |
|
|
31
|
+
| GET | `/api/v2/maintenance/changelog` | Changelog as JSON |
|
|
32
|
+
| GET | `/api/v2/maintenance/windows?upcoming=true` | List maintenance windows |
|
|
33
|
+
| POST | `/api/v2/maintenance/windows` | Register a window |
|
|
34
|
+
| DELETE | `/api/v2/maintenance/windows/{identifier}` | Remove a window |
|
|
35
|
+
|
|
36
|
+
### Registering a maintenance window
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
curl -X POST http://localhost:8080/api/v2/maintenance/windows \
|
|
40
|
+
-H 'Content-Type: application/json' \
|
|
41
|
+
-d '{
|
|
42
|
+
"title": "Planned DB upgrade",
|
|
43
|
+
"day": "2030-05-01",
|
|
44
|
+
"start_time": "02:00",
|
|
45
|
+
"end_time": "04:00",
|
|
46
|
+
"description": "Rolling restart",
|
|
47
|
+
"notify": true
|
|
48
|
+
}'
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Reporting a startup job outcome
|
|
52
|
+
|
|
53
|
+
Any component can flag whether its on-startup work succeeded; the result shows
|
|
54
|
+
up in the `startup_job` status probe:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
service = app["flowtask_maintenance"]
|
|
58
|
+
await service.mark_startup("my_loader", ok=True, detail="warmed cache")
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The scheduler installed at `app["_scheduler_"]` is always considered as a
|
|
62
|
+
startup signal automatically, so a stalled scheduler surfaces even when no
|
|
63
|
+
other startup jobs are recorded.
|
|
64
|
+
|
|
65
|
+
## Configuration (`flowtask/conf.py` / environment)
|
|
66
|
+
|
|
67
|
+
| Setting | Default | Purpose |
|
|
68
|
+
|---------|---------|---------|
|
|
69
|
+
| `MAINTENANCE_ENABLED` | `True` | Master switch |
|
|
70
|
+
| `MAINTENANCE_NOTIFY_ON_STARTUP` | `True` | Email upcoming windows on startup |
|
|
71
|
+
| `MAINTENANCE_NOTIFY_EMAIL` | `DEFAULT_RECIPIENT` | Notification recipient |
|
|
72
|
+
| `MAINTENANCE_GITHUB_REPO` | `None` | `owner/name` for GitHub-sourced changelog |
|
|
73
|
+
| `MAINTENANCE_GITHUB_TOKEN` | `None` | Optional token for the GitHub source |
|
|
74
|
+
| `MAINTENANCE_CHANGELOG_TITLE` | `What's New` | Changelog page heading |
|
|
75
|
+
| `REDIS_URL` | — | Store backend (falls back to in-memory) |
|
|
76
|
+
| `EMAIL_HOST` / `EMAIL_PORT` / `EMAIL_USERNAME` / `EMAIL_PASSWORD` | — | SMTP account for notifications |
|
|
77
|
+
|
|
78
|
+
Redis is optional: if it is unreachable the store degrades to an in-process
|
|
79
|
+
fallback and flags itself (`degraded_store` in the failures endpoint) instead of
|
|
80
|
+
taking the server down.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"""Flowtask Maintenance service (SOC2 CC8 change-management surfaces).
|
|
2
|
+
|
|
3
|
+
Exposes a status page, an end-user changelog ("What's New") page and a
|
|
4
|
+
maintenance-window registration API for Flowtask running in aiohttp server
|
|
5
|
+
mode.
|
|
6
|
+
|
|
7
|
+
The heavy orchestrator (:class:`MaintenanceService`) is imported lazily so that
|
|
8
|
+
importing lightweight pieces (models, store, changelog parsing) does not drag in
|
|
9
|
+
the full Flowtask configuration/notify stack.
|
|
10
|
+
"""
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from typing import TYPE_CHECKING
|
|
14
|
+
|
|
15
|
+
from .models import (
|
|
16
|
+
ChangelogEntry,
|
|
17
|
+
FailureRecord,
|
|
18
|
+
HealthCheck,
|
|
19
|
+
MaintenanceWindow,
|
|
20
|
+
ServiceState,
|
|
21
|
+
StatusReport,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
if TYPE_CHECKING: # pragma: no cover - typing only
|
|
25
|
+
from .service import MaintenanceService
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"MaintenanceService",
|
|
29
|
+
"MAINTENANCE_APP_KEY",
|
|
30
|
+
"StatusReport",
|
|
31
|
+
"HealthCheck",
|
|
32
|
+
"ServiceState",
|
|
33
|
+
"MaintenanceWindow",
|
|
34
|
+
"FailureRecord",
|
|
35
|
+
"ChangelogEntry",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def __getattr__(name: str):
|
|
40
|
+
"""Lazily resolve the orchestrator symbols to avoid heavy imports."""
|
|
41
|
+
if name in ("MaintenanceService", "MAINTENANCE_APP_KEY"):
|
|
42
|
+
from . import service
|
|
43
|
+
|
|
44
|
+
return getattr(service, name)
|
|
45
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|