flowtask 5.13.8__tar.gz → 5.13.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {flowtask-5.13.8 → flowtask-5.13.9}/PKG-INFO +3 -1
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToPg.py +107 -29
- flowtask-5.13.9/flowtask/components/Frankfurter.py +348 -0
- flowtask-5.13.9/flowtask/components/Geofence.py +207 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MarketClustering.py +290 -294
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SchedulingVisits.py +609 -128
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/workday.py +219 -8
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/conf.py +6 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/BestBuy.doc.json +6 -2
- flowtask-5.13.9/flowtask/documentation/generated/components/Frankfurter.doc.json +93 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/index.json +11 -6
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/copy_to.py +12 -8
- flowtask-5.13.9/flowtask/interfaces/scheduling.py +291 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/config.py +109 -17
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/__init__.py +14 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report_rest.py +4 -7
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_report.py +4 -11
- flowtask-5.13.9/flowtask/interfaces/workday/handlers/payroll.py +452 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_block_report.py +6 -11
- flowtask-5.13.9/flowtask/interfaces/workday/handlers/time_off_eligibility.py +153 -0
- flowtask-5.13.9/flowtask/interfaces/workday/handlers/time_off_request.py +105 -0
- flowtask-5.13.9/flowtask/interfaces/workday/handlers/worker_event_history.py +279 -0
- flowtask-5.13.9/flowtask/interfaces/workday/handlers/worker_job_changes.py +347 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/workers.py +63 -35
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/__init__.py +12 -1
- flowtask-5.13.9/flowtask/interfaces/workday/models/fetch_many.py +37 -0
- flowtask-5.13.9/flowtask/interfaces/workday/models/time_off_eligibility.py +16 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/worker.py +3 -0
- flowtask-5.13.9/flowtask/interfaces/workday/models/worker_event.py +136 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/__init__.py +2 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/worker_parsers.py +33 -5
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/rest.py +123 -35
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/service.py +330 -7
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/version.py +1 -1
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/PKG-INFO +3 -1
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/SOURCES.txt +12 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/requires.txt +2 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/pyproject.toml +2 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/CONTRIBUTING.md +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/INSTALL +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/LICENSE +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/MANIFEST.in +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/README.md +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/__main__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/_version.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/bots/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/bots/check.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/bots/codebot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ASPX.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ATT.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/AddDataset.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Amazon.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/AutoTask.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Azure.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/AzureUsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/BaseAction.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/BaseLoop.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/BestBuy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CSVToGCS.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CallAnalysis.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CallSummary.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CensusData.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CensusVariables.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/explorium.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/leadiq.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/rocket.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/siccode.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/visualvisitor.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/parsers/zoominfo.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CompanyScraper/scrapper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyFromBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyFromS3.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyFromSharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyTo.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToBigQuery.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToFileBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToMongoDB.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToRethink.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToS3.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CopyToSharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Costco.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateGCSBucket.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/CreateReport.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/bar.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/charts/pie.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CreateReport/utils.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/CustomerSatisfaction.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DataInput.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DateList.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DbClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DialPad.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DispatchMe.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DocumentDBQuery.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFrom.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromD2L.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromFTP.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromGamma.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromGoogleDrive.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromIMAP.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromS3.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromSFTP.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromSharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadFromSmartSheet.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DownloadS3File.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Dummy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/DuplicatePhoto.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/EmployeeEvaluation.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ExecuteSQL.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ExtractHTML.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ExtractTranscript.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileCopy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileDelete.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileExists.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileIteratorDelete.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileList.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileOpen.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileRead.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FileRename.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FilterIf.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FilterRows/FilterRows.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FilterRows/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/FilterRows/functions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GCSToBigQuery.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GenData.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GoogleA4.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GoogleGeoCoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GooglePlaces.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/GoogleSearch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/HTTPClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ICIMS.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/IF.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/IcimsFolderCopy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ImageFeatures/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ImageFeatures/process.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/IteratorBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/LeadIQ.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Loop.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Lowes.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MS365Usage.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MSTeamsMessages.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MarkdownMaker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MergeFileList.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MergeFiles.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/MilvusOutput.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NearByStores.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/account.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/district.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/events.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/forms.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/market.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/organization.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/photos.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/project.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/region.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/store.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/models/user.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinja/router.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NetworkNinjaClaims.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NextStopAgent.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/NextTask.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Odoo.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OdooInjector.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OpenFromXML.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OpenStreetMap.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OpenWeather.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OpenWithBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/OpenWithPandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PDFGenerator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PGPDecrypt.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PandasIterator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PandasToFile.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PandasToPowerPoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Paradox.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParamIterator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotAgent.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/loader.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotKnowledgeBuilder/payload.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotLoader/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParrotLoader/loader.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ParseHTML.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PgVectorOutput.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PlacerStores.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PlanogramCompliance.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PodcastMaker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Pokemon.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PositiveBot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PowerPointSlide.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/PrintMessage.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/bestbuy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/parsers/lowes.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompetitors/scrapper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductCompliant.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/brother.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/canon.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/epson.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/hp.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/parsers/samsung.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductInfo/scraper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductPricing.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ProductReportBot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/QS.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/QSBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/QueryIterator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/QueryToInsert.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/QueryToPandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/RESTClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/RethinkDBQuery.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Rsync.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/RunSSH.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/RunShell.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SAPExtraction.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SMSAnalysis.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SMSSummary.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SalesForce.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Sassie.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SaveImageBank/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ScrapPage.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ScrapSearch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ScrapTool.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SearchQuery.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendEmail.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendNotify/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendNotify/component.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendNotify/models/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendNotify/models/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SendNotify/models/zoom.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SentimentAnalysis.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/costco.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/tractor_supply.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/retailers/verizon.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScraperStores/scraper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/parsers/costco.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ServiceScrapper/scrapper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SetVariables.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SplitPDF.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Staples.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SubTask.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SuiteCRM.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/component.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/SweetSpotScore/layers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Switch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableBase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableDelete.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableInput.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableOutput/TableOutput.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableOutput/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TableSchema.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Target.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ThumbnailGenerator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ToPandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TransformRows/TransformRows.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TransformRows/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TransformRows/functions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/TransposeRows.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UPCDatabase.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UnGzip.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Uncompress.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UniqueRows.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Unzip.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UpdateOperationalVars.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UploadTo.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UploadToS3.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UploadToSFTP.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UploadToSharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/UserFunc.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/VideoUnderstanding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/VivaTracker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/WSDLClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Wait.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Walmart.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/applicant.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/candidate.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/cost_center.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/job_posting.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/job_posting_site.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/job_requisition.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/location.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/organizations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/reference.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/time_block.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/time_off_balance.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/time_request.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/models/worker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/location_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/parsers/worker_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/applicants.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/candidates.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/cost_centers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_punch_field_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_punch_field_report_rest.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/custom_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/job_posting_sites.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/job_postings.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/job_requisitions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/locations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/organization_single.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/organizations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/recruiting_agency_users.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/references.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/time_block_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/time_blocks.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/time_off_balances.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/time_requests.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/types/workers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/utils/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workday/utils/utils.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/WorkdayReport.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Workplace.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/XMLToPandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Zammad/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Zammad/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/Zoom.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ZoomInfoScraper.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/ZoomUs.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/_census/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/_census/cache.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/_census/fetch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/_census/resolver.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/_census/transform.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/flow.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/gendata/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/gendata/date_sequence.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/gendata/static_list.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/google.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/group.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/pandas_io.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/py.typed +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/reviewscrap.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tAddTotalRow.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tAutoincrement.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tConcat.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tConditionalMultiply.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tCrosstab.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tDictKey.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tDiff.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tExplode.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tFilter.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tFilterCommonValues.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tFlatten.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tFrequencyWeights.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tGroup.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tJoin.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tMap/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tMap/functions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tMap/tMap.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tMelt.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tMerge.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tOrder.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tPandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tPivot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tPluckCols.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/tUnnest.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/components/user.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/categories.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/cli.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ASPX.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/AddDataset.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/AutoTask.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/AzureUsers.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CallAnalysis.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CallSummary.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CompanyScraper.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyFromS3.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyFromSharepoint.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToBigQuery.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToMongoDB.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToPg.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToRethink.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToS3.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CopyToSharepoint.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CreateReport.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/CustomerSatisfaction.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DataInput.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DateList.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DialPad.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromD2L.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromFTP.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromIMAP.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromS3.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSFTP.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSharepoint.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/DownloadFromSmartSheet.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/EmployeeEvaluation.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ExecuteSQL.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ExtractTranscript.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileCopy.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileDelete.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileExists.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileIteratorDelete.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileList.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileOpen.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileRead.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FileRename.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FilterIf.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/FilterRows.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleA4.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleGeoCoding.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/GoogleSearch.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/HTTPClient.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ICIMS.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/IteratorBase.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/LeadIQ.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/MS365Usage.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/MSTeamsMessages.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/MergeFileList.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/MergeFiles.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/NetworkNinjaClaims.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/NextTask.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Odoo.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/OdooInjector.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenFromXML.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenWithBase.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/OpenWithPandas.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PGPDecrypt.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PandasIterator.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PandasToFile.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Paradox.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ParamIterator.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ParrotAgent.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PlacerStores.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PlanogramCompliance.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Pokemon.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PositiveBot.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PowerPointSlide.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/PrintMessage.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductCompliant.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductPricing.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ProductReportBot.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/QS.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryIterator.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryToInsert.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/QueryToPandas.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/RESTClient.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/RunShell.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SAPExtraction.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Sassie.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ScrapTool.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SearchQuery.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SendNotify.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SentimentAnalysis.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ServiceScraperStores.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ServiceScrapper.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SetVariables.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SplitPDF.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SubTask.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/SuiteCRM.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableDelete.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableInput.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableOutput.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TableSchema.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ThumbnailGenerator.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TransformRows.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/TransposeRows.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UnGzip.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Uncompress.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UniqueRows.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Unzip.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToS3.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToSFTP.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UploadToSharepoint.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/UserFunc.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/Zoom.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/ZoomInfoScraper.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tAutoincrement.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tConcat.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tConditionalMultiply.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tCrosstab.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tDictKey.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tDiff.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tExplode.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFilter.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFilterCommonValues.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFlatten.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tFrequencyWeights.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tGroup.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tJoin.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tMap.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tMelt.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tOrder.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tPivot.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tPluckCols.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generated/components/tUnnest.doc.json +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/generator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/parser.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/schema.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/documentation/toolkit.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/download.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/alerts/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/alerts/colfunctions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/alerts/functions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/dummy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/exec.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/file/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/file/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/file/copy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/file/delete.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/interfaces/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/interfaces/client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/interfaces/credentials.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/interfaces/notifications.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/jira.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/log.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/logerr.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/notify.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/notify_event.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/publish.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/sendfile.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/task.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/teams.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/events/webhook.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/events/manager.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/exceptions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/docker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/events.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/exceptions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/k8s.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/local.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/publish.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/qworker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/registry.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/executors/resolver.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/extensions/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/extensions/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/extensions/component_docs.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/extensions/logging/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/factory/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/factory/agent.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/factory/composer.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/factory/parser.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/factory/validator.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/handlers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/handlers/component.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/dummy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/jira.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/rest.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/sampledata.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/sensor.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/task.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/ticket.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/zammad.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/actions/zoom_event.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/hook.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/step.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/mqtt.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/rabbitmq.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/redis.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/brokers/sqs.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/fs.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/http.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/imap.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/jira.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/mail.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/postgres.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/responses/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/responses/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/sharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/ssh.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/tagged.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/upload.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/watch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/web.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/hooks/types/zoom.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/AzureClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/AzureGraph.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/Boto3Client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/DropboxClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/ExcelHandler.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/FTPClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleCalendar.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleDrive.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleGCS.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleGeocoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleLang.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GooglePub.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleReverseGeocoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/GoogleSheet.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/IMAPClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/LLMClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/NominatimGeocoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/O365Calendar.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/O365Client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/OneDrive.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/Outlook.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/OverpassGeocoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/ParrotBot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/ParrotTool.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/ReverseGeocoding.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/SOAPClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/SSHClient.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/Sharepoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/azure_component.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/azureauth.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/base_action.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/base_loop.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/cache.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/compress.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/copy_from_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/copy_to_file_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/credentials.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/d2l.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/databases/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/databases/db.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/databases/documentdb.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/databases/rethink.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/arrow.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/dt.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/pandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/dataframes/polars.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/db.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/db_client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/download_from.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/env.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/file_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/flow.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/func.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/gamma.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/google_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/group.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/http.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/locale.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/log.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/mask.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/notification.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/parrot/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/parrot/agent.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/parrot/client.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/parrot/config.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/pipelines/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/pipelines/parrot.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/playwright.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/powerpoint.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/ppt.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/py.typed +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/qs.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/qs_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/result.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/routing.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/sassie.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/engine.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/count.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/gravity.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/extractors/nearest.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/scoring/spatial.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/search.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/selenium/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/selenium/options.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/selenium/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/selenium_service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/skip_policy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/smartsheet.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/stat.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/t_pandas.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/table_base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/task.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/teams.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/template.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/tickets.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/upload_to.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/user.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/vectorstores/milvus.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/applicants.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/base.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/candidates.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/cost_centers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/custom_punch_field_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/import_reported_time_blocks.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/import_time_clock_events.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_posting_sites.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_postings.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/job_requisitions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/locations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/organization_single.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/organizations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/put_time_clock_events.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/recruiting_agency_users.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/references.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_blocks.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_off_balances.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/handlers/time_requests.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/applicant.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/candidate.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/clock_event.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/cost_center.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/custom_punch_field_report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_posting.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_posting_site.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/job_requisition.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/location.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/location_hierarchy_assignments.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/organizations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/reference.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_block.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_off_balance.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/models/time_request.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/applicant_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/candidate_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/cost_center_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/custom_punch_field_report_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_posting_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_posting_site_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/job_requisition_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/location_hierarchy_assignments_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/location_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/organization_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/reference_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_block_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_off_balance_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/parsers/time_request_parsers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/utils/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/workday/utils/utils.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/zammad.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/interfaces/zoom.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/_yaml.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/argparser.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/base.pxd +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/base.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/json.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/maps.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/checker.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/detector.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/registry.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/report.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/syntax/schema.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/parsers/toml.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/plugins/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/plugins/components_/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/plugins/handler/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/plugins/importer.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/plugins/sources/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/runner.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/functions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/handlers/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/handlers/manager.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/handlers/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/handlers/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/notifications.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/scheduler/scheduler.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/bots/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/bots/telegram.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/files/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/files/manager.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/files/model.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/files/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/jira/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/jira/jira_actions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/README.md +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/changelog.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/handlers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/health.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/models.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/store.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/templates.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/maintenance/windows.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/launcher.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/manager.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/service.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/task_manager.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/services/tasks/tasks.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/exceptions.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/files/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/files/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/files/filesystem.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/database.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/filesystem.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/github.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/memory.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/storages/tasks/row.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/abstract.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/chain.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/chainer.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/command.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/exchange.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/pile.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/py.typed +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/task.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tasks/workers.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/template/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/tests.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/types/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/types/typedefs.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/__init__.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/bestbuy_greedy.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/constants.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/dataframes.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/encoders.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/executor.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/functions.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/json.pxi +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/json.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/mail.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/msgraph_patch.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/parseqs.pyx +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/stats.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/transformations.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/uv.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask/utils/validators.py +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/dependency_links.txt +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/entry_points.txt +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/flowtask.egg-info/top_level.txt +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/setup.cfg +0 -0
- {flowtask-5.13.8 → flowtask-5.13.9}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowtask
|
|
3
|
-
Version: 5.13.
|
|
3
|
+
Version: 5.13.9
|
|
4
4
|
Summary: Framework for Task orchestration
|
|
5
5
|
Author-email: Jesus Lara <jesuslarag@gmail.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -50,7 +50,9 @@ Requires-Dist: nltk>=3.10.3
|
|
|
50
50
|
Requires-Dist: jdcal==1.4.1
|
|
51
51
|
Requires-Dist: html5lib==1.1
|
|
52
52
|
Requires-Dist: shapely>=2.1.2
|
|
53
|
+
Requires-Dist: pyproj>=3.6
|
|
53
54
|
Requires-Dist: tzwhere==3.0.3
|
|
55
|
+
Requires-Dist: timezonefinder>=9.0.0
|
|
54
56
|
Requires-Dist: tabulate==0.9.0
|
|
55
57
|
Requires-Dist: python-magic==0.4.27
|
|
56
58
|
Requires-Dist: pytomlpp==1.0.13
|
|
@@ -1,42 +1,40 @@
|
|
|
1
|
-
import re
|
|
2
1
|
import asyncio
|
|
3
|
-
import multiprocessing
|
|
4
|
-
import gc
|
|
5
2
|
import csv
|
|
6
|
-
from decimal import Decimal
|
|
7
3
|
import datetime
|
|
4
|
+
import gc
|
|
5
|
+
import multiprocessing
|
|
6
|
+
import re
|
|
7
|
+
from collections.abc import Sequence
|
|
8
|
+
from decimal import Decimal
|
|
8
9
|
from io import BytesIO
|
|
9
|
-
from typing import
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
is_datetime64_any_dtype,
|
|
13
|
-
is_integer_dtype,
|
|
14
|
-
is_float_dtype,
|
|
15
|
-
is_bool_dtype
|
|
16
|
-
)
|
|
10
|
+
from typing import Any, Optional
|
|
11
|
+
|
|
12
|
+
import asyncpg
|
|
17
13
|
import numpy as np
|
|
18
|
-
from typing import Optional
|
|
19
|
-
from querysource.types.dt.transforms import to_wall_clock
|
|
20
14
|
import orjson
|
|
21
|
-
import
|
|
22
|
-
|
|
15
|
+
import pandas as pd
|
|
16
|
+
import shapely
|
|
17
|
+
from asyncdb.exceptions import DataError, StatementError
|
|
18
|
+
from asyncdb.models import Model
|
|
23
19
|
from asyncpg.exceptions import (
|
|
24
|
-
StringDataRightTruncationError,
|
|
25
|
-
UniqueViolationError,
|
|
26
20
|
ForeignKeyViolationError,
|
|
27
21
|
NotNullViolationError,
|
|
22
|
+
StringDataRightTruncationError,
|
|
23
|
+
UniqueViolationError,
|
|
24
|
+
)
|
|
25
|
+
from datamodel import Field
|
|
26
|
+
from pandas.api.types import (
|
|
27
|
+
is_datetime64_any_dtype,
|
|
28
28
|
)
|
|
29
29
|
from pgvector.asyncpg import register_vector
|
|
30
|
-
from
|
|
31
|
-
|
|
30
|
+
from querysource.types.dt.transforms import to_wall_clock
|
|
31
|
+
|
|
32
32
|
# Dataintegration components:
|
|
33
33
|
from ..exceptions import (
|
|
34
34
|
ComponentError,
|
|
35
|
-
DataNotFound,
|
|
36
35
|
)
|
|
37
36
|
from ..interfaces.copy_to import CopyTo, dtypes
|
|
38
|
-
from ..utils.json import json_decoder
|
|
39
|
-
|
|
37
|
+
from ..utils.json import json_decoder
|
|
40
38
|
|
|
41
39
|
# PostgreSQL type names (as reported by asyncpg) that store plain text.
|
|
42
40
|
PG_TEXT_TYPES = frozenset({"text", "varchar", "bpchar", "character varying", "character", "name"})
|
|
@@ -89,6 +87,31 @@ def quote_ddl_columns(sql: str, columns: list[str]) -> str:
|
|
|
89
87
|
return sql
|
|
90
88
|
|
|
91
89
|
|
|
90
|
+
def _to_ewkb(value: Any) -> bytes:
|
|
91
|
+
"""Encode WKT, EWKT, or a Shapely geometry as SRID-bearing EWKB.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
value: Geometry text or a Shapely geometry.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
Binary EWKB with the source SRID, defaulting to EPSG:4326.
|
|
98
|
+
"""
|
|
99
|
+
geometry = value
|
|
100
|
+
srid = 0
|
|
101
|
+
if isinstance(value, str):
|
|
102
|
+
text = value.strip()
|
|
103
|
+
match = re.match(r"^SRID=(\d+);(.*)$", text, flags=re.IGNORECASE | re.DOTALL)
|
|
104
|
+
if match:
|
|
105
|
+
srid = int(match.group(1))
|
|
106
|
+
text = match.group(2)
|
|
107
|
+
geometry = shapely.from_wkt(text)
|
|
108
|
+
if not srid:
|
|
109
|
+
srid = shapely.get_srid(geometry) or 4326
|
|
110
|
+
if shapely.get_srid(geometry) != srid:
|
|
111
|
+
geometry = shapely.set_srid(geometry, srid)
|
|
112
|
+
return shapely.to_wkb(geometry, include_srid=True)
|
|
113
|
+
|
|
114
|
+
|
|
92
115
|
class CopyToPg(CopyTo):
|
|
93
116
|
"""
|
|
94
117
|
CopyToPg
|
|
@@ -113,6 +136,7 @@ class CopyToPg(CopyTo):
|
|
|
113
136
|
| array_columns | No | List of column names containing JSON arrays. These columns will be formatted |
|
|
114
137
|
| | | appropriately before insertion. |
|
|
115
138
|
| | | Requires `use_buffer` to be True. |
|
|
139
|
+
| geometry_columns | No | Mapping of columns to PostGIS types, or a list defaulting to geography Polygon. |
|
|
116
140
|
| use_quoting | No | Boolean flag indicating whether to use quoting for CSV data insertion (optional).|
|
|
117
141
|
| | | Defaults to False. |
|
|
118
142
|
| | | Using quoting can be helpful for data containing special characters. |
|
|
@@ -171,7 +195,7 @@ class CopyToPg(CopyTo):
|
|
|
171
195
|
stack_info=True
|
|
172
196
|
)
|
|
173
197
|
|
|
174
|
-
def extract_copied(self, result:
|
|
198
|
+
def extract_copied(self, result: str | Sequence[str] | None) -> int:
|
|
175
199
|
if result is None:
|
|
176
200
|
return 0
|
|
177
201
|
if isinstance(result, str):
|
|
@@ -225,6 +249,12 @@ class CopyToPg(CopyTo):
|
|
|
225
249
|
f = (col, Optional[list], Field(default=None, nullable=True, db_type='vector'))
|
|
226
250
|
elif col in self._array_columns:
|
|
227
251
|
f = (col, Optional[list], Field(default=None, nullable=True, db_type='text[]'))
|
|
252
|
+
elif col in getattr(self, "_geometry_columns", {}):
|
|
253
|
+
f = (
|
|
254
|
+
col,
|
|
255
|
+
Optional[str],
|
|
256
|
+
Field(default=None, nullable=True, db_type=self._geometry_columns[col]),
|
|
257
|
+
)
|
|
228
258
|
elif col in self._binary_columns:
|
|
229
259
|
f = (col, Optional[bytes], Field(default=None, nullable=True, db_type='bytea'))
|
|
230
260
|
else:
|
|
@@ -321,14 +351,17 @@ class CopyToPg(CopyTo):
|
|
|
321
351
|
await asyncio.sleep(5e-3)
|
|
322
352
|
break # exit loop
|
|
323
353
|
except (asyncpg.exceptions.QueryCanceledError, StatementError) as e:
|
|
324
|
-
if
|
|
354
|
+
if (
|
|
355
|
+
"canceling statement due to statement timeout" in str(e)
|
|
356
|
+
or "another operation is in progress" in str(e)
|
|
357
|
+
):
|
|
325
358
|
retry_count += 1
|
|
326
359
|
self._logger.warning(
|
|
327
|
-
f"CopyToPg Error: {
|
|
360
|
+
f"CopyToPg Error: {e!s}, Retrying... {retry_count}/{max_retries}"
|
|
328
361
|
)
|
|
329
362
|
if retry_count > max_retries:
|
|
330
363
|
raise ComponentError(
|
|
331
|
-
f"CopyToPg Error: {
|
|
364
|
+
f"CopyToPg Error: {e!s}, Max Retries reached"
|
|
332
365
|
) from e
|
|
333
366
|
else:
|
|
334
367
|
# Create a new connection an wait until repeat operation:
|
|
@@ -362,6 +395,30 @@ class CopyToPg(CopyTo):
|
|
|
362
395
|
self._logger.error(f"Error getting column types: {e}")
|
|
363
396
|
return {}
|
|
364
397
|
|
|
398
|
+
async def _register_postgis_codecs(self, engine) -> None:
|
|
399
|
+
"""Register binary EWKB codecs for installed PostGIS spatial types.
|
|
400
|
+
|
|
401
|
+
Args:
|
|
402
|
+
engine: Underlying asyncpg connection used to register codecs.
|
|
403
|
+
|
|
404
|
+
Raises:
|
|
405
|
+
ComponentError: If neither PostGIS spatial type is installed.
|
|
406
|
+
"""
|
|
407
|
+
rows = await engine.fetch(
|
|
408
|
+
"SELECT t.typname, n.nspname FROM pg_type t JOIN pg_namespace n ON n.oid = t.typnamespace "
|
|
409
|
+
"WHERE t.typname IN ('geometry', 'geography')"
|
|
410
|
+
)
|
|
411
|
+
if not rows:
|
|
412
|
+
raise ComponentError("PostGIS extension not installed in target database")
|
|
413
|
+
for row in rows:
|
|
414
|
+
await engine.set_type_codec(
|
|
415
|
+
row["typname"],
|
|
416
|
+
schema=row["nspname"],
|
|
417
|
+
encoder=_to_ewkb,
|
|
418
|
+
decoder=shapely.from_wkb,
|
|
419
|
+
format="binary",
|
|
420
|
+
)
|
|
421
|
+
|
|
365
422
|
def _coerce_text_columns(self, pg_column_types: list[dict] | dict) -> None:
|
|
366
423
|
"""Stringify scalar values bound for columns the table stores as text.
|
|
367
424
|
|
|
@@ -380,7 +437,12 @@ class CopyToPg(CopyTo):
|
|
|
380
437
|
col["name"] for col in pg_column_types
|
|
381
438
|
if col.get("pg_type") in PG_TEXT_TYPES
|
|
382
439
|
]
|
|
383
|
-
skip =
|
|
440
|
+
skip = (
|
|
441
|
+
set(self._json_columns)
|
|
442
|
+
| set(self._array_columns)
|
|
443
|
+
| set(self._vector_columns)
|
|
444
|
+
| set(getattr(self, "_geometry_columns", {}))
|
|
445
|
+
)
|
|
384
446
|
scalars = (bool, int, float, Decimal, np.generic, datetime.date, datetime.datetime, pd.Timestamp)
|
|
385
447
|
converted = []
|
|
386
448
|
for col in text_cols:
|
|
@@ -483,6 +545,15 @@ class CopyToPg(CopyTo):
|
|
|
483
545
|
kw = {}
|
|
484
546
|
if hasattr(self, "use_quoting"):
|
|
485
547
|
kw = {"quoting": csv.QUOTE_NONNUMERIC}
|
|
548
|
+
for col in getattr(self, "_geometry_columns", {}):
|
|
549
|
+
if col in self.data.columns:
|
|
550
|
+
self.data[col] = self.data[col].map(
|
|
551
|
+
lambda geometry: (
|
|
552
|
+
f"SRID={shapely.get_srid(geometry) or 4326};{geometry.wkt}"
|
|
553
|
+
if isinstance(geometry, shapely.Geometry)
|
|
554
|
+
else geometry
|
|
555
|
+
)
|
|
556
|
+
)
|
|
486
557
|
self.data.to_csv(s_buf, index=None, header=None, **kw)
|
|
487
558
|
s_buf.seek(0)
|
|
488
559
|
if hasattr(self, "clean_df"):
|
|
@@ -505,6 +576,8 @@ class CopyToPg(CopyTo):
|
|
|
505
576
|
format="binary",
|
|
506
577
|
)
|
|
507
578
|
await register_vector(conn.engine())
|
|
579
|
+
if self._geometry_columns:
|
|
580
|
+
await self._register_postgis_codecs(conn.engine())
|
|
508
581
|
# Saving as CSV to the table
|
|
509
582
|
result = await conn.engine().copy_to_table(
|
|
510
583
|
table_name=self.tablename,
|
|
@@ -596,7 +669,10 @@ class CopyToPg(CopyTo):
|
|
|
596
669
|
if col in self.data.columns:
|
|
597
670
|
# Ensure array values are Python lists
|
|
598
671
|
self.data[col] = self.data[col].apply(
|
|
599
|
-
lambda x: None if x is None
|
|
672
|
+
lambda x: None if x is None
|
|
673
|
+
else x if isinstance(x, list)
|
|
674
|
+
else eval(x) if isinstance(x, str) and x.startswith('[')
|
|
675
|
+
else [x]
|
|
600
676
|
)
|
|
601
677
|
# Final NaT cleanup for all columns - ensure we have no NaT values before sending to PostgreSQL
|
|
602
678
|
for col in self.data.columns:
|
|
@@ -624,6 +700,8 @@ class CopyToPg(CopyTo):
|
|
|
624
700
|
format="binary"
|
|
625
701
|
)
|
|
626
702
|
await register_vector(conn.engine())
|
|
703
|
+
if self._geometry_columns:
|
|
704
|
+
await self._register_postgis_codecs(conn.engine())
|
|
627
705
|
|
|
628
706
|
if self._debug:
|
|
629
707
|
for c in self.data.columns:
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
"""Frankfurter — exchange-rate component over the Frankfurter v2 REST API."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import asyncio
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from datetime import date as date_type
|
|
7
|
+
from io import StringIO
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
import backoff
|
|
11
|
+
import httpx
|
|
12
|
+
import orjson
|
|
13
|
+
import pandas as pd
|
|
14
|
+
|
|
15
|
+
from ..exceptions import ComponentError, ConfigError, DataNotFound
|
|
16
|
+
from ..interfaces.flow import FlowComponent
|
|
17
|
+
from ..interfaces.http import HTTPService
|
|
18
|
+
|
|
19
|
+
API_URL: str = "https://api.frankfurter.dev"
|
|
20
|
+
TYPES: tuple[str, ...] = ("rates", "rate", "convert", "currencies", "currency", "providers")
|
|
21
|
+
METADATA_TYPES: tuple[str, ...] = ("currencies", "currency", "providers")
|
|
22
|
+
FORMATS: tuple[str, ...] = ("ndjson", "csv", "json")
|
|
23
|
+
GROUPS: tuple[str, ...] = ("week", "month")
|
|
24
|
+
ACCEPT_BY_FORMAT: dict[str, str] = {
|
|
25
|
+
"ndjson": "application/x-ndjson",
|
|
26
|
+
"csv": "text/csv",
|
|
27
|
+
"json": "application/json",
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class Frankfurter(HTTPService, FlowComponent):
|
|
32
|
+
"""
|
|
33
|
+
Frankfurter
|
|
34
|
+
|
|
35
|
+
Overview
|
|
36
|
+
|
|
37
|
+
Consumes the Frankfurter v2 exchange-rates REST API with an async httpx client. It
|
|
38
|
+
returns latest, historical, provider, and metadata exchange-rate data as a pandas
|
|
39
|
+
DataFrame by default, or as the raw response payload.
|
|
40
|
+
|
|
41
|
+
:widths: auto
|
|
42
|
+
|
|
43
|
+
| type | No | rates (default), rate, convert, currencies, currency, or providers. |
|
|
44
|
+
| base | No | Base currency ISO code; required for rate, convert, and currency. |
|
|
45
|
+
| quotes | No | Target currencies, as a list or comma-separated string. |
|
|
46
|
+
| date | No | Historical date in YYYY-MM-DD format. |
|
|
47
|
+
| start_date | No | Time-series start date, sent as from. |
|
|
48
|
+
| end_date | No | Time-series end date, sent as to. |
|
|
49
|
+
| group | No | week or month; requires start_date. |
|
|
50
|
+
| provider | No | Provider route key, exclusive with providers. |
|
|
51
|
+
| providers | No | Provider filter list, exclusive with provider. |
|
|
52
|
+
| expand_providers | No | Adds contributing providers to every rate row. |
|
|
53
|
+
| scope | No | currencies only: all includes legacy currencies. |
|
|
54
|
+
| amount | No | Positive convert amount, added to the result with converted. |
|
|
55
|
+
| inverse | No | Adds inverse_rate (1 / rate) computed locally, with no second request. |
|
|
56
|
+
| format | No | ndjson (default), csv, or json. Metadata is always json. |
|
|
57
|
+
| as_dataframe | No | Return a DataFrame when true, otherwise the raw payload. |
|
|
58
|
+
| api_url | No | API base URL, defaulting to https://api.frankfurter.dev. |
|
|
59
|
+
| timeout | No | Request timeout in seconds, default 30. |
|
|
60
|
+
| max_retries | No | Attempts for transport and server errors, default 3. |
|
|
61
|
+
|
|
62
|
+
:consumes: none
|
|
63
|
+
:produces: dataframe
|
|
64
|
+
|
|
65
|
+
Example:
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
- Frankfurter:
|
|
69
|
+
type: rates
|
|
70
|
+
base: USD
|
|
71
|
+
quotes: [EUR, GBP]
|
|
72
|
+
start_date: "2026-10-01"
|
|
73
|
+
end_date: "2026-10-05"
|
|
74
|
+
format: ndjson
|
|
75
|
+
inverse: true
|
|
76
|
+
as_dataframe: true
|
|
77
|
+
```
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
_version: str = "1.0.0"
|
|
81
|
+
accept: str = "application/json"
|
|
82
|
+
|
|
83
|
+
def __init__(
|
|
84
|
+
self,
|
|
85
|
+
loop: asyncio.AbstractEventLoop | None = None,
|
|
86
|
+
job: Callable | None = None,
|
|
87
|
+
stat: Callable | None = None,
|
|
88
|
+
**kwargs: Any,
|
|
89
|
+
) -> None:
|
|
90
|
+
self.type: str = kwargs.get("type", "rates")
|
|
91
|
+
self.base: str | None = kwargs.get("base")
|
|
92
|
+
self.quotes: list[str] | str | None = kwargs.get("quotes")
|
|
93
|
+
self.date: str | None = kwargs.get("date")
|
|
94
|
+
self.start_date: str | None = kwargs.get("start_date")
|
|
95
|
+
self.end_date: str | None = kwargs.get("end_date")
|
|
96
|
+
self.group: str | None = kwargs.get("group")
|
|
97
|
+
self.provider: str | None = kwargs.get("provider")
|
|
98
|
+
self.providers: list[str] | str | None = kwargs.get("providers")
|
|
99
|
+
self.expand_providers: bool = kwargs.get("expand_providers", False)
|
|
100
|
+
self.scope: str | None = kwargs.get("scope")
|
|
101
|
+
self.amount: float | None = kwargs.get("amount")
|
|
102
|
+
self.inverse: bool = kwargs.get("inverse", False)
|
|
103
|
+
self.format: str = kwargs.get("format", "ndjson")
|
|
104
|
+
self.as_dataframe: bool = kwargs.get("as_dataframe", True)
|
|
105
|
+
self.api_url: str = kwargs.get("api_url", API_URL)
|
|
106
|
+
self.max_retries: int = kwargs.get("max_retries", 3)
|
|
107
|
+
self._injected_client: httpx.AsyncClient | None = kwargs.pop("client", None)
|
|
108
|
+
super().__init__(loop=loop, job=job, stat=stat, **kwargs)
|
|
109
|
+
self.timeout = kwargs.get("timeout", 30)
|
|
110
|
+
|
|
111
|
+
async def start(self, **kwargs: Any) -> bool:
|
|
112
|
+
"""Validate configuration and initialize an owned or injected HTTP client."""
|
|
113
|
+
self._validate()
|
|
114
|
+
if self._injected_client is not None:
|
|
115
|
+
self._client = self._injected_client
|
|
116
|
+
else:
|
|
117
|
+
self._client = httpx.AsyncClient(base_url=self.api_url, timeout=httpx.Timeout(self.timeout))
|
|
118
|
+
return True
|
|
119
|
+
|
|
120
|
+
async def run(self) -> Any:
|
|
121
|
+
"""Fetch, parse, and publish the configured Frankfurter result."""
|
|
122
|
+
path, params, headers = self._build_request()
|
|
123
|
+
response = await self._fetch(path, params, headers)
|
|
124
|
+
self._raise_for_status(response)
|
|
125
|
+
result = await self._parse(response)
|
|
126
|
+
if self.inverse and isinstance(result, pd.DataFrame):
|
|
127
|
+
result = self._apply_inverse(result)
|
|
128
|
+
if self.type == "convert" and isinstance(result, pd.DataFrame):
|
|
129
|
+
result = self._apply_conversion(result)
|
|
130
|
+
self.add_metric("URL", str(response.url))
|
|
131
|
+
self.add_metric("TYPE", self.type)
|
|
132
|
+
self.add_metric("FORMAT", self.format)
|
|
133
|
+
self.add_metric("CONTENT_TYPE", response.headers.get("content-type", ""))
|
|
134
|
+
if isinstance(result, pd.DataFrame):
|
|
135
|
+
self.add_metric("NUMROWS", len(result.index))
|
|
136
|
+
self.add_metric("NUMCOLS", len(result.columns))
|
|
137
|
+
self._result = result
|
|
138
|
+
return self._result
|
|
139
|
+
|
|
140
|
+
async def close(self) -> bool:
|
|
141
|
+
"""Close only the HTTP client that this component created."""
|
|
142
|
+
if hasattr(self, "_client") and self._client is not None and self._injected_client is None:
|
|
143
|
+
await self._client.aclose()
|
|
144
|
+
return True
|
|
145
|
+
|
|
146
|
+
def _validate(self) -> None:
|
|
147
|
+
"""Validate component configuration before issuing any HTTP request."""
|
|
148
|
+
if self.type not in TYPES:
|
|
149
|
+
raise ConfigError(f"Invalid type: {self.type}")
|
|
150
|
+
if self.format not in FORMATS:
|
|
151
|
+
raise ConfigError(f"Invalid format: {self.format}")
|
|
152
|
+
if self.group is not None and self.group not in GROUPS:
|
|
153
|
+
raise ConfigError(f"Invalid group: {self.group}")
|
|
154
|
+
if self.group is not None and not self.start_date:
|
|
155
|
+
raise ConfigError("group requires start_date")
|
|
156
|
+
if self.end_date and not self.start_date:
|
|
157
|
+
raise ConfigError("end_date requires start_date")
|
|
158
|
+
if self.date and (self.start_date or self.end_date):
|
|
159
|
+
raise ConfigError("date is exclusive with start_date and end_date")
|
|
160
|
+
|
|
161
|
+
parsed_dates: dict[str, date_type] = {}
|
|
162
|
+
for name in ("date", "start_date", "end_date"):
|
|
163
|
+
value = getattr(self, name)
|
|
164
|
+
if value:
|
|
165
|
+
try:
|
|
166
|
+
parsed_dates[name] = date_type.fromisoformat(value)
|
|
167
|
+
except (TypeError, ValueError) as exc:
|
|
168
|
+
raise ConfigError(f"Invalid {name}: {value}") from exc
|
|
169
|
+
if self.start_date and self.end_date and parsed_dates["end_date"] < parsed_dates["start_date"]:
|
|
170
|
+
raise ConfigError("end_date must be greater than or equal to start_date")
|
|
171
|
+
|
|
172
|
+
self.quotes = self._normalize_codes(self.quotes)
|
|
173
|
+
self.providers = self._normalize_codes(self.providers)
|
|
174
|
+
if self.base:
|
|
175
|
+
self.base = self.base.upper()
|
|
176
|
+
if self.provider:
|
|
177
|
+
self.provider = self.provider.upper()
|
|
178
|
+
|
|
179
|
+
if self.type == "rate" and (not self.base or not self.quotes or len(self.quotes) != 1):
|
|
180
|
+
raise ConfigError("rate requires base and exactly one quote")
|
|
181
|
+
if self.type == "convert":
|
|
182
|
+
if not self.base:
|
|
183
|
+
raise ConfigError("convert requires base")
|
|
184
|
+
if not isinstance(self.amount, (int, float)) or isinstance(self.amount, bool) or self.amount <= 0:
|
|
185
|
+
raise ConfigError("convert requires amount greater than zero")
|
|
186
|
+
if self.inverse:
|
|
187
|
+
if self.type in METADATA_TYPES:
|
|
188
|
+
raise ConfigError(f"inverse is not supported for type: {self.type}")
|
|
189
|
+
if not self.as_dataframe:
|
|
190
|
+
raise ConfigError("inverse requires as_dataframe")
|
|
191
|
+
if self.provider and self.providers:
|
|
192
|
+
raise ConfigError("provider is exclusive with providers")
|
|
193
|
+
if self.type == "currency" and not self.base:
|
|
194
|
+
raise ConfigError("currency requires base")
|
|
195
|
+
if self.type in METADATA_TYPES and self.format != "json":
|
|
196
|
+
self._logger.warning("Frankfurter metadata endpoints always use JSON; forcing format=json")
|
|
197
|
+
self.format = "json"
|
|
198
|
+
|
|
199
|
+
@staticmethod
|
|
200
|
+
def _normalize_codes(value: list[str] | str | None) -> list[str] | None:
|
|
201
|
+
"""Normalize a comma-separated or list currency/provider value to uppercase codes."""
|
|
202
|
+
if value is None:
|
|
203
|
+
return None
|
|
204
|
+
values = value.split(",") if isinstance(value, str) else value
|
|
205
|
+
return [str(item).strip().upper() for item in values if str(item).strip()]
|
|
206
|
+
|
|
207
|
+
def _build_request(self) -> tuple[str, dict[str, str], dict[str, str]]:
|
|
208
|
+
"""Build a v2 Frankfurter path, query parameters, and request headers."""
|
|
209
|
+
path: str
|
|
210
|
+
params: dict[str, str] = {}
|
|
211
|
+
if self.type in ("rates", "convert"):
|
|
212
|
+
path = "/v2/rates"
|
|
213
|
+
if self.provider:
|
|
214
|
+
path = f"/v2/providers/{self.provider}/rates"
|
|
215
|
+
self._add_rate_params(params)
|
|
216
|
+
elif self.type == "rate":
|
|
217
|
+
quote = self.quotes[0]
|
|
218
|
+
path = f"/v2/rate/{self.base}/{quote}"
|
|
219
|
+
if self.provider:
|
|
220
|
+
path = f"/v2/providers/{self.provider}/rate/{self.base}/{quote}"
|
|
221
|
+
self._add_date_params(params)
|
|
222
|
+
if self.providers:
|
|
223
|
+
params["providers"] = ",".join(self.providers)
|
|
224
|
+
elif self.type == "currencies":
|
|
225
|
+
path = "/v2/currencies"
|
|
226
|
+
if self.scope:
|
|
227
|
+
params["scope"] = self.scope
|
|
228
|
+
elif self.type == "currency":
|
|
229
|
+
path = f"/v2/currency/{self.base}"
|
|
230
|
+
else:
|
|
231
|
+
path = "/v2/providers"
|
|
232
|
+
if self.provider:
|
|
233
|
+
path = f"/v2/providers/{self.provider}"
|
|
234
|
+
|
|
235
|
+
if self.format == "csv" and self.type not in METADATA_TYPES:
|
|
236
|
+
path = f"{path}.csv"
|
|
237
|
+
return path, params, {"Accept": ACCEPT_BY_FORMAT[self.format]}
|
|
238
|
+
|
|
239
|
+
def _add_rate_params(self, params: dict[str, str]) -> None:
|
|
240
|
+
"""Add rate-endpoint query parameters to a request parameter mapping."""
|
|
241
|
+
if self.base:
|
|
242
|
+
params["base"] = self.base
|
|
243
|
+
if self.quotes:
|
|
244
|
+
params["quotes"] = ",".join(self.quotes)
|
|
245
|
+
self._add_date_params(params)
|
|
246
|
+
if self.group:
|
|
247
|
+
params["group"] = self.group
|
|
248
|
+
if self.providers:
|
|
249
|
+
params["providers"] = ",".join(self.providers)
|
|
250
|
+
if self.expand_providers:
|
|
251
|
+
params["expand"] = "providers"
|
|
252
|
+
|
|
253
|
+
def _add_date_params(self, params: dict[str, str]) -> None:
|
|
254
|
+
"""Add mutually-exclusive historical-date or time-series query parameters."""
|
|
255
|
+
if self.date:
|
|
256
|
+
params["date"] = self.date
|
|
257
|
+
elif self.start_date:
|
|
258
|
+
params["from"] = self.start_date
|
|
259
|
+
if self.end_date:
|
|
260
|
+
params["to"] = self.end_date
|
|
261
|
+
|
|
262
|
+
async def _fetch(self, path: str, params: dict[str, str], headers: dict[str, str]) -> httpx.Response:
|
|
263
|
+
"""Fetch a response, retrying transport failures and 5xx statuses with backoff."""
|
|
264
|
+
async def request() -> httpx.Response:
|
|
265
|
+
response = await self._client.get(path, params=params, headers=headers)
|
|
266
|
+
if response.status_code >= 500:
|
|
267
|
+
raise httpx.HTTPStatusError("Frankfurter server error", request=response.request, response=response)
|
|
268
|
+
return response
|
|
269
|
+
|
|
270
|
+
retry_request = backoff.on_exception(
|
|
271
|
+
backoff.expo,
|
|
272
|
+
(httpx.TransportError, httpx.HTTPStatusError),
|
|
273
|
+
max_tries=self.max_retries,
|
|
274
|
+
jitter=backoff.full_jitter,
|
|
275
|
+
)(request)
|
|
276
|
+
try:
|
|
277
|
+
return await retry_request()
|
|
278
|
+
except httpx.HTTPStatusError as exc:
|
|
279
|
+
raise ComponentError(f"Frankfurter {exc.response.status_code}: server error") from exc
|
|
280
|
+
except httpx.TransportError as exc:
|
|
281
|
+
raise ComponentError(f"Frankfurter transport error: {exc}") from exc
|
|
282
|
+
|
|
283
|
+
def _raise_for_status(self, response: httpx.Response) -> None:
|
|
284
|
+
"""Map Frankfurter API errors to the framework's component exceptions."""
|
|
285
|
+
if response.status_code < 400:
|
|
286
|
+
return
|
|
287
|
+
message = response.text
|
|
288
|
+
try:
|
|
289
|
+
payload = orjson.loads(response.text)
|
|
290
|
+
message = payload.get("message", message) if isinstance(payload, dict) else message
|
|
291
|
+
except orjson.JSONDecodeError:
|
|
292
|
+
pass
|
|
293
|
+
if response.status_code == 404:
|
|
294
|
+
raise DataNotFound(f"Frankfurter: {message}")
|
|
295
|
+
raise ComponentError(f"Frankfurter {response.status_code}: {message}")
|
|
296
|
+
|
|
297
|
+
async def _parse(self, response: httpx.Response) -> pd.DataFrame | str | list | dict:
|
|
298
|
+
"""Parse a response according to its Content-Type and output configuration."""
|
|
299
|
+
text = response.text
|
|
300
|
+
if not text.strip():
|
|
301
|
+
raise DataNotFound("Frankfurter: No data was found.")
|
|
302
|
+
content_type = response.headers.get("content-type", "").split(";", 1)[0].strip().lower()
|
|
303
|
+
if content_type == "application/x-ndjson":
|
|
304
|
+
if not self.as_dataframe:
|
|
305
|
+
return text
|
|
306
|
+
result: pd.DataFrame | str | list | dict = pd.read_json(StringIO(text), lines=True)
|
|
307
|
+
elif content_type == "text/csv":
|
|
308
|
+
if not self.as_dataframe:
|
|
309
|
+
return text
|
|
310
|
+
result = pd.read_csv(StringIO(text))
|
|
311
|
+
elif content_type == "application/json":
|
|
312
|
+
payload = orjson.loads(text)
|
|
313
|
+
if not payload:
|
|
314
|
+
raise DataNotFound("Frankfurter: No data was found.")
|
|
315
|
+
if not self.as_dataframe:
|
|
316
|
+
return payload
|
|
317
|
+
result = await self.create_dataframe(payload)
|
|
318
|
+
else:
|
|
319
|
+
raise ComponentError(f"Frankfurter: Unsupported content type: {content_type}")
|
|
320
|
+
|
|
321
|
+
if not isinstance(result, pd.DataFrame) or result.empty:
|
|
322
|
+
raise DataNotFound("Frankfurter: No data was found.")
|
|
323
|
+
if "date" in result.columns:
|
|
324
|
+
result["date"] = pd.to_datetime(result["date"], format="%Y-%m-%d")
|
|
325
|
+
if "rate" in result.columns:
|
|
326
|
+
result["rate"] = result["rate"].astype("float64")
|
|
327
|
+
return result
|
|
328
|
+
|
|
329
|
+
def _apply_inverse(self, df: pd.DataFrame) -> pd.DataFrame:
|
|
330
|
+
"""Add the reciprocal quote-to-base rate, computed locally from the same response.
|
|
331
|
+
|
|
332
|
+
The API exposes no multi-base query, so the opposite direction would otherwise cost
|
|
333
|
+
one extra request per base. ``inverse_rate`` is ``1 / rate``; a zero rate yields NaN
|
|
334
|
+
instead of infinity.
|
|
335
|
+
"""
|
|
336
|
+
if "rate" not in df.columns:
|
|
337
|
+
raise ComponentError("Frankfurter: inverse requires a rate column")
|
|
338
|
+
df = df.copy()
|
|
339
|
+
rate = df["rate"].astype("float64")
|
|
340
|
+
df["inverse_rate"] = (1.0 / rate.where(rate != 0.0)).astype("float64")
|
|
341
|
+
return df
|
|
342
|
+
|
|
343
|
+
def _apply_conversion(self, df: pd.DataFrame) -> pd.DataFrame:
|
|
344
|
+
"""Add configured amount and unrounded converted-value columns to a rates frame."""
|
|
345
|
+
df = df.copy()
|
|
346
|
+
df["amount"] = float(self.amount)
|
|
347
|
+
df["converted"] = df["amount"] * df["rate"]
|
|
348
|
+
return df
|