flowtask 5.12.18__tar.gz → 5.13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flowtask-5.12.18 → flowtask-5.13.0}/PKG-INFO +9 -8
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToPg.py +1 -2
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MarketClustering.py +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OpenStreetMap.py +2 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SchedulingVisits.py +2 -2
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/costco.py +14 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableSchema.py +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TransformRows/TransformRows.py +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TransformRows/functions.py +3 -3
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/workday.py +3 -0
- flowtask-5.13.0/flowtask/components/tDiff.py +449 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tJoin.py +1 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tMap/functions.py +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tMerge.py +53 -6
- flowtask-5.13.0/flowtask/documentation/generated/components/tDiff.doc.json +76 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tJoin.doc.json +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/dt.py +5 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/version.py +1 -1
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/PKG-INFO +9 -8
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/SOURCES.txt +2 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/requires.txt +8 -7
- {flowtask-5.12.18 → flowtask-5.13.0}/pyproject.toml +40 -17
- {flowtask-5.12.18 → flowtask-5.13.0}/CONTRIBUTING.md +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/INSTALL +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/LICENSE +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/MANIFEST.in +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/README.md +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/__main__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/bots/check.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ATT.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Azure.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/BestBuy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CallAnalysis.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Costco.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DateList.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromGoogleDrive.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadFromSmartsheet.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileList.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GenData.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/HTTPClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/IF.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Loop.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/NextTask.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OpenWithBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/OpenWithPandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotAgent.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ProductReportBot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/QS.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/RESTClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SearchQuery.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendNotify/component.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/tractor_supply.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/verizon.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/scraper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Staples.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SweetSpotScore/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SweetSpotScore/component.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/SweetSpotScore/layers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Switch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Target.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Wait.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/flow.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/google.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/group.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/py.typed +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tFlatten.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/user.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/conf.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/categories.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/DownloadFromSmartsheet.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/NextTask.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ParrotAgent.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ServiceScraperStores.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tDictKey.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tFlatten.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generated/index.json +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/download.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/log.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/notify_event.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/task.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/teams.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/events/manager.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/exceptions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/docker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/events.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/local.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/publish.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/registry.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/factory/agent.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/factory/composer.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/factory/parser.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/factory/validator.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/handlers/component.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/step.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/mail.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/sharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/AzureGraph.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/O365Client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/OverpassGeocoding.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/copy_to.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/parrot/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/parrot/config.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/routing.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/engine.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/extractors/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/extractors/count.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/extractors/gravity.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/extractors/nearest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/scoring/spatial.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/search.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/skip_policy.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/config.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/custom_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/time_block_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/handlers/workers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/clock_event.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/models/worker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/rest.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/zammad.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/runner.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/files/model.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/files/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/README.md +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/changelog.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/handlers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/health.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/models.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/store.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/templates.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/maintenance/windows.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/chain.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/chainer.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/command.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/exchange.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/task.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/template/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/tests.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/types/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/constants.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/executor.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/mail.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/msgraph_patch.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/stats.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/uv.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask/utils/validators.py +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/setup.cfg +0 -0
- {flowtask-5.12.18 → flowtask-5.13.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowtask
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.13.0
|
|
4
4
|
Summary: Framework for Task orchestration
|
|
5
5
|
Author-email: Jesus Lara <jesuslarag@gmail.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -109,8 +109,9 @@ Requires-Dist: querysource>=3.17.0
|
|
|
109
109
|
Requires-Dist: asyncdb[all]>=2.11.7
|
|
110
110
|
Requires-Dist: navconfig[default,uvloop]>=1.7.13
|
|
111
111
|
Requires-Dist: navigator-auth>=0.15.8
|
|
112
|
+
Requires-Dist: aiohttp>=3.14
|
|
112
113
|
Requires-Dist: navigator-api[locale,uvloop]>=2.12.22
|
|
113
|
-
Requires-Dist: ai-parrot[llms]>=0.
|
|
114
|
+
Requires-Dist: ai-parrot[llms]>=1.0.5
|
|
114
115
|
Requires-Dist: msal<2,>=1.30.0
|
|
115
116
|
Requires-Dist: azure-core<2,>=1.38.0
|
|
116
117
|
Requires-Dist: azure-identity<2,>=1.20.0
|
|
@@ -132,12 +133,12 @@ Requires-Dist: gitpython>=3.1.50; extra == "git"
|
|
|
132
133
|
Provides-Extra: scoring
|
|
133
134
|
Requires-Dist: h3>=4.0; extra == "scoring"
|
|
134
135
|
Provides-Extra: ai
|
|
135
|
-
Requires-Dist: ai-parrot[agents,graphindex,images,llms,retrieval]>=0.
|
|
136
|
-
Requires-Dist: ai-parrot-loaders[audio,document,ebook,ml,pdf,scraping,video,web,youtube]>=
|
|
137
|
-
Requires-Dist: ai-parrot-tools[analysis,arxiv,aws,codeinterpreter,db,docker,excel,finance,flowtask,git,google,jira,messaging,pdf,pulumi,sandbox,scraping,sitesearch,slack,weather,wikipedia]>=
|
|
138
|
-
Requires-Dist: ai-parrot-pipelines>=
|
|
139
|
-
Requires-Dist: ai-parrot-server[all]>=
|
|
140
|
-
Requires-Dist: ai-parrot-integrations[all]>=
|
|
136
|
+
Requires-Dist: ai-parrot[agents,graphindex,images,llms,retrieval]>=1.0.5; extra == "ai"
|
|
137
|
+
Requires-Dist: ai-parrot-loaders[audio,document,ebook,ml,pdf,scraping,video,web,youtube]>=1.0.5; extra == "ai"
|
|
138
|
+
Requires-Dist: ai-parrot-tools[analysis,arxiv,aws,codeinterpreter,db,docker,excel,finance,flowtask,git,google,jira,messaging,pdf,pulumi,sandbox,scraping,sitesearch,slack,weather,wikipedia]>=1.0.5; extra == "ai"
|
|
139
|
+
Requires-Dist: ai-parrot-pipelines>=1.0.5; extra == "ai"
|
|
140
|
+
Requires-Dist: ai-parrot-server[all]>=1.0.5; extra == "ai"
|
|
141
|
+
Requires-Dist: ai-parrot-integrations[all]>=1.0.5; extra == "ai"
|
|
141
142
|
Provides-Extra: dev
|
|
142
143
|
Requires-Dist: pytest>=5.4.0; extra == "dev"
|
|
143
144
|
Requires-Dist: coverage; extra == "dev"
|
|
@@ -10,7 +10,6 @@ from typing import Sequence, Union
|
|
|
10
10
|
import pandas as pd
|
|
11
11
|
from pandas.api.types import (
|
|
12
12
|
is_datetime64_any_dtype,
|
|
13
|
-
is_datetime64tz_dtype,
|
|
14
13
|
is_integer_dtype,
|
|
15
14
|
is_float_dtype,
|
|
16
15
|
is_bool_dtype
|
|
@@ -461,7 +460,7 @@ class CopyToPg(CopyTo):
|
|
|
461
460
|
utc=True # parse as UTC if a tz string is present
|
|
462
461
|
)
|
|
463
462
|
# After the coercion, act only on tz-aware columns
|
|
464
|
-
if
|
|
463
|
+
if isinstance(self.data[col].dtype, pd.DatetimeTZDtype):
|
|
465
464
|
# tz_localize(None) drops the tz info but keeps the *wall time*
|
|
466
465
|
# e.g. 2025-03-20 19:11:09+00:00 → 2025-03-20 19:11:09
|
|
467
466
|
self.data[col] = self.data[col].dt.tz_localize(None)
|
|
@@ -9987,7 +9987,7 @@ class MarketClustering(FlowComponent):
|
|
|
9987
9987
|
partition = self._partition_mask(self._data)
|
|
9988
9988
|
total = 0
|
|
9989
9989
|
for _ in range(max(1, max_rounds)):
|
|
9990
|
-
markets = self._data.loc[idx, self._cluster_id].to_numpy()
|
|
9990
|
+
markets = self._data.loc[idx, self._cluster_id].to_numpy(copy=True)
|
|
9991
9991
|
# Full headcount (including sub-cluster rows) for capacity
|
|
9992
9992
|
# checks — they count toward the market even though they
|
|
9993
9993
|
# cannot be moved by this pass.
|
|
@@ -964,6 +964,8 @@ class OpenStreetMap(FlowComponent):
|
|
|
964
964
|
clon = float(row[self.lon_column])
|
|
965
965
|
except (TypeError, ValueError, KeyError):
|
|
966
966
|
return idx, None
|
|
967
|
+
if pd.isna(clat) or pd.isna(clon):
|
|
968
|
+
return idx, None
|
|
967
969
|
query = self._build_geocode_query(row, clat, clon)
|
|
968
970
|
if query is None:
|
|
969
971
|
return idx, None
|
|
@@ -564,7 +564,7 @@ class SchedulingVisits(FlowComponent):
|
|
|
564
564
|
`_pack_visits()` relies on to pick the ISO-week vs. monthly window.
|
|
565
565
|
"""
|
|
566
566
|
frequency = visit_frequency
|
|
567
|
-
if cadence:
|
|
567
|
+
if isinstance(cadence, str) and cadence:
|
|
568
568
|
parsed = self._parse_cadence(cadence)
|
|
569
569
|
if parsed:
|
|
570
570
|
frequency = parsed[1] # only the frequency label, not the rule
|
|
@@ -591,7 +591,7 @@ class SchedulingVisits(FlowComponent):
|
|
|
591
591
|
# Uses _parse_cadence() which regexes the full leading integer —
|
|
592
592
|
# the old ``int(cadence[0])`` parsed only the first character, so
|
|
593
593
|
# ``"10xWeek"`` silently became 1 visit (defect 4 fix).
|
|
594
|
-
if cadence:
|
|
594
|
+
if isinstance(cadence, str) and cadence:
|
|
595
595
|
parsed = self._parse_cadence(cadence)
|
|
596
596
|
if parsed:
|
|
597
597
|
visit_rule, visit_frequency = parsed
|
{flowtask-5.12.18 → flowtask-5.13.0}/flowtask/components/ServiceScraperStores/retailers/costco.py
RENAMED
|
@@ -22,6 +22,7 @@ For a quick test run, pass `args: {limit: 10}` in the task YAML to stop
|
|
|
22
22
|
after the first 10 warehouses found (see search()) instead of crawling
|
|
23
23
|
every state.
|
|
24
24
|
"""
|
|
25
|
+
import html as html_lib
|
|
25
26
|
import json
|
|
26
27
|
import re
|
|
27
28
|
import time
|
|
@@ -46,6 +47,13 @@ US_STATE_ABBRS = [
|
|
|
46
47
|
|
|
47
48
|
WAREHOUSE_LINK_RE = re.compile(r'href="(/w/-/[a-z0-9-]+/[a-z0-9-]+/(\d+))"')
|
|
48
49
|
|
|
50
|
+
#: The warehouse's marketing name (e.g. "Aurora Village Warehouse") - has no
|
|
51
|
+
#: relation to its mailing address city (store 106 is "Aurora Village" but
|
|
52
|
+
#: sits in Shoreline, WA) and isn't in the LocalBusiness JSON-LD block at all
|
|
53
|
+
#: (verified 2026-09-20 against costco.com/w/-/wa/shoreline/106) - it's only
|
|
54
|
+
#: in this plain <h1>, so it needs its own regex.
|
|
55
|
+
WAREHOUSE_NAME_RE = re.compile(r'<h1[^>]*>(.*?)</h1>', re.S)
|
|
56
|
+
|
|
49
57
|
DAY_ORDER = [
|
|
50
58
|
("mon", "Monday"), ("tue", "Tuesday"), ("wed", "Wednesday"),
|
|
51
59
|
("thu", "Thursday"), ("fri", "Friday"), ("sat", "Saturday"),
|
|
@@ -71,6 +79,7 @@ class CostcoStrategy(RetailerStrategy):
|
|
|
71
79
|
field_map = {
|
|
72
80
|
"store_number": "store_number",
|
|
73
81
|
"store_name": "store_name",
|
|
82
|
+
"warehouse_name": "warehouse_name",
|
|
74
83
|
"street_address": "street_address",
|
|
75
84
|
"city": "city",
|
|
76
85
|
"state_code": "state_code",
|
|
@@ -127,9 +136,14 @@ class CostcoStrategy(RetailerStrategy):
|
|
|
127
136
|
address = local_business.get("address") or {}
|
|
128
137
|
geo = local_business.get("geo") or {}
|
|
129
138
|
zipcode = (address.get("postalCode") or "").split("-")[0].strip() or None
|
|
139
|
+
name_match = WAREHOUSE_NAME_RE.search(html)
|
|
140
|
+
warehouse_name = html_lib.unescape(name_match.group(1)).strip() if name_match else None
|
|
130
141
|
return {
|
|
131
142
|
"store_number": number,
|
|
143
|
+
# Fallback only - the real name is warehouse_name below. Kept for
|
|
144
|
+
# pages where the <h1> match fails for some reason.
|
|
132
145
|
"store_name": f"{address.get('addressLocality', '')} {address.get('addressRegion', '')}".strip() or None,
|
|
146
|
+
"warehouse_name": warehouse_name or None,
|
|
133
147
|
"street_address": address.get("streetAddress"),
|
|
134
148
|
"city": address.get("addressLocality"),
|
|
135
149
|
"state_code": address.get("addressRegion"),
|
|
@@ -287,7 +287,7 @@ class TableSchema(QSSupport, FlowComponent):
|
|
|
287
287
|
**arguments,
|
|
288
288
|
)
|
|
289
289
|
else:
|
|
290
|
-
self.params = {
|
|
290
|
+
self.params = {}
|
|
291
291
|
arguments = {**self.params}
|
|
292
292
|
if hasattr(self, "pd_args") and isinstance(self.pd_args, dict):
|
|
293
293
|
arguments = {**self.params, **self.pd_args}
|
|
@@ -556,7 +556,7 @@ class TransformRows(FlowComponent):
|
|
|
556
556
|
if hasattr(elem, "clean_str"):
|
|
557
557
|
df.is_copy = None
|
|
558
558
|
u = df.select_dtypes(include=["object", "string"])
|
|
559
|
-
u = u.
|
|
559
|
+
u = u.map(lambda x: x.strip() if isinstance(x, str) else x)
|
|
560
560
|
df[u.columns] = df[u.columns].fillna("")
|
|
561
561
|
if hasattr(elem, "drop_empty"):
|
|
562
562
|
# First filter out those rows which
|
|
@@ -425,7 +425,7 @@ def drop_timezone(
|
|
|
425
425
|
column = field
|
|
426
426
|
|
|
427
427
|
series = df[column]
|
|
428
|
-
if pandas.
|
|
428
|
+
if isinstance(series.dtype, pandas.DatetimeTZDtype):
|
|
429
429
|
# This is a regular tz-aware pandas Series
|
|
430
430
|
df[field] = series.dt.tz_localize(None)
|
|
431
431
|
return df
|
|
@@ -1427,7 +1427,7 @@ def to_integer(df: pandas.DataFrame, field: str):
|
|
|
1427
1427
|
df[field] = pandas.to_numeric(df[field], errors="coerce")
|
|
1428
1428
|
# Replace non-finite values (NaN, inf, -inf) with pd.NA before converting to int64
|
|
1429
1429
|
df[field] = df[field].where(np.isfinite(df[field]), pandas.NA)
|
|
1430
|
-
df[field] = df[field].astype("Int64"
|
|
1430
|
+
df[field] = df[field].astype("Int64")
|
|
1431
1431
|
except TypeError as err:
|
|
1432
1432
|
print(f"TO Integer {field}: Unable to safely cast non-equivalent float to int.")
|
|
1433
1433
|
numeric_col = pandas.to_numeric(df[field], errors="coerce")
|
|
@@ -1458,7 +1458,7 @@ def to_float(
|
|
|
1458
1458
|
:return: Modified pandas DataFrame with the values converted to floats.
|
|
1459
1459
|
"""
|
|
1460
1460
|
try:
|
|
1461
|
-
df[field] = pandas.to_numeric(df[field], errors="coerce").astype("float64"
|
|
1461
|
+
df[field] = pandas.to_numeric(df[field], errors="coerce").astype("float64")
|
|
1462
1462
|
except Exception as err:
|
|
1463
1463
|
print(f"TO Float {field}: An error occurred during conversion.")
|
|
1464
1464
|
print(err)
|
|
@@ -594,6 +594,9 @@ class Workday(FlowComponent):
|
|
|
594
594
|
"cost_center_id_type", "organization_id_type", "worker_id_type",
|
|
595
595
|
"exclude_all_attachments", "exclude_employees", "exclude_contingent_workers",
|
|
596
596
|
"StepName", "TaskName", "debug", "step_name", "task_name",
|
|
597
|
+
# Injected by Task for every component (tasks/task.py);
|
|
598
|
+
# Workday RaaS rejects unknown query params.
|
|
599
|
+
"storage_name",
|
|
597
600
|
}
|
|
598
601
|
for attr_name in dir(self):
|
|
599
602
|
if attr_name.startswith("_") or attr_name in excluded_attrs:
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import warnings
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import Any, Optional, Union
|
|
5
|
+
import numpy as np
|
|
6
|
+
import pandas as pd
|
|
7
|
+
from pandas import DataFrame
|
|
8
|
+
from ..exceptions import ComponentError, ConfigError, DataNotFound
|
|
9
|
+
from ..interfaces.flow import FlowComponent
|
|
10
|
+
from ..interfaces.t_pandas import tPandas
|
|
11
|
+
|
|
12
|
+
CHANGE_TYPES: tuple[str, ...] = ("new", "modified", "deleted", "unchanged")
|
|
13
|
+
METHODS: tuple[str, ...] = ("compare", "hash")
|
|
14
|
+
DTYPE_POLICIES: tuple[str, ...] = ("strict", "coerce")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _is_null(value: Any) -> bool:
|
|
18
|
+
"""Return True when a scalar cell is null (None, NaN, pd.NA, NaT)."""
|
|
19
|
+
return bool(pd.api.types.is_scalar(value) and pd.isna(value))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _safe_equal(left: Any, right: Any) -> bool:
|
|
23
|
+
"""Null-safe, exception-safe equality between two cells (plain equality, no nested diff)."""
|
|
24
|
+
left_null, right_null = _is_null(left), _is_null(right)
|
|
25
|
+
if left_null or right_null:
|
|
26
|
+
return left_null and right_null
|
|
27
|
+
try:
|
|
28
|
+
return bool(left == right)
|
|
29
|
+
except (ValueError, TypeError):
|
|
30
|
+
try:
|
|
31
|
+
return bool(np.array_equal(left, right))
|
|
32
|
+
except Exception: # pragma: no cover - defensive
|
|
33
|
+
return False
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _family(dtype: Any) -> str:
|
|
37
|
+
"""Classify a dtype into a strict-compatibility family."""
|
|
38
|
+
if pd.api.types.is_bool_dtype(dtype):
|
|
39
|
+
return "bool"
|
|
40
|
+
if pd.api.types.is_integer_dtype(dtype):
|
|
41
|
+
return "int"
|
|
42
|
+
if pd.api.types.is_float_dtype(dtype):
|
|
43
|
+
return "float"
|
|
44
|
+
if pd.api.types.is_datetime64_any_dtype(dtype):
|
|
45
|
+
return "datetime"
|
|
46
|
+
if dtype == object or isinstance(dtype, pd.StringDtype):
|
|
47
|
+
return "text"
|
|
48
|
+
return str(dtype)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class tDiff(tPandas):
|
|
52
|
+
"""
|
|
53
|
+
tDiff
|
|
54
|
+
|
|
55
|
+
Overview
|
|
56
|
+
|
|
57
|
+
The tDiff class detects changes between two DataFrames that share a primary key. Rows are
|
|
58
|
+
classified as new, modified, deleted or unchanged (label column ``_change``) so downstream
|
|
59
|
+
steps can filter on them. Invalid primary keys fail explicitly, comparisons are null-safe,
|
|
60
|
+
schema/dtype mismatches are reported (never silently fixed) and "no changes" is a valid
|
|
61
|
+
result (empty typed DataFrame) unless raise_on_empty is set. The first source in depends is
|
|
62
|
+
the current DataFrame (A), the second is the previous one (B).
|
|
63
|
+
|
|
64
|
+
:widths: auto
|
|
65
|
+
|
|
66
|
+
| depends | Yes | Exactly two sources: first is current (A), second is previous (B). |
|
|
67
|
+
| pk | Yes | Primary key column (str) or list of columns (composite key). |
|
|
68
|
+
| compare_columns | No | Columns whose change marks a row as modified (default: common columns minus pk and ignore). |
|
|
69
|
+
| ignore_columns | No | Columns that are never compared (e.g. updated_at, etl_ts). |
|
|
70
|
+
| include | No | Change types emitted: new, modified, deleted, unchanged (default: new, modified, deleted). |
|
|
71
|
+
| change_column | No | Name of the label column, defaults to _change. |
|
|
72
|
+
| changed_columns | No | true adds _changed_columns (list of columns) on modified rows; a string names that column. |
|
|
73
|
+
| method | No | compare (vectorized per column, default) or hash (per-row hash over compare_columns). |
|
|
74
|
+
| float_tolerance | No | Dict with rtol and atol used with numpy.isclose on float columns (not valid with method hash). |
|
|
75
|
+
| strip_strings | No | Strip strings before comparing (returned values are never altered), defaults to false. |
|
|
76
|
+
| case_sensitive | No | When false, strings are compared with casefold(), defaults to true. |
|
|
77
|
+
| dtype_policy | No | strict fails on incompatible dtypes; coerce casts B to the dtype of A (defaults to strict). |
|
|
78
|
+
| raise_on_empty | No | When true and the result is empty, raises DataNotFound, defaults to false. |
|
|
79
|
+
|
|
80
|
+
Return
|
|
81
|
+
|
|
82
|
+
A DataFrame with the columns of A (in A order) plus the label column. New, modified and unchanged
|
|
83
|
+
rows carry A values; deleted rows carry B values (A-only columns are null). A rows keep their order
|
|
84
|
+
and deleted rows follow in B order. Metrics: NEW_ROWS, MODIFIED_ROWS, DELETED_ROWS, UNCHANGED_ROWS
|
|
85
|
+
and SCHEMA_DRIFT; variables: {StepName}_NUMROWS, _NEW, _MODIFIED and _DELETED.
|
|
86
|
+
|
|
87
|
+
:consumes: dataframe
|
|
88
|
+
:produces: dataframe
|
|
89
|
+
|
|
90
|
+
Example:
|
|
91
|
+
|
|
92
|
+
```yaml
|
|
93
|
+
tDiff:
|
|
94
|
+
depends:
|
|
95
|
+
- QueryToPandas_1
|
|
96
|
+
- QueryToPandas_2
|
|
97
|
+
pk: user_id
|
|
98
|
+
compare_columns:
|
|
99
|
+
- nombre
|
|
100
|
+
- email
|
|
101
|
+
include:
|
|
102
|
+
- new
|
|
103
|
+
- modified
|
|
104
|
+
- deleted
|
|
105
|
+
```
|
|
106
|
+
"""
|
|
107
|
+
_version = "1.0.0"
|
|
108
|
+
|
|
109
|
+
def __init__(
|
|
110
|
+
self,
|
|
111
|
+
loop: asyncio.AbstractEventLoop = None,
|
|
112
|
+
job: Callable = None,
|
|
113
|
+
stat: Callable = None,
|
|
114
|
+
**kwargs: Any,
|
|
115
|
+
) -> None:
|
|
116
|
+
"""Set defaults for every property before kwargs override them."""
|
|
117
|
+
self.pk: Union[str, list[str], None] = None
|
|
118
|
+
self.compare_columns: Optional[list[str]] = None
|
|
119
|
+
self.ignore_columns: list[str] = []
|
|
120
|
+
self.include: list[str] = ["new", "modified", "deleted"]
|
|
121
|
+
self.change_column: str = "_change"
|
|
122
|
+
self.changed_columns: Union[bool, str] = False
|
|
123
|
+
self.method: str = "compare"
|
|
124
|
+
self.float_tolerance: Optional[dict[str, float]] = None
|
|
125
|
+
self.strip_strings: bool = False
|
|
126
|
+
self.case_sensitive: bool = True
|
|
127
|
+
self.dtype_policy: str = "strict"
|
|
128
|
+
self.raise_on_empty: bool = False
|
|
129
|
+
self._pk: list[str] = []
|
|
130
|
+
self._schema_drift: dict[str, list[str]] = {
|
|
131
|
+
"only_in_current": [],
|
|
132
|
+
"only_in_previous": [],
|
|
133
|
+
}
|
|
134
|
+
super().__init__(loop=loop, job=job, stat=stat, **kwargs)
|
|
135
|
+
|
|
136
|
+
async def start(self, **kwargs: Any) -> bool:
|
|
137
|
+
"""Resolve current (A) / previous (B) and validate config.
|
|
138
|
+
|
|
139
|
+
Raises:
|
|
140
|
+
ComponentError: missing/extra source.
|
|
141
|
+
ConfigError: invalid include/method/dtype_policy, missing pk, hash+tolerance.
|
|
142
|
+
"""
|
|
143
|
+
depends = getattr(self, "depends", None)
|
|
144
|
+
if not depends or not isinstance(depends, (list, tuple)):
|
|
145
|
+
raise ComponentError("tDiff requires 'depends' with exactly 2 sources (current, previous)")
|
|
146
|
+
if len(depends) != 2:
|
|
147
|
+
missing = "previous" if len(depends) < 2 else "extra"
|
|
148
|
+
raise ComponentError(
|
|
149
|
+
f"tDiff requires exactly 2 sources in depends (current, previous); "
|
|
150
|
+
f"got {len(depends)} ({missing} source problem)"
|
|
151
|
+
)
|
|
152
|
+
sources = self.previous
|
|
153
|
+
if not self._multi or not isinstance(sources, list) or len(sources) != 2:
|
|
154
|
+
raise ComponentError(
|
|
155
|
+
f"tDiff could not resolve both sources {list(depends)!s}: the 'previous' source is missing"
|
|
156
|
+
)
|
|
157
|
+
frames = []
|
|
158
|
+
for label, name, source in zip(("current", "previous"), depends, sources):
|
|
159
|
+
df = source.output()
|
|
160
|
+
if not isinstance(df, DataFrame):
|
|
161
|
+
raise ComponentError(f"tDiff {label} source '{name}' did not produce a DataFrame")
|
|
162
|
+
frames.append(df)
|
|
163
|
+
self.df1, self.df2 = frames
|
|
164
|
+
|
|
165
|
+
# config values
|
|
166
|
+
if self.method not in METHODS:
|
|
167
|
+
raise ConfigError(f"tDiff: invalid method '{self.method}', valid values: {list(METHODS)}")
|
|
168
|
+
if self.dtype_policy not in DTYPE_POLICIES:
|
|
169
|
+
raise ConfigError(
|
|
170
|
+
f"tDiff: invalid dtype_policy '{self.dtype_policy}', valid values: {list(DTYPE_POLICIES)}"
|
|
171
|
+
)
|
|
172
|
+
if isinstance(self.include, str):
|
|
173
|
+
self.include = [self.include]
|
|
174
|
+
invalid = [x for x in self.include if x not in CHANGE_TYPES]
|
|
175
|
+
if invalid:
|
|
176
|
+
raise ConfigError(f"tDiff: invalid include value(s) {invalid}, valid values: {list(CHANGE_TYPES)}")
|
|
177
|
+
if self.method == "hash" and self.float_tolerance:
|
|
178
|
+
raise ConfigError("tDiff: method 'hash' is incompatible with float_tolerance")
|
|
179
|
+
if not self.pk:
|
|
180
|
+
raise ConfigError("tDiff: 'pk' is required (column name or list of columns)")
|
|
181
|
+
self._pk = [self.pk] if isinstance(self.pk, str) else list(self.pk)
|
|
182
|
+
if isinstance(self.compare_columns, str):
|
|
183
|
+
self.compare_columns = [self.compare_columns]
|
|
184
|
+
if isinstance(self.ignore_columns, str):
|
|
185
|
+
self.ignore_columns = [self.ignore_columns]
|
|
186
|
+
await FlowComponent.start(self, **kwargs)
|
|
187
|
+
return True
|
|
188
|
+
|
|
189
|
+
async def close(self) -> None:
|
|
190
|
+
"""No resources to release."""
|
|
191
|
+
|
|
192
|
+
def _validate_pk(self, df: DataFrame, side: str) -> None:
|
|
193
|
+
"""Raise ConfigError if a pk column is missing; ComponentError on null or duplicated keys."""
|
|
194
|
+
for col in self._pk:
|
|
195
|
+
if col not in df.columns:
|
|
196
|
+
raise ConfigError(f"tDiff: pk column '{col}' is missing in {side} DataFrame")
|
|
197
|
+
nulls = int(df[self._pk].isna().any(axis=1).sum())
|
|
198
|
+
if nulls:
|
|
199
|
+
raise ComponentError(f"tDiff: pk has nulls in {side} DataFrame ({nulls} rows)")
|
|
200
|
+
dup = df.duplicated(subset=self._pk, keep=False)
|
|
201
|
+
if dup.any():
|
|
202
|
+
keys = df.loc[dup, self._pk].drop_duplicates().head(5)
|
|
203
|
+
if len(self._pk) == 1:
|
|
204
|
+
examples = keys[self._pk[0]].tolist()
|
|
205
|
+
else:
|
|
206
|
+
examples = [tuple(row) for row in keys.itertuples(index=False, name=None)]
|
|
207
|
+
raise ComponentError(
|
|
208
|
+
f"tDiff: pk is duplicated in {side} DataFrame ({int(dup.sum())} rows), examples: {examples}"
|
|
209
|
+
)
|
|
210
|
+
|
|
211
|
+
def _resolve_compare_columns(self, a: DataFrame, b: DataFrame) -> list[str]:
|
|
212
|
+
"""Return the compared columns and store SCHEMA_DRIFT in self._schema_drift."""
|
|
213
|
+
ignore = set(self.ignore_columns or [])
|
|
214
|
+
only_a = [c for c in a.columns if c not in b.columns]
|
|
215
|
+
only_b = [c for c in b.columns if c not in a.columns]
|
|
216
|
+
self._schema_drift = {"only_in_current": only_a, "only_in_previous": only_b}
|
|
217
|
+
if only_a or only_b:
|
|
218
|
+
self._logger.warning(
|
|
219
|
+
f"tDiff schema drift: only in current={only_a}, only in previous={only_b} (not compared)"
|
|
220
|
+
)
|
|
221
|
+
if self.compare_columns:
|
|
222
|
+
for col in self.compare_columns:
|
|
223
|
+
if col not in a.columns:
|
|
224
|
+
raise ConfigError(f"tDiff: compare column '{col}' is missing in current DataFrame")
|
|
225
|
+
if col not in b.columns:
|
|
226
|
+
raise ConfigError(f"tDiff: compare column '{col}' is missing in previous DataFrame")
|
|
227
|
+
return [c for c in self.compare_columns if c not in self._pk and c not in ignore]
|
|
228
|
+
return [c for c in a.columns if c in b.columns and c not in self._pk and c not in ignore]
|
|
229
|
+
|
|
230
|
+
def _align_dtypes(self, ca: DataFrame, cb: DataFrame) -> DataFrame:
|
|
231
|
+
"""Return a copy of cb aligned to ca per dtype_policy."""
|
|
232
|
+
out = cb.copy()
|
|
233
|
+
for col in ca.columns:
|
|
234
|
+
da, db = ca[col].dtype, cb[col].dtype
|
|
235
|
+
fa, fb = _family(da), _family(db)
|
|
236
|
+
if fa == "datetime" and fb == "datetime":
|
|
237
|
+
tz_a, tz_b = getattr(da, "tz", None), getattr(db, "tz", None)
|
|
238
|
+
if (tz_a is None) != (tz_b is None):
|
|
239
|
+
raise ComponentError(f"tDiff: column '{col}' mixes tz-aware and naive datetimes ({da} vs {db})")
|
|
240
|
+
if str(tz_a) != str(tz_b):
|
|
241
|
+
raise ComponentError(f"tDiff: column '{col}' has different timezones ({da} vs {db})")
|
|
242
|
+
if fa != fb:
|
|
243
|
+
if self.dtype_policy == "strict":
|
|
244
|
+
raise ComponentError(f"tDiff: incompatible dtypes in column '{col}': {da} vs {db}")
|
|
245
|
+
if fa == "datetime" and fb in ("datetime", "text") and getattr(da, "tz", None) is not None:
|
|
246
|
+
raise ComponentError(f"tDiff: column '{col}' cannot be coerced to tz-aware {da}")
|
|
247
|
+
try:
|
|
248
|
+
out[col] = self._coerce(cb[col], da, fa)
|
|
249
|
+
except (ValueError, TypeError, OverflowError) as err:
|
|
250
|
+
raise ComponentError(f"tDiff: cannot coerce column '{col}' ({db} -> {da}): {err!s}") from err
|
|
251
|
+
elif da != db:
|
|
252
|
+
try:
|
|
253
|
+
out[col] = cb[col].astype(da)
|
|
254
|
+
except (ValueError, TypeError):
|
|
255
|
+
# compatible family but not representable (e.g. nulls into int64): keep as is
|
|
256
|
+
pass
|
|
257
|
+
return out
|
|
258
|
+
|
|
259
|
+
@staticmethod
|
|
260
|
+
def _coerce(series: pd.Series, dtype: Any, family: str) -> pd.Series:
|
|
261
|
+
"""Cast a series to the dtype of A (raises ValueError/TypeError on failure)."""
|
|
262
|
+
if family in ("int", "float"):
|
|
263
|
+
return pd.to_numeric(series, errors="raise").astype(dtype)
|
|
264
|
+
if family == "datetime":
|
|
265
|
+
return pd.to_datetime(series, errors="raise").astype(dtype)
|
|
266
|
+
return series.astype(dtype)
|
|
267
|
+
|
|
268
|
+
def _normalize(self, df: DataFrame) -> DataFrame:
|
|
269
|
+
"""Return a copy with strip/casefold applied to string-like columns."""
|
|
270
|
+
out = df.copy()
|
|
271
|
+
if not self.strip_strings and self.case_sensitive:
|
|
272
|
+
return out
|
|
273
|
+
|
|
274
|
+
def _fix(value: Any) -> Any:
|
|
275
|
+
if isinstance(value, str):
|
|
276
|
+
if self.strip_strings:
|
|
277
|
+
value = value.strip()
|
|
278
|
+
if not self.case_sensitive:
|
|
279
|
+
value = value.casefold()
|
|
280
|
+
return value
|
|
281
|
+
|
|
282
|
+
for col in out.columns:
|
|
283
|
+
if _family(out[col].dtype) == "text":
|
|
284
|
+
out[col] = out[col].astype(object).map(_fix)
|
|
285
|
+
return out
|
|
286
|
+
|
|
287
|
+
async def run(self) -> DataFrame:
|
|
288
|
+
"""Run the diff; empty is a valid result unless raise_on_empty."""
|
|
289
|
+
try:
|
|
290
|
+
df = await self._run()
|
|
291
|
+
except (ComponentError, ConfigError, DataNotFound):
|
|
292
|
+
raise
|
|
293
|
+
except (ValueError, KeyError) as err:
|
|
294
|
+
raise ComponentError(f"tDiff Error: {err!s}") from err
|
|
295
|
+
if df.empty and self.raise_on_empty:
|
|
296
|
+
raise DataNotFound("tDiff: no changes found for the selected include types")
|
|
297
|
+
self._result = df
|
|
298
|
+
self.add_metric("NUM_ROWS", df.shape[0])
|
|
299
|
+
self.add_metric("NUM_COLUMNS", df.shape[1])
|
|
300
|
+
return self._result
|
|
301
|
+
|
|
302
|
+
async def _run(self) -> DataFrame:
|
|
303
|
+
"""Classify rows into new/modified/deleted/unchanged and assemble the output."""
|
|
304
|
+
a, b = self.df1, self.df2
|
|
305
|
+
pk = self._pk
|
|
306
|
+
self._validate_pk(a, "current")
|
|
307
|
+
self._validate_pk(b, "previous")
|
|
308
|
+
cols = self._resolve_compare_columns(a, b)
|
|
309
|
+
|
|
310
|
+
# keys (pk dtypes must be compatible too)
|
|
311
|
+
b_pk = self._align_dtypes(a[pk], b[pk])
|
|
312
|
+
if len(pk) == 1:
|
|
313
|
+
a_keys = pd.Index(a[pk[0]])
|
|
314
|
+
b_keys = pd.Index(b_pk[pk[0]])
|
|
315
|
+
else:
|
|
316
|
+
a_keys = pd.MultiIndex.from_frame(a[pk])
|
|
317
|
+
b_keys = pd.MultiIndex.from_frame(b_pk)
|
|
318
|
+
new_mask = ~np.asarray(a_keys.isin(b_keys))
|
|
319
|
+
deleted_pos = np.flatnonzero(~np.asarray(b_keys.isin(a_keys)))
|
|
320
|
+
b_pos = np.asarray(b_keys.get_indexer(a_keys))
|
|
321
|
+
common_a = np.flatnonzero(b_pos >= 0)
|
|
322
|
+
common_b = b_pos[common_a]
|
|
323
|
+
|
|
324
|
+
# compared copies
|
|
325
|
+
ca = a[cols].iloc[common_a].reset_index(drop=True)
|
|
326
|
+
cb_raw = b[cols].iloc[common_b].reset_index(drop=True)
|
|
327
|
+
cb = self._align_dtypes(ca, cb_raw)
|
|
328
|
+
ca, cb = self._normalize(ca), self._normalize(cb)
|
|
329
|
+
|
|
330
|
+
eq: Optional[DataFrame] = None
|
|
331
|
+
if not cols or len(common_a) == 0:
|
|
332
|
+
modified = np.zeros(len(common_a), dtype=bool)
|
|
333
|
+
elif self.method == "hash":
|
|
334
|
+
modified = np.asarray(self._hash_modified(ca, cb), dtype=bool)
|
|
335
|
+
else:
|
|
336
|
+
eq = self._equal_matrix(ca, cb)
|
|
337
|
+
modified = ~eq.all(axis=1).to_numpy(dtype=bool)
|
|
338
|
+
|
|
339
|
+
labels = np.full(len(a), "new", dtype=object)
|
|
340
|
+
labels[common_a] = np.where(modified, "modified", "unchanged")
|
|
341
|
+
|
|
342
|
+
# changed columns (only for modified rows)
|
|
343
|
+
cc_name: Optional[str] = None
|
|
344
|
+
if self.changed_columns:
|
|
345
|
+
cc_name = self.changed_columns if isinstance(self.changed_columns, str) else "_changed_columns"
|
|
346
|
+
changed_lists: Optional[list[list[str]]] = None
|
|
347
|
+
if cc_name is not None:
|
|
348
|
+
changed_lists = [[] for _ in range(len(a))]
|
|
349
|
+
if modified.any():
|
|
350
|
+
if eq is None:
|
|
351
|
+
eq_mod = self._equal_matrix(
|
|
352
|
+
ca[modified].reset_index(drop=True), cb[modified].reset_index(drop=True)
|
|
353
|
+
)
|
|
354
|
+
else:
|
|
355
|
+
eq_mod = eq[modified]
|
|
356
|
+
flags = ~eq_mod.to_numpy(dtype=bool)
|
|
357
|
+
for pos, row in zip(common_a[modified], flags):
|
|
358
|
+
changed_lists[pos] = [c for c, diff in zip(cols, row) if diff]
|
|
359
|
+
|
|
360
|
+
# metrics (independent of include)
|
|
361
|
+
n_mod = int(modified.sum())
|
|
362
|
+
n_new = int(new_mask.sum())
|
|
363
|
+
n_del = int(len(deleted_pos))
|
|
364
|
+
n_unch = int(len(common_a) - n_mod)
|
|
365
|
+
self.add_metric("NEW_ROWS", n_new)
|
|
366
|
+
self.add_metric("MODIFIED_ROWS", n_mod)
|
|
367
|
+
self.add_metric("DELETED_ROWS", n_del)
|
|
368
|
+
self.add_metric("UNCHANGED_ROWS", n_unch)
|
|
369
|
+
self.add_metric("SCHEMA_DRIFT", self._schema_drift)
|
|
370
|
+
|
|
371
|
+
# assemble
|
|
372
|
+
keep = np.flatnonzero(np.isin(labels, [x for x in self.include if x != "deleted"]))
|
|
373
|
+
parts: list[DataFrame] = []
|
|
374
|
+
if len(keep):
|
|
375
|
+
part = a.iloc[keep].copy()
|
|
376
|
+
part[self.change_column] = labels[keep]
|
|
377
|
+
if cc_name is not None:
|
|
378
|
+
part[cc_name] = pd.Series([changed_lists[i] for i in keep], index=part.index, dtype=object)
|
|
379
|
+
parts.append(part)
|
|
380
|
+
if "deleted" in self.include and n_del:
|
|
381
|
+
dele = b.iloc[deleted_pos].reindex(columns=a.columns).copy()
|
|
382
|
+
dele[self.change_column] = "deleted"
|
|
383
|
+
if cc_name is not None:
|
|
384
|
+
dele[cc_name] = pd.Series([[] for _ in range(n_del)], index=dele.index, dtype=object)
|
|
385
|
+
parts.append(dele)
|
|
386
|
+
if not parts:
|
|
387
|
+
out = self._empty_output(a)
|
|
388
|
+
elif len(parts) == 1:
|
|
389
|
+
out = parts[0].reset_index(drop=True)
|
|
390
|
+
else:
|
|
391
|
+
with warnings.catch_warnings():
|
|
392
|
+
# A-only columns of deleted rows are all-NA: pandas upcasting is accepted (spec §8)
|
|
393
|
+
warnings.simplefilter("ignore", FutureWarning)
|
|
394
|
+
out = pd.concat(parts, ignore_index=True)
|
|
395
|
+
self._variables[f"{self.StepName}_NUMROWS"] = len(out)
|
|
396
|
+
self._variables[f"{self.StepName}_NEW"] = n_new
|
|
397
|
+
self._variables[f"{self.StepName}_MODIFIED"] = n_mod
|
|
398
|
+
self._variables[f"{self.StepName}_DELETED"] = n_del
|
|
399
|
+
return out
|
|
400
|
+
|
|
401
|
+
def _equal_matrix(self, ca: DataFrame, cb: DataFrame) -> DataFrame:
|
|
402
|
+
"""Boolean frame, True where values are equal under spec §2 semantics."""
|
|
403
|
+
tol = self.float_tolerance or None
|
|
404
|
+
result: dict[str, np.ndarray] = {}
|
|
405
|
+
for col in ca.columns:
|
|
406
|
+
sa, sb = ca[col], cb[col]
|
|
407
|
+
nulls = sa.isna().to_numpy() & sb.isna().to_numpy()
|
|
408
|
+
if tol and pd.api.types.is_float_dtype(sa.dtype) and pd.api.types.is_float_dtype(sb.dtype):
|
|
409
|
+
va = sa.to_numpy(dtype=float, na_value=np.nan)
|
|
410
|
+
vb = sb.to_numpy(dtype=float, na_value=np.nan)
|
|
411
|
+
same = np.isclose(va, vb, rtol=tol.get("rtol", 1e-5), atol=tol.get("atol", 1e-8))
|
|
412
|
+
elif sa.dtype == object or sb.dtype == object:
|
|
413
|
+
try:
|
|
414
|
+
same = (sa == sb).to_numpy(dtype=bool, na_value=False)
|
|
415
|
+
except (ValueError, TypeError):
|
|
416
|
+
same = np.fromiter((_safe_equal(x, y) for x, y in zip(sa, sb)), dtype=bool, count=len(sa))
|
|
417
|
+
else:
|
|
418
|
+
same = (sa == sb).to_numpy(dtype=bool, na_value=False)
|
|
419
|
+
result[col] = same | nulls
|
|
420
|
+
return pd.DataFrame(result, index=ca.index, columns=list(ca.columns))
|
|
421
|
+
|
|
422
|
+
def _hash_modified(self, ca: DataFrame, cb: DataFrame) -> pd.Series:
|
|
423
|
+
"""Per-row hash comparison; True where the row changed."""
|
|
424
|
+
try:
|
|
425
|
+
ha = pd.util.hash_pandas_object(ca, index=False)
|
|
426
|
+
hb = pd.util.hash_pandas_object(cb, index=False)
|
|
427
|
+
except TypeError as err:
|
|
428
|
+
bad = None
|
|
429
|
+
for col in ca.columns:
|
|
430
|
+
try:
|
|
431
|
+
pd.util.hash_pandas_object(ca[col], index=False)
|
|
432
|
+
pd.util.hash_pandas_object(cb[col], index=False)
|
|
433
|
+
except TypeError:
|
|
434
|
+
bad = col
|
|
435
|
+
break
|
|
436
|
+
where = f" in column '{bad}'" if bad else ""
|
|
437
|
+
raise ComponentError(
|
|
438
|
+
f"tDiff hash method cannot hash values{where}: {err!s}. Use method: compare for nested cells"
|
|
439
|
+
) from err
|
|
440
|
+
return pd.Series(ha.to_numpy() != hb.to_numpy(), index=ca.index)
|
|
441
|
+
|
|
442
|
+
def _empty_output(self, a: DataFrame) -> DataFrame:
|
|
443
|
+
"""Zero-row frame with A's columns/dtypes plus the label (and changed-columns) column."""
|
|
444
|
+
out = a.iloc[0:0].copy()
|
|
445
|
+
out[self.change_column] = pd.Series([], dtype=object)
|
|
446
|
+
if self.changed_columns:
|
|
447
|
+
name = self.changed_columns if isinstance(self.changed_columns, str) else "_changed_columns"
|
|
448
|
+
out[name] = pd.Series([], dtype=object)
|
|
449
|
+
return out.reset_index(drop=True)
|
|
@@ -24,6 +24,7 @@ class tJoin(FlowComponent):
|
|
|
24
24
|
| type | No | "left" | The type of join to perform. Supported values are "left", "right", "inner", |
|
|
25
25
|
| | | | "outer", and "anti-join". When "anti-join" is used, it returns the difference |
|
|
26
26
|
| | | | of B - A, i.e., all rows present in df1 but not in df2. |
|
|
27
|
+
| | | | For change detection (new/modified/deleted rows) use tDiff instead. |
|
|
27
28
|
| depends | Yes | A list of dependencies defining the sources for the join. |
|
|
28
29
|
| operator | No | The logical operator to use for join conditions, defaults to "and". |
|
|
29
30
|
| fk | No | The foreign key or list of keys to use for joining DataFrames. |
|