flowtask 5.13.2__tar.gz → 5.13.3__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.13.2 → flowtask-5.13.3}/PKG-INFO +1 -1
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/BestBuy.py +194 -30
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToPg.py +124 -14
- flowtask-5.13.3/flowtask/documentation/generated/components/BestBuy.doc.json +80 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/index.json +271 -266
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/copy_to.py +12 -0
- flowtask-5.13.3/flowtask/utils/bestbuy_greedy.py +531 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/version.py +1 -1
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/PKG-INFO +1 -1
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/SOURCES.txt +1 -0
- flowtask-5.13.2/flowtask/utils/bestbuy_greedy.py +0 -256
- {flowtask-5.13.2 → flowtask-5.13.3}/CONTRIBUTING.md +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/INSTALL +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/LICENSE +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/MANIFEST.in +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/README.md +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/__main__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/_version.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/bots/check.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ATT.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Azure.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CallAnalysis.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Costco.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DateList.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromGoogleDrive.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadFromSmartsheet.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileList.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GenData.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/HTTPClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/IF.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Loop.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MarketClustering.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/NextTask.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OpenStreetMap.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OpenWithBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/OpenWithPandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotAgent.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ProductReportBot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/QS.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/RESTClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SchedulingVisits.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SearchQuery.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendNotify/component.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/retailers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/retailers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/retailers/costco.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/retailers/tractor_supply.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/retailers/verizon.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScraperStores/scraper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Staples.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SweetSpotScore/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SweetSpotScore/component.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/SweetSpotScore/layers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Switch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TableSchema.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Target.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TransformRows/TransformRows.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TransformRows/functions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Wait.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workday/workday.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/flow.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/google.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/group.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/py.typed +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tDiff.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tFlatten.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tJoin.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tMap/functions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tMerge.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/components/user.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/conf.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/categories.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/NextTask.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ParrotAgent.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PlanogramCompliance.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ServiceScraperStores.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tDictKey.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tDiff.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tFlatten.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/download.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/log.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/notify_event.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/task.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/teams.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/events/manager.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/exceptions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/docker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/events.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/local.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/publish.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/registry.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/factory/agent.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/factory/composer.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/factory/parser.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/factory/validator.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/handlers/component.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/step.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/mail.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/sharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/AzureGraph.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleReverseGeocoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/NominatimGeocoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/O365Client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/OverpassGeocoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/ReverseGeocoding.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/dt.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/parrot/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/parrot/config.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/routing.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/engine.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/extractors/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/extractors/count.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/extractors/gravity.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/extractors/nearest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/scoring/spatial.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/search.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/skip_policy.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/config.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/custom_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/handlers/workers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/clock_event.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/models/worker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/rest.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/zammad.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/runner.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/files/model.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/files/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/README.md +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/changelog.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/handlers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/health.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/models.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/store.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/templates.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/maintenance/windows.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/chain.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/chainer.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/command.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/exchange.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/task.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/template/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/tests.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/types/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/constants.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/executor.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/mail.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/msgraph_patch.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/stats.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/uv.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask/utils/validators.py +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/requires.txt +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/pyproject.toml +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/setup.cfg +0 -0
- {flowtask-5.13.2 → flowtask-5.13.3}/setup.py +0 -0
|
@@ -35,14 +35,17 @@ from ..interfaces.flow import FlowComponent
|
|
|
35
35
|
from ..interfaces import HTTPService, SeleniumService
|
|
36
36
|
from ..interfaces.http import ua
|
|
37
37
|
from ..utils.bestbuy_greedy import (
|
|
38
|
-
NOT_ENABLED_STATES,
|
|
39
38
|
CoverageMap,
|
|
40
39
|
SeedCoverage,
|
|
40
|
+
SkuFulfillment,
|
|
41
41
|
StoreAvailability,
|
|
42
42
|
Target,
|
|
43
|
+
availability_types,
|
|
44
|
+
fulfillment_slice,
|
|
43
45
|
greedy_next_seed,
|
|
44
46
|
load_coverage,
|
|
45
47
|
parse_fulfillment,
|
|
48
|
+
parse_sku_fulfillment,
|
|
46
49
|
save_coverage,
|
|
47
50
|
)
|
|
48
51
|
|
|
@@ -106,6 +109,25 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
106
109
|
| coverage_file | No | Coverage map JSON (default <storage_path>/bestbuy_coverage.json; in-memory when unset). |
|
|
107
110
|
| proxy_session_max_requests | No | Requests before a sticky proxy session is rotated (default 50). |
|
|
108
111
|
| proxy_session_max_age | No | Seconds before a sticky proxy session is rotated (default 540). |
|
|
112
|
+
| debug_payload | No | availability only: log the full GraphQL JSON of every call; with storage_path also dump it to <storage_path>/payloads/ (default false). |
|
|
113
|
+
|
|
114
|
+
``type: availability`` output columns (one row per store × sku). Legacy contract:
|
|
115
|
+
``enabled``, ``locationId``, ``location_data``, ``availability`` (pickup ``fulfillmentType``),
|
|
116
|
+
``inStoreAvailability`` / ``inStoreAvailable`` (pickup eligible AND inventory in store),
|
|
117
|
+
``onShelfDisplay`` (kept for compatibility; the API has no shelf-display signal, so it stays
|
|
118
|
+
``NULL`` unless the input already carries it), ``pickupEligible``,
|
|
119
|
+
``availablePickupQuantity``, ``availableInStoreQuantity``, ``checked``.
|
|
120
|
+
Extended columns: ``availabilityTypes`` (``IN_STORE,PICKUP,SHIPPING,DELIVERY`` summary),
|
|
121
|
+
``condition``; pickup detail ``pickupMinHours``, ``pickupMinDate``, ``pickupMaxDate``,
|
|
122
|
+
``pickupFulfillDate``, ``pickupDisplayDateType``, ``pickupInStoreOnly``, ``pickupPreorderable``,
|
|
123
|
+
``pickupBackordered``, ``pickupWhenAvailable``, ``pickupRestrictions``, ``storeDistance``;
|
|
124
|
+
shipping (for the request zipcode) ``shippingEligible``, ``shippingZipcode``, ``shippingBackordered``,
|
|
125
|
+
``shippingInStoreOnly``, ``shippingPreorderable``, ``fulfillByVendor``, ``directToBoxEligible``,
|
|
126
|
+
``shippingSameDay``, ``shippingDefaultOption``, ``shippingFastestDate``, ``shippingFastestPrice``,
|
|
127
|
+
``shippingFreeDate``, ``shippingOptions`` (list of dicts); home delivery ``deliveryEligible``,
|
|
128
|
+
``deliverable``, ``deliveryBackordered``, ``deliveryInStoreOnly``, ``installationEligible``;
|
|
129
|
+
and ``fulfillment_data``, the raw JSON slice (button states, store, pickup entry, shipping,
|
|
130
|
+
delivery) the columns were derived from.
|
|
109
131
|
|
|
110
132
|
:consumes: dataframe
|
|
111
133
|
:produces: dataframe
|
|
@@ -196,6 +218,8 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
196
218
|
self._pool_size: int = kwargs.get('concurrency', 12)
|
|
197
219
|
self.proxy_session_max_requests: int = kwargs.get('proxy_session_max_requests', 50)
|
|
198
220
|
self.proxy_session_max_age: float = kwargs.get('proxy_session_max_age', 540)
|
|
221
|
+
# Debug: dump the raw GraphQL availability payload (log + optional file)
|
|
222
|
+
self.debug_payload: bool = kwargs.get('debug_payload', False)
|
|
199
223
|
self._session_pool: list[ProxySession] = []
|
|
200
224
|
self._pool_lock = asyncio.Lock()
|
|
201
225
|
self._pool_cursor: int = 0
|
|
@@ -989,7 +1013,10 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
989
1013
|
await self._release_session(session, status=r.status_code)
|
|
990
1014
|
if r.status_code == 200:
|
|
991
1015
|
self._num_iterations += 1
|
|
992
|
-
|
|
1016
|
+
payload = r.json()
|
|
1017
|
+
if self.debug_payload:
|
|
1018
|
+
await self._dump_availability_payload(payload, sku, store_id, nearby)
|
|
1019
|
+
return payload
|
|
993
1020
|
if r.status_code in (522, 502, 503, 504) and attempt < 3:
|
|
994
1021
|
await asyncio.sleep(0.5 * attempt)
|
|
995
1022
|
continue
|
|
@@ -1005,6 +1032,36 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
1005
1032
|
return None
|
|
1006
1033
|
return None
|
|
1007
1034
|
|
|
1035
|
+
async def _dump_availability_payload(self, payload: dict, sku: str, store_id: str,
|
|
1036
|
+
nearby: bool) -> None:
|
|
1037
|
+
"""Log the raw GraphQL fulfillment payload and optionally persist it to disk.
|
|
1038
|
+
|
|
1039
|
+
Enabled with ``debug_payload: true``. The full JSON is written to the logger
|
|
1040
|
+
and, when ``storage_path`` is configured, saved as
|
|
1041
|
+
``<storage_path>/payloads/availability_<sku>_<store_id>[_nearby].json``.
|
|
1042
|
+
|
|
1043
|
+
Args:
|
|
1044
|
+
payload: Decoded JSON returned by ``/gateway/graphql/fulfillment``.
|
|
1045
|
+
sku: Product SKU of the request.
|
|
1046
|
+
store_id: Seed store id of the request.
|
|
1047
|
+
nearby: Whether the request asked for nearby stores (bulk mode seed call).
|
|
1048
|
+
"""
|
|
1049
|
+
pretty = json.dumps(payload, indent=2, ensure_ascii=False, default=str)
|
|
1050
|
+
self._logger.info(
|
|
1051
|
+
f"BestBuy availability payload sku={sku} store={store_id} nearby={nearby}:\n{pretty}"
|
|
1052
|
+
)
|
|
1053
|
+
if not self.storage_path:
|
|
1054
|
+
return
|
|
1055
|
+
suffix = "_nearby" if nearby else ""
|
|
1056
|
+
out_dir = Path(self.storage_path).joinpath("payloads")
|
|
1057
|
+
out_file = out_dir.joinpath(f"availability_{sku}_{store_id}{suffix}.json")
|
|
1058
|
+
try:
|
|
1059
|
+
await asyncio.to_thread(out_dir.mkdir, parents=True, exist_ok=True)
|
|
1060
|
+
await asyncio.to_thread(out_file.write_text, pretty, encoding="utf-8")
|
|
1061
|
+
self._logger.debug(f"BestBuy: availability payload saved to {out_file}")
|
|
1062
|
+
except OSError as exc:
|
|
1063
|
+
self._logger.warning(f"BestBuy: could not save availability payload: {exc}")
|
|
1064
|
+
|
|
1008
1065
|
def _build_oxylabs_us_proxy_url(self, sessid: str | None = None) -> Optional[str]:
|
|
1009
1066
|
"""Build an Oxylabs Residential URL pinned to a US sticky session.
|
|
1010
1067
|
|
|
@@ -1254,46 +1311,150 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
1254
1311
|
if avail is None:
|
|
1255
1312
|
self._write_unavailable(idx, result, sku)
|
|
1256
1313
|
return row
|
|
1257
|
-
self._write_row(idx, avail, brand)
|
|
1314
|
+
self._write_row(idx, avail, brand, parse_sku_fulfillment(result, sku))
|
|
1258
1315
|
return row
|
|
1259
1316
|
|
|
1317
|
+
# Extended availability columns -> default value when the column is created.
|
|
1318
|
+
EXTENDED_AVAILABILITY_COLUMNS: dict[str, Any] = {
|
|
1319
|
+
'availabilityTypes': None,
|
|
1320
|
+
'condition': None,
|
|
1321
|
+
'pickupMinHours': None,
|
|
1322
|
+
'pickupMinDate': None,
|
|
1323
|
+
'pickupMaxDate': None,
|
|
1324
|
+
'pickupFulfillDate': None,
|
|
1325
|
+
'pickupDisplayDateType': None,
|
|
1326
|
+
'pickupInStoreOnly': None,
|
|
1327
|
+
'pickupPreorderable': None,
|
|
1328
|
+
'pickupBackordered': None,
|
|
1329
|
+
'pickupWhenAvailable': None,
|
|
1330
|
+
'pickupRestrictions': None,
|
|
1331
|
+
'storeDistance': None,
|
|
1332
|
+
'shippingEligible': None,
|
|
1333
|
+
'shippingZipcode': None,
|
|
1334
|
+
'shippingBackordered': None,
|
|
1335
|
+
'shippingInStoreOnly': None,
|
|
1336
|
+
'shippingPreorderable': None,
|
|
1337
|
+
'fulfillByVendor': None,
|
|
1338
|
+
'directToBoxEligible': None,
|
|
1339
|
+
'shippingSameDay': None,
|
|
1340
|
+
'shippingDefaultOption': None,
|
|
1341
|
+
'shippingFastestDate': None,
|
|
1342
|
+
'shippingFastestPrice': None,
|
|
1343
|
+
'shippingFreeDate': None,
|
|
1344
|
+
'shippingOptions': None,
|
|
1345
|
+
'deliveryEligible': None,
|
|
1346
|
+
'deliverable': None,
|
|
1347
|
+
'deliveryBackordered': None,
|
|
1348
|
+
'deliveryInStoreOnly': None,
|
|
1349
|
+
'installationEligible': None,
|
|
1350
|
+
'fulfillment_data': None,
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
def _ensure_extended_columns(self) -> None:
|
|
1354
|
+
"""Create any missing extended availability column (idempotent, object dtype)."""
|
|
1355
|
+
missing = [c for c in self.EXTENDED_AVAILABILITY_COLUMNS if c not in self.data.columns]
|
|
1356
|
+
for column in missing:
|
|
1357
|
+
self.data[column] = pd.Series(
|
|
1358
|
+
[self.EXTENDED_AVAILABILITY_COLUMNS[column]] * len(self.data),
|
|
1359
|
+
index=self.data.index, dtype=object,
|
|
1360
|
+
)
|
|
1361
|
+
|
|
1260
1362
|
def _write_unavailable(self, idx: Any, data: dict, sku: str) -> None:
|
|
1261
|
-
"""No
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
state = states[0].get('buttonState') or ''
|
|
1271
|
-
self.data.loc[idx, 'enabled'] = state not in NOT_ENABLED_STATES
|
|
1363
|
+
"""No per-store pickup info in the response: write the SKU-level columns and ``checked``.
|
|
1364
|
+
|
|
1365
|
+
``enabled`` still comes from the button state (legacy behaviour); shipping / delivery
|
|
1366
|
+
columns and ``fulfillment_data`` are filled when the payload carries them, so a
|
|
1367
|
+
ship-only SKU is still fully described.
|
|
1368
|
+
"""
|
|
1369
|
+
info = parse_sku_fulfillment(data, sku)
|
|
1370
|
+
self.data.loc[idx, 'enabled'] = info.enabled
|
|
1371
|
+
self._write_sku_columns(idx, None, info)
|
|
1272
1372
|
self.data.loc[idx, 'checked'] = True
|
|
1273
1373
|
|
|
1274
|
-
def
|
|
1374
|
+
def _write_sku_columns(self, idx: Any, avail: StoreAvailability | None,
|
|
1375
|
+
info: SkuFulfillment) -> None:
|
|
1376
|
+
"""Write the SKU-level (button state, shipping, delivery) columns plus the JSON slice.
|
|
1377
|
+
|
|
1378
|
+
Args:
|
|
1379
|
+
idx: DataFrame index label.
|
|
1380
|
+
avail: Per-store availability when known (used for the summary / JSON), else None.
|
|
1381
|
+
info: SKU-level fulfillment info parsed from the same response.
|
|
1382
|
+
"""
|
|
1383
|
+
self._ensure_extended_columns()
|
|
1384
|
+
d = self.data
|
|
1385
|
+
types = availability_types(avail, info)
|
|
1386
|
+
d.at[idx, 'availabilityTypes'] = ','.join(types) if types else None
|
|
1387
|
+
d.at[idx, 'condition'] = (avail.condition if avail and avail.condition else None) or info.condition
|
|
1388
|
+
d.at[idx, 'shippingEligible'] = info.shipping_eligible
|
|
1389
|
+
d.at[idx, 'shippingZipcode'] = info.shipping_zipcode
|
|
1390
|
+
d.at[idx, 'shippingBackordered'] = info.shipping_backordered
|
|
1391
|
+
d.at[idx, 'shippingInStoreOnly'] = info.shipping_in_store_only
|
|
1392
|
+
d.at[idx, 'shippingPreorderable'] = info.shipping_preorderable
|
|
1393
|
+
d.at[idx, 'fulfillByVendor'] = info.fulfill_by_vendor
|
|
1394
|
+
d.at[idx, 'directToBoxEligible'] = info.direct_to_box_eligible
|
|
1395
|
+
d.at[idx, 'shippingSameDay'] = info.shipping_same_day
|
|
1396
|
+
d.at[idx, 'shippingDefaultOption'] = info.shipping_default_option
|
|
1397
|
+
d.at[idx, 'shippingFastestDate'] = info.shipping_fastest_date
|
|
1398
|
+
d.at[idx, 'shippingFastestPrice'] = info.shipping_fastest_price
|
|
1399
|
+
d.at[idx, 'shippingFreeDate'] = info.shipping_free_date
|
|
1400
|
+
d.at[idx, 'shippingOptions'] = (
|
|
1401
|
+
[o.model_dump() for o in info.shipping_options] if info.shipping_options else None
|
|
1402
|
+
)
|
|
1403
|
+
d.at[idx, 'deliveryEligible'] = info.delivery_eligible
|
|
1404
|
+
d.at[idx, 'deliverable'] = info.deliverable
|
|
1405
|
+
d.at[idx, 'deliveryBackordered'] = info.delivery_backordered
|
|
1406
|
+
d.at[idx, 'deliveryInStoreOnly'] = info.delivery_in_store_only
|
|
1407
|
+
installation = [
|
|
1408
|
+
x for x in (
|
|
1409
|
+
avail.installation_eligible if avail else None,
|
|
1410
|
+
info.shipping_installation_eligible,
|
|
1411
|
+
info.delivery_installation_eligible,
|
|
1412
|
+
) if x is not None
|
|
1413
|
+
]
|
|
1414
|
+
d.at[idx, 'installationEligible'] = any(installation) if installation else None
|
|
1415
|
+
d.at[idx, 'fulfillment_data'] = fulfillment_slice(avail, info)
|
|
1416
|
+
|
|
1417
|
+
def _write_row(self, idx: Any, avail: StoreAvailability, brand: Any,
|
|
1418
|
+
info: SkuFulfillment | None = None) -> None:
|
|
1275
1419
|
"""Write the output-contract columns for one DataFrame row and set checked=True.
|
|
1276
1420
|
|
|
1277
1421
|
Args:
|
|
1278
1422
|
idx: DataFrame index label.
|
|
1279
1423
|
avail: Normalized availability for that row's (store, sku).
|
|
1280
1424
|
brand: Brand value to copy into the row.
|
|
1425
|
+
info: SKU-level fulfillment info (button state, shipping, delivery) parsed from the
|
|
1426
|
+
same response. When omitted only the per-store columns are written.
|
|
1281
1427
|
"""
|
|
1282
1428
|
is_in_store_pickup = (
|
|
1283
1429
|
avail.pickup_eligible and avail.instore_inventory and avail.fulfillment_type == 'PICKUP'
|
|
1284
1430
|
)
|
|
1285
|
-
self.
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1431
|
+
self._ensure_extended_columns()
|
|
1432
|
+
d = self.data
|
|
1433
|
+
d.loc[idx, 'enabled'] = avail.enabled
|
|
1434
|
+
d.loc[idx, 'locationId'] = avail.store.get('storeId') or avail.store_id
|
|
1435
|
+
d.at[idx, 'brand'] = brand
|
|
1436
|
+
d.at[idx, 'location_data'] = avail.store
|
|
1437
|
+
d.loc[idx, 'availability'] = avail.fulfillment_type
|
|
1438
|
+
d.loc[idx, 'inStoreAvailability'] = is_in_store_pickup
|
|
1439
|
+
d.loc[idx, 'inStoreAvailable'] = is_in_store_pickup
|
|
1440
|
+
d.loc[idx, 'pickupEligible'] = avail.pickup_eligible
|
|
1441
|
+
d.loc[idx, 'availablePickupQuantity'] = avail.quantity if avail.pickup_eligible else 0
|
|
1442
|
+
d.loc[idx, 'availableInStoreQuantity'] = avail.quantity if is_in_store_pickup else 0
|
|
1443
|
+
# pickup detail
|
|
1444
|
+
d.at[idx, 'pickupMinHours'] = avail.min_pickup_hours
|
|
1445
|
+
d.at[idx, 'pickupMinDate'] = avail.min_date
|
|
1446
|
+
d.at[idx, 'pickupMaxDate'] = avail.max_date
|
|
1447
|
+
d.at[idx, 'pickupFulfillDate'] = avail.fulfill_date
|
|
1448
|
+
d.at[idx, 'pickupDisplayDateType'] = avail.display_date_type
|
|
1449
|
+
d.at[idx, 'pickupInStoreOnly'] = avail.in_store_only
|
|
1450
|
+
d.at[idx, 'pickupPreorderable'] = avail.preorderable
|
|
1451
|
+
d.at[idx, 'pickupBackordered'] = avail.backordered
|
|
1452
|
+
d.at[idx, 'pickupWhenAvailable'] = avail.when_available_flag
|
|
1453
|
+
d.at[idx, 'pickupRestrictions'] = avail.restrictions
|
|
1454
|
+
d.at[idx, 'storeDistance'] = avail.distance
|
|
1455
|
+
if info is not None:
|
|
1456
|
+
self._write_sku_columns(idx, avail, info)
|
|
1457
|
+
d.loc[idx, 'checked'] = True
|
|
1297
1458
|
|
|
1298
1459
|
def column_exists(self, column: str, default_val: Any = None):
|
|
1299
1460
|
if column not in self.data.columns:
|
|
@@ -1501,12 +1662,13 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
1501
1662
|
self.column_exists('locationId')
|
|
1502
1663
|
self.column_exists('availability')
|
|
1503
1664
|
self.column_exists('inStoreAvailability')
|
|
1504
|
-
self.column_exists('onShelfDisplay'
|
|
1665
|
+
self.column_exists('onShelfDisplay') # not provided by the API: NULL unless set upstream
|
|
1505
1666
|
self.column_exists('availableInStoreQuantity', 0)
|
|
1506
1667
|
self.column_exists('inStoreAvailable', False)
|
|
1507
1668
|
self.column_exists('pickupEligible', False)
|
|
1508
1669
|
self.column_exists('availablePickupQuantity', 0)
|
|
1509
1670
|
self.column_exists('enabled', False)
|
|
1671
|
+
self._ensure_extended_columns()
|
|
1510
1672
|
self.data['checked'] = False # Add 'checked' flag column
|
|
1511
1673
|
self._logger.info(
|
|
1512
1674
|
f"BestBuy availability: {len(self.data)} rows, bulk_mode={self.bulk_mode}"
|
|
@@ -1591,11 +1753,12 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
1591
1753
|
return
|
|
1592
1754
|
by_store, returned, _max = parse_fulfillment(data, sku, store_id)
|
|
1593
1755
|
avail = by_store.get(store_id) or (by_store.get(returned[0]) if returned else None)
|
|
1756
|
+
info = parse_sku_fulfillment(data, sku)
|
|
1594
1757
|
for idx in idxs:
|
|
1595
1758
|
if avail is None:
|
|
1596
1759
|
self._write_unavailable(idx, data, sku)
|
|
1597
1760
|
else:
|
|
1598
|
-
self._write_row(idx, avail, self.data.at[idx, 'brand'])
|
|
1761
|
+
self._write_row(idx, avail, self.data.at[idx, 'brand'], info)
|
|
1599
1762
|
|
|
1600
1763
|
def _apply_response(self, sku: str, seed: str, data: dict, targets: dict[str, Target]) -> set[str]:
|
|
1601
1764
|
"""Parse one nearby response, write every covered target row, update coverage.
|
|
@@ -1604,13 +1767,14 @@ class BestBuy(FlowComponent, SeleniumService, HTTPService):
|
|
|
1604
1767
|
The target store ids covered by the response.
|
|
1605
1768
|
"""
|
|
1606
1769
|
by_store, returned, max_dist = parse_fulfillment(data, sku, seed)
|
|
1770
|
+
info = parse_sku_fulfillment(data, sku)
|
|
1607
1771
|
covered: set[str] = set()
|
|
1608
1772
|
for sid, avail in by_store.items():
|
|
1609
1773
|
if sid not in targets:
|
|
1610
1774
|
continue
|
|
1611
1775
|
idxs = self._row_index.get((sid, sku), [])
|
|
1612
1776
|
for idx in idxs:
|
|
1613
|
-
self._write_row(idx, avail, self.data.at[idx, 'brand'])
|
|
1777
|
+
self._write_row(idx, avail, self.data.at[idx, 'brand'], info)
|
|
1614
1778
|
if idxs:
|
|
1615
1779
|
self._seed_resolved.add((sid, sku))
|
|
1616
1780
|
covered.add(sid)
|
|
@@ -37,6 +37,13 @@ from ..interfaces.copy_to import CopyTo, dtypes
|
|
|
37
37
|
from ..utils.json import json_decoder, json_encoder
|
|
38
38
|
|
|
39
39
|
|
|
40
|
+
# PostgreSQL type names (as reported by asyncpg) that store plain text.
|
|
41
|
+
PG_TEXT_TYPES = frozenset({"text", "varchar", "bpchar", "character varying", "character", "name"})
|
|
42
|
+
|
|
43
|
+
# Column names that collide with attributes used internally by the dynamic
|
|
44
|
+
# asyncdb Model while rendering the CREATE TABLE statement.
|
|
45
|
+
RESERVED_MODEL_COLUMNS = frozenset({"columns", "Meta"})
|
|
46
|
+
|
|
40
47
|
# adding support for primary keys on raw tables
|
|
41
48
|
pk_sentence = """ALTER TABLE {schema}.{table}
|
|
42
49
|
ADD CONSTRAINT {schema}_{table}_pkey PRIMARY KEY({fields});"""
|
|
@@ -44,6 +51,43 @@ unique_sentence = """ALTER TABLE {schema}.{table}
|
|
|
44
51
|
ADD CONSTRAINT unq_{schema}_{table} UNIQUE({fields});"""
|
|
45
52
|
|
|
46
53
|
|
|
54
|
+
def quote_identifier(name: str) -> str:
|
|
55
|
+
"""Quote a PostgreSQL identifier so its case is preserved.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
name: Column name as it appears in the DataFrame.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
The name wrapped in double quotes, with embedded quotes escaped.
|
|
62
|
+
"""
|
|
63
|
+
return '"' + name.replace('"', '""') + '"'
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
def quote_ddl_columns(sql: str, columns: list[str]) -> str:
|
|
67
|
+
"""Quote the column identifiers of an asyncdb-rendered ``CREATE TABLE``.
|
|
68
|
+
|
|
69
|
+
asyncdb emits one `` <name> <type> ...`` line per column with the name
|
|
70
|
+
unquoted, so PostgreSQL folds it to lowercase and a later ``COPY`` using
|
|
71
|
+
the DataFrame's exact (quoted) names fails with *Undefined Column*.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
sql: DDL returned by ``Model.model(dialect="sql")``.
|
|
75
|
+
columns: Column names in the order they were given to the model.
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
The same DDL with every column identifier double-quoted.
|
|
79
|
+
"""
|
|
80
|
+
for col in columns:
|
|
81
|
+
sql = re.sub(
|
|
82
|
+
rf"^(\s*){re.escape(col)}(?=\s)",
|
|
83
|
+
lambda m, c=col: f"{m.group(1)}{quote_identifier(c)}",
|
|
84
|
+
sql,
|
|
85
|
+
count=1,
|
|
86
|
+
flags=re.MULTILINE,
|
|
87
|
+
)
|
|
88
|
+
return sql
|
|
89
|
+
|
|
90
|
+
|
|
47
91
|
class CopyToPg(CopyTo):
|
|
48
92
|
"""
|
|
49
93
|
CopyToPg
|
|
@@ -145,6 +189,17 @@ class CopyToPg(CopyTo):
|
|
|
145
189
|
return total
|
|
146
190
|
|
|
147
191
|
async def _create_table(self):
|
|
192
|
+
"""Create the destination table from the DataFrame columns.
|
|
193
|
+
|
|
194
|
+
Builds a dynamic ``asyncdb`` Model from the DataFrame dtypes and
|
|
195
|
+
renders it as a ``CREATE TABLE`` statement. Column names that
|
|
196
|
+
collide with attributes the model machinery needs (``columns``,
|
|
197
|
+
``Meta``) cannot be represented and raise a ``ComponentError``.
|
|
198
|
+
|
|
199
|
+
Raises:
|
|
200
|
+
ComponentError: when no primary key is defined, a column name
|
|
201
|
+
is reserved, or the DDL execution fails.
|
|
202
|
+
"""
|
|
148
203
|
_pk = self.create_table.get("pk", None)
|
|
149
204
|
_unq = self.create_table.get("unique", None)
|
|
150
205
|
_drop = self.create_table.get("drop", False)
|
|
@@ -154,6 +209,13 @@ class CopyToPg(CopyTo):
|
|
|
154
209
|
)
|
|
155
210
|
# extracting columns:
|
|
156
211
|
columns = self.data.columns.tolist()
|
|
212
|
+
reserved = RESERVED_MODEL_COLUMNS.intersection(columns)
|
|
213
|
+
if reserved:
|
|
214
|
+
raise ComponentError(
|
|
215
|
+
f"CopyToPg: Error on Table Creation: column name(s) "
|
|
216
|
+
f"{sorted(reserved)} are reserved by the table model; "
|
|
217
|
+
"rename them before CopyToPg."
|
|
218
|
+
)
|
|
157
219
|
cols = []
|
|
158
220
|
for col in columns:
|
|
159
221
|
if col in self._json_columns:
|
|
@@ -166,22 +228,37 @@ class CopyToPg(CopyTo):
|
|
|
166
228
|
f = (col, Optional[bytes], Field(default=None, nullable=True, db_type='bytea'))
|
|
167
229
|
else:
|
|
168
230
|
datatype = self.data.dtypes[col]
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
231
|
+
if is_datetime64_any_dtype(datatype):
|
|
232
|
+
# any precision (ns/us/ms/s); tz-aware keeps the offset
|
|
233
|
+
db_type = (
|
|
234
|
+
"timestamp with time zone"
|
|
235
|
+
if isinstance(datatype, pd.DatetimeTZDtype)
|
|
236
|
+
else "timestamp without time zone"
|
|
237
|
+
)
|
|
238
|
+
f = (
|
|
239
|
+
col,
|
|
240
|
+
Optional[datetime.datetime],
|
|
241
|
+
Field(default=None, nullable=True, db_type=db_type),
|
|
242
|
+
)
|
|
243
|
+
else:
|
|
244
|
+
try:
|
|
245
|
+
t = dtypes[str(datatype)]
|
|
246
|
+
except KeyError:
|
|
247
|
+
t = str
|
|
248
|
+
f = (col, t)
|
|
174
249
|
cols.append(f)
|
|
175
250
|
try:
|
|
176
251
|
cls = Model.make_model(
|
|
177
252
|
name=self.tablename, schema=self.schema, fields=cols
|
|
178
253
|
)
|
|
179
|
-
#
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
254
|
+
# Call the classmethod through its underlying function: a column
|
|
255
|
+
# named "model" becomes a field on the dynamic class and would
|
|
256
|
+
# shadow ``Model.model`` (resolving to None).
|
|
257
|
+
if sql := Model.model.__func__(cls, dialect="sql"):
|
|
258
|
+
# Quote identifiers so the table keeps the DataFrame's exact
|
|
259
|
+
# column names (the COPY path quotes them too).
|
|
260
|
+
sql = quote_ddl_columns(sql, columns)
|
|
261
|
+
self._logger.debug(f"Create Table SQL: {sql}")
|
|
185
262
|
async with await self._connection.connection() as conn:
|
|
186
263
|
if _drop is True:
|
|
187
264
|
result, error = await conn.execute(
|
|
@@ -198,7 +275,7 @@ class CopyToPg(CopyTo):
|
|
|
198
275
|
pk = pk_sentence.format(
|
|
199
276
|
schema=self.schema,
|
|
200
277
|
table=self.tablename,
|
|
201
|
-
fields=",".join(_pk),
|
|
278
|
+
fields=",".join(quote_identifier(c) for c in _pk),
|
|
202
279
|
)
|
|
203
280
|
_primary, error = await conn.execute(sentence=pk)
|
|
204
281
|
self._logger.debug(
|
|
@@ -209,7 +286,7 @@ class CopyToPg(CopyTo):
|
|
|
209
286
|
unique = unique_sentence.format(
|
|
210
287
|
schema=self.schema,
|
|
211
288
|
table=self.tablename,
|
|
212
|
-
fields=",".join(_unq),
|
|
289
|
+
fields=",".join(quote_identifier(c) for c in _unq),
|
|
213
290
|
)
|
|
214
291
|
_unique, error = await conn.execute(sentence=unique)
|
|
215
292
|
self._logger.debug(
|
|
@@ -284,6 +361,38 @@ class CopyToPg(CopyTo):
|
|
|
284
361
|
self._logger.error(f"Error getting column types: {e}")
|
|
285
362
|
return {}
|
|
286
363
|
|
|
364
|
+
def _coerce_text_columns(self, pg_column_types: list[dict] | dict) -> None:
|
|
365
|
+
"""Stringify scalar values bound for columns the table stores as text.
|
|
366
|
+
|
|
367
|
+
``object`` columns holding ints, floats, bools or dates (for example a
|
|
368
|
+
``pickup_min_hours`` that is ``None`` on most rows) are created as
|
|
369
|
+
``varchar`` but the binary COPY receives the raw Python value and
|
|
370
|
+
asyncpg rejects it with *expected str, got int*.
|
|
371
|
+
|
|
372
|
+
Args:
|
|
373
|
+
pg_column_types: Result of :meth:`_get_column_types`; the
|
|
374
|
+
``{}`` fallback returned on lookup errors is ignored.
|
|
375
|
+
"""
|
|
376
|
+
if not isinstance(pg_column_types, list):
|
|
377
|
+
return
|
|
378
|
+
text_cols = [
|
|
379
|
+
col["name"] for col in pg_column_types
|
|
380
|
+
if col.get("pg_type") in PG_TEXT_TYPES
|
|
381
|
+
]
|
|
382
|
+
skip = set(self._json_columns) | set(self._array_columns) | set(self._vector_columns)
|
|
383
|
+
scalars = (bool, int, float, Decimal, np.generic, datetime.date, datetime.datetime, pd.Timestamp)
|
|
384
|
+
converted = []
|
|
385
|
+
for col in text_cols:
|
|
386
|
+
if col not in self.data.columns or col in skip:
|
|
387
|
+
continue
|
|
388
|
+
series = self.data[col]
|
|
389
|
+
mask = series.map(lambda v: isinstance(v, scalars))
|
|
390
|
+
if mask.any():
|
|
391
|
+
self.data[col] = series.where(~mask, series.map(str))
|
|
392
|
+
converted.append(col)
|
|
393
|
+
if converted:
|
|
394
|
+
self._logger.debug(f"CopyToPg: coerced to text for {self.schema}.{self.tablename}: {converted}")
|
|
395
|
+
|
|
287
396
|
async def _copy_dataframe(self):
|
|
288
397
|
# insert data directly into table
|
|
289
398
|
columns = list(self.data.columns)
|
|
@@ -437,7 +546,6 @@ class CopyToPg(CopyTo):
|
|
|
437
546
|
async with await self._connection.connection() as conn:
|
|
438
547
|
# Get PostgreSQL column types
|
|
439
548
|
pg_column_types = await self._get_column_types(conn)
|
|
440
|
-
# TODO: using the column types to refine the conversion
|
|
441
549
|
|
|
442
550
|
# Handle datetime columns - replace NaT with None
|
|
443
551
|
datetime_cols = self.data.select_dtypes(include=['datetime64[ns]', 'datetime64[ns, UTC]'])
|
|
@@ -494,6 +602,8 @@ class CopyToPg(CopyTo):
|
|
|
494
602
|
|
|
495
603
|
# 1️⃣ Turn every NaN / NA / NaT into Python None
|
|
496
604
|
self.data = self.data.astype(object).where(pd.notnull(self.data), None)
|
|
605
|
+
# 2️⃣ Numbers / bools heading to text columns must be strings for COPY
|
|
606
|
+
self._coerce_text_columns(pg_column_types)
|
|
497
607
|
tuples = list(zip(*map(self.data.get, self.data)))
|
|
498
608
|
|
|
499
609
|
async with await self._connection.connection() as conn:
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "BestBuy",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"category": "Other",
|
|
5
|
+
"description": "Extract Best Buy information (stores, products, reviews, product availability) by combining the Best Buy API with web scraping. ``type: availability`` checks per-store pickup availability through the GraphQL fulfillment endpoint over sticky Oxylabs US sessions. With ``bulk_mode: true`` it runs a greedy set-cover over the endpoint's nearby-store fan-out, so the call count drops from stores x skus to roughly seeds x skus.",
|
|
6
|
+
"examples": [
|
|
7
|
+
"BestBuy:\n type: availability\n brand: Epson\n bulk_mode: true\n storage_path: /home/ubuntu/symbits/bestbuy/\n concurrency: 12"
|
|
8
|
+
],
|
|
9
|
+
"schema": {
|
|
10
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
11
|
+
"type": "object",
|
|
12
|
+
"title": "BestBuy",
|
|
13
|
+
"description": "Extract Best Buy information (stores, products, reviews, product availability) by combining the Best Buy API with web scraping. ``type: availability`` checks per-store pickup availability through the GraphQL fulfillment endpoint over sticky Oxylabs US sessions. With ``bulk_mode: true`` it runs a greedy set-cover over the endpoint's nearby-store fan-out, so the call count drops from stores x skus to roughly seeds x skus.",
|
|
14
|
+
"properties": {
|
|
15
|
+
"type": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"description": "Function to run: availability, product, reviews, products, products_by_brand, stores, product_api."
|
|
18
|
+
},
|
|
19
|
+
"brand": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"description": "Brand to filter or tag products with."
|
|
22
|
+
},
|
|
23
|
+
"product_info": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"description": "Fetch extra product information (default false)."
|
|
26
|
+
},
|
|
27
|
+
"use_proxy": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"description": "Opt in to the proxy for non-availability scraping (default false)."
|
|
30
|
+
},
|
|
31
|
+
"use_storage": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "Reuse a same-day CSV result from storage_path (default false)."
|
|
34
|
+
},
|
|
35
|
+
"storage_path": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Directory for stored results and the default coverage file. Required when use_storage is true."
|
|
38
|
+
},
|
|
39
|
+
"chunk_size": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Rows per processing chunk (default 100)."
|
|
42
|
+
},
|
|
43
|
+
"task_parts": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"description": "Number of task partitions (default 10)."
|
|
46
|
+
},
|
|
47
|
+
"concurrency": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "Max concurrent requests and sticky proxy-session pool size (default 12)."
|
|
50
|
+
},
|
|
51
|
+
"bulk_mode": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "availability only: greedy set-cover over GraphQL nearby stores (default false = one call per row). The `enabled` column comes from the SKU button state returned with the seed call."
|
|
54
|
+
},
|
|
55
|
+
"coverage_file": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "Coverage map JSON (default <storage_path>/bestbuy_coverage.json; in-memory when unset)."
|
|
58
|
+
},
|
|
59
|
+
"proxy_session_max_requests": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Requests before a sticky proxy session is rotated (default 50)."
|
|
62
|
+
},
|
|
63
|
+
"proxy_session_max_age": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"description": "Seconds before a sticky proxy session is rotated (default 540)."
|
|
66
|
+
},
|
|
67
|
+
"debug_payload": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "availability only: log the full GraphQL JSON of every call; with storage_path also dump it to <storage_path>/payloads/ (default false)."
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"required": [
|
|
73
|
+
"type"
|
|
74
|
+
],
|
|
75
|
+
"x-flowtask-io": {
|
|
76
|
+
"consumes": "dataframe",
|
|
77
|
+
"produces": "dataframe"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|