From 9a404da2dd6bbab3c5bf6a426ee63d0b4950381b Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 20 Oct 2023 18:22:54 -0300 Subject: [PATCH 01/22] Add pynput dependency --- jobbergate-cli/poetry.lock | 3140 +++++++++++++++++++++++++++++++-- jobbergate-cli/pyproject.toml | 2 + 2 files changed, 3042 insertions(+), 100 deletions(-) diff --git a/jobbergate-cli/poetry.lock b/jobbergate-cli/poetry.lock index aca2702b8..dd1c207b7 100644 --- a/jobbergate-cli/poetry.lock +++ b/jobbergate-cli/poetry.lock @@ -328,6 +328,17 @@ six = ">=1.9.0" gmpy = ["gmpy"] gmpy2 = ["gmpy2"] +[[package]] +name = "evdev" +version = "1.6.1" +description = "Bindings to the Linux input handling subsystem" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "evdev-1.6.1.tar.gz", hash = "sha256:299db8628cc73b237fc1cc57d3c2948faa0756e2a58b6194b5bf81dc2081f1e3"}, +] + [[package]] name = "exceptiongroup" version = "1.1.3" @@ -532,6 +543,21 @@ files = [ [package.dependencies] ansicon = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "keyboard" +version = "0.13.5" +description = "Hook and simulate keyboard events on Windows and Linux" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "keyboard-0.13.5-py3-none-any.whl", hash = "sha256:8e9c2422f1217e0bd84489b9ecd361027cc78415828f4fe4f88dd4acd587947b"}, + {file = "keyboard-0.13.5.zip", hash = "sha256:63ed83305955939ca5c9a73755e5cc43e8242263f5ad5fd3bb7e0b032f3d308b"}, +] + +[package.dependencies] +pyobjc = {version = "*", markers = "sys_platform == \"darwin\""} + [[package]] name = "loguru" version = "0.6.0" @@ -831,189 +857,3103 @@ files = [ plugins = ["importlib-metadata"] [[package]] -name = "pyperclip" -version = "1.8.2" -description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" +name = "pynput" +version = "1.7.6" +description = "Monitor and control user input devices" +category = "main" optional = false python-versions = "*" files = [ - {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, + {file = "pynput-1.7.6-py2.py3-none-any.whl", hash = "sha256:19861b2a0c430d646489852f89500e0c9332e295f2c020e7c2775e7046aa2e2f"}, + {file = "pynput-1.7.6.tar.gz", hash = "sha256:3a5726546da54116b687785d38b1db56997ce1d28e53e8d22fc656d8b92e533c"}, ] +[package.dependencies] +evdev = {version = ">=1.3", markers = "sys_platform in \"linux\""} +pyobjc-framework-ApplicationServices = {version = ">=8.0", markers = "sys_platform == \"darwin\""} +pyobjc-framework-Quartz = {version = ">=8.0", markers = "sys_platform == \"darwin\""} +python-xlib = {version = ">=0.17", markers = "sys_platform in \"linux\""} +six = "*" + [[package]] -name = "pytest" -version = "7.4.2" -description = "pytest: simple powerful testing with Python" +name = "pyobjc" +version = "10.0" +description = "Python<->ObjC Interoperability Module" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, + {file = "pyobjc-10.0-py3-none-any.whl", hash = "sha256:0f30bd3f25425a6c435f37713bc062382c85022d07ddb1f199a9211d859846db"}, + {file = "pyobjc-10.0.tar.gz", hash = "sha256:9987a79e30cdd0de31e58ed41240e2fc4cbf2c085c9fd8988f7de5d0ae06b101"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} +pyobjc-core = "10.0" +pyobjc-framework-Accessibility = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Accounts = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AddressBook = "10.0" +pyobjc-framework-AdServices = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AdSupport = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-AppleScriptKit = "10.0" +pyobjc-framework-AppleScriptObjC = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-ApplicationServices = "10.0" +pyobjc-framework-AppTrackingTransparency = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AudioVideoBridging = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AuthenticationServices = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Automator = "10.0" +pyobjc-framework-AVFoundation = {version = "10.0", markers = "platform_release >= \"11.0\""} +pyobjc-framework-AVKit = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-AVRouting = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BackgroundAssets = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BusinessChat = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-CalendarStore = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-CallKit = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CFNetwork = "10.0" +pyobjc-framework-Cinematic = {version = "10.0", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ClassKit = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CloudKit = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-Cocoa = "10.0" +pyobjc-framework-Collaboration = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-ColorSync = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-Contacts = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-ContactsUI = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-CoreAudio = "10.0" +pyobjc-framework-CoreAudioKit = "10.0" +pyobjc-framework-CoreBluetooth = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-CoreData = "10.0" +pyobjc-framework-CoreHaptics = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreLocation = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CoreMedia = {version = "10.0", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMediaIO = {version = "10.0", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMIDI = "10.0" +pyobjc-framework-CoreML = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreMotion = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreServices = "10.0" +pyobjc-framework-CoreSpotlight = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreText = "10.0" +pyobjc-framework-CoreWLAN = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CryptoTokenKit = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-DataDetection = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-DeviceCheck = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-DictionaryServices = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-DiscRecording = "10.0" +pyobjc-framework-DiscRecordingUI = "10.0" +pyobjc-framework-DiskArbitration = "10.0" +pyobjc-framework-DVDPlayback = "10.0" +pyobjc-framework-EventKit = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-ExceptionHandling = "10.0" +pyobjc-framework-ExecutionPolicy = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ExtensionKit = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ExternalAccessory = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-FileProvider = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FileProviderUI = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FinderSync = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-FSEvents = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-GameCenter = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameController = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-GameKit = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameplayKit = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-HealthKit = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ImageCaptureCore = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-InputMethodKit = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-InstallerPlugins = "10.0" +pyobjc-framework-InstantMessage = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-Intents = {version = "10.0", markers = "platform_release >= \"16.0\""} +pyobjc-framework-IntentsUI = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-IOBluetooth = "10.0" +pyobjc-framework-IOBluetoothUI = "10.0" +pyobjc-framework-IOSurface = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-iTunesLibrary = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-KernelManagement = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-LatentSemanticMapping = "10.0" +pyobjc-framework-LaunchServices = "10.0" +pyobjc-framework-libdispatch = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-libxpc = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-LinkPresentation = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-LocalAuthentication = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MailKit = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MapKit = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaAccessibility = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaLibrary = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaPlayer = {version = "10.0", markers = "platform_release >= \"16.0\""} +pyobjc-framework-MediaToolbox = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-Metal = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalFX = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-MetalKit = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalPerformanceShaders = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-MetricKit = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MLCompute = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ModelIO = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MultipeerConnectivity = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-NaturalLanguage = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetFS = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-Network = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetworkExtension = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-NotificationCenter = {version = "10.0", markers = "platform_release >= \"14.0\""} +pyobjc-framework-OpenDirectory = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-OSAKit = "10.0" +pyobjc-framework-OSLog = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PassKit = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-PencilKit = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PHASE = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Photos = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PhotosUI = {version = "10.0", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PreferencePanes = "10.0" +pyobjc-framework-PubSub = {version = "10.0", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} +pyobjc-framework-PushKit = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Quartz = "10.0" +pyobjc-framework-QuickLookThumbnailing = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ReplayKit = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-SafariServices = {version = "10.0", markers = "platform_release >= \"16.0\""} +pyobjc-framework-SafetyKit = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SceneKit = {version = "10.0", markers = "platform_release >= \"11.0\""} +pyobjc-framework-ScreenCaptureKit = {version = "10.0", markers = "platform_release >= \"21.4\""} +pyobjc-framework-ScreenSaver = "10.0" +pyobjc-framework-ScreenTime = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ScriptingBridge = {version = "10.0", markers = "platform_release >= \"9.0\""} +pyobjc-framework-SearchKit = "10.0" +pyobjc-framework-Security = "10.0" +pyobjc-framework-SecurityFoundation = "10.0" +pyobjc-framework-SecurityInterface = "10.0" +pyobjc-framework-SensitiveContentAnalysis = {version = "10.0", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ServiceManagement = {version = "10.0", markers = "platform_release >= \"10.0\""} +pyobjc-framework-SharedWithYou = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SharedWithYouCore = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ShazamKit = {version = "10.0", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Social = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-SoundAnalysis = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Speech = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-SpriteKit = {version = "10.0", markers = "platform_release >= \"13.0\""} +pyobjc-framework-StoreKit = {version = "10.0", markers = "platform_release >= \"11.0\""} +pyobjc-framework-Symbols = {version = "10.0", markers = "platform_release >= \"23.0\""} +pyobjc-framework-SyncServices = "10.0" +pyobjc-framework-SystemConfiguration = "10.0" +pyobjc-framework-SystemExtensions = {version = "10.0", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ThreadNetwork = {version = "10.0", markers = "platform_release >= \"22.0\""} +pyobjc-framework-UniformTypeIdentifiers = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-UserNotifications = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-UserNotificationsUI = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-VideoSubscriberAccount = {version = "10.0", markers = "platform_release >= \"18.0\""} +pyobjc-framework-VideoToolbox = {version = "10.0", markers = "platform_release >= \"12.0\""} +pyobjc-framework-Virtualization = {version = "10.0", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Vision = {version = "10.0", markers = "platform_release >= \"17.0\""} +pyobjc-framework-WebKit = "10.0" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +allbindings = ["pyobjc-core (==10.0)", "pyobjc-framework-AVFoundation (==10.0)", "pyobjc-framework-AVKit (==10.0)", "pyobjc-framework-AVRouting (==10.0)", "pyobjc-framework-Accessibility (==10.0)", "pyobjc-framework-Accounts (==10.0)", "pyobjc-framework-AdServices (==10.0)", "pyobjc-framework-AdSupport (==10.0)", "pyobjc-framework-AddressBook (==10.0)", "pyobjc-framework-AppTrackingTransparency (==10.0)", "pyobjc-framework-AppleScriptKit (==10.0)", "pyobjc-framework-AppleScriptObjC (==10.0)", "pyobjc-framework-ApplicationServices (==10.0)", "pyobjc-framework-AudioVideoBridging (==10.0)", "pyobjc-framework-AuthenticationServices (==10.0)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.0)", "pyobjc-framework-Automator (==10.0)", "pyobjc-framework-BackgroundAssets (==10.0)", "pyobjc-framework-BusinessChat (==10.0)", "pyobjc-framework-CFNetwork (==10.0)", "pyobjc-framework-CalendarStore (==10.0)", "pyobjc-framework-CallKit (==10.0)", "pyobjc-framework-Cinematic (==10.0)", "pyobjc-framework-ClassKit (==10.0)", "pyobjc-framework-CloudKit (==10.0)", "pyobjc-framework-Cocoa (==10.0)", "pyobjc-framework-Collaboration (==10.0)", "pyobjc-framework-ColorSync (==10.0)", "pyobjc-framework-Contacts (==10.0)", "pyobjc-framework-ContactsUI (==10.0)", "pyobjc-framework-CoreAudio (==10.0)", "pyobjc-framework-CoreAudioKit (==10.0)", "pyobjc-framework-CoreBluetooth (==10.0)", "pyobjc-framework-CoreData (==10.0)", "pyobjc-framework-CoreHaptics (==10.0)", "pyobjc-framework-CoreLocation (==10.0)", "pyobjc-framework-CoreMIDI (==10.0)", "pyobjc-framework-CoreML (==10.0)", "pyobjc-framework-CoreMedia (==10.0)", "pyobjc-framework-CoreMediaIO (==10.0)", "pyobjc-framework-CoreMotion (==10.0)", "pyobjc-framework-CoreServices (==10.0)", "pyobjc-framework-CoreSpotlight (==10.0)", "pyobjc-framework-CoreText (==10.0)", "pyobjc-framework-CoreWLAN (==10.0)", "pyobjc-framework-CryptoTokenKit (==10.0)", "pyobjc-framework-DVDPlayback (==10.0)", "pyobjc-framework-DataDetection (==10.0)", "pyobjc-framework-DeviceCheck (==10.0)", "pyobjc-framework-DictionaryServices (==10.0)", "pyobjc-framework-DiscRecording (==10.0)", "pyobjc-framework-DiscRecordingUI (==10.0)", "pyobjc-framework-DiskArbitration (==10.0)", "pyobjc-framework-EventKit (==10.0)", "pyobjc-framework-ExceptionHandling (==10.0)", "pyobjc-framework-ExecutionPolicy (==10.0)", "pyobjc-framework-ExtensionKit (==10.0)", "pyobjc-framework-ExternalAccessory (==10.0)", "pyobjc-framework-FSEvents (==10.0)", "pyobjc-framework-FileProvider (==10.0)", "pyobjc-framework-FileProviderUI (==10.0)", "pyobjc-framework-FinderSync (==10.0)", "pyobjc-framework-GameCenter (==10.0)", "pyobjc-framework-GameController (==10.0)", "pyobjc-framework-GameKit (==10.0)", "pyobjc-framework-GameplayKit (==10.0)", "pyobjc-framework-HealthKit (==10.0)", "pyobjc-framework-IOBluetooth (==10.0)", "pyobjc-framework-IOBluetoothUI (==10.0)", "pyobjc-framework-IOSurface (==10.0)", "pyobjc-framework-ImageCaptureCore (==10.0)", "pyobjc-framework-InputMethodKit (==10.0)", "pyobjc-framework-InstallerPlugins (==10.0)", "pyobjc-framework-InstantMessage (==10.0)", "pyobjc-framework-Intents (==10.0)", "pyobjc-framework-IntentsUI (==10.0)", "pyobjc-framework-KernelManagement (==10.0)", "pyobjc-framework-LatentSemanticMapping (==10.0)", "pyobjc-framework-LaunchServices (==10.0)", "pyobjc-framework-LinkPresentation (==10.0)", "pyobjc-framework-LocalAuthentication (==10.0)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.0)", "pyobjc-framework-MLCompute (==10.0)", "pyobjc-framework-MailKit (==10.0)", "pyobjc-framework-MapKit (==10.0)", "pyobjc-framework-MediaAccessibility (==10.0)", "pyobjc-framework-MediaLibrary (==10.0)", "pyobjc-framework-MediaPlayer (==10.0)", "pyobjc-framework-MediaToolbox (==10.0)", "pyobjc-framework-Metal (==10.0)", "pyobjc-framework-MetalFX (==10.0)", "pyobjc-framework-MetalKit (==10.0)", "pyobjc-framework-MetalPerformanceShaders (==10.0)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.0)", "pyobjc-framework-MetricKit (==10.0)", "pyobjc-framework-ModelIO (==10.0)", "pyobjc-framework-MultipeerConnectivity (==10.0)", "pyobjc-framework-NaturalLanguage (==10.0)", "pyobjc-framework-NetFS (==10.0)", "pyobjc-framework-Network (==10.0)", "pyobjc-framework-NetworkExtension (==10.0)", "pyobjc-framework-NotificationCenter (==10.0)", "pyobjc-framework-OSAKit (==10.0)", "pyobjc-framework-OSLog (==10.0)", "pyobjc-framework-OpenDirectory (==10.0)", "pyobjc-framework-PHASE (==10.0)", "pyobjc-framework-PassKit (==10.0)", "pyobjc-framework-PencilKit (==10.0)", "pyobjc-framework-Photos (==10.0)", "pyobjc-framework-PhotosUI (==10.0)", "pyobjc-framework-PreferencePanes (==10.0)", "pyobjc-framework-PubSub (==10.0)", "pyobjc-framework-PushKit (==10.0)", "pyobjc-framework-Quartz (==10.0)", "pyobjc-framework-QuickLookThumbnailing (==10.0)", "pyobjc-framework-ReplayKit (==10.0)", "pyobjc-framework-SafariServices (==10.0)", "pyobjc-framework-SafetyKit (==10.0)", "pyobjc-framework-SceneKit (==10.0)", "pyobjc-framework-ScreenCaptureKit (==10.0)", "pyobjc-framework-ScreenSaver (==10.0)", "pyobjc-framework-ScreenTime (==10.0)", "pyobjc-framework-ScriptingBridge (==10.0)", "pyobjc-framework-SearchKit (==10.0)", "pyobjc-framework-Security (==10.0)", "pyobjc-framework-SecurityFoundation (==10.0)", "pyobjc-framework-SecurityInterface (==10.0)", "pyobjc-framework-SensitiveContentAnalysis (==10.0)", "pyobjc-framework-ServiceManagement (==10.0)", "pyobjc-framework-SharedWithYou (==10.0)", "pyobjc-framework-SharedWithYouCore (==10.0)", "pyobjc-framework-ShazamKit (==10.0)", "pyobjc-framework-Social (==10.0)", "pyobjc-framework-SoundAnalysis (==10.0)", "pyobjc-framework-Speech (==10.0)", "pyobjc-framework-SpriteKit (==10.0)", "pyobjc-framework-StoreKit (==10.0)", "pyobjc-framework-Symbols (==10.0)", "pyobjc-framework-SyncServices (==10.0)", "pyobjc-framework-SystemConfiguration (==10.0)", "pyobjc-framework-SystemExtensions (==10.0)", "pyobjc-framework-ThreadNetwork (==10.0)", "pyobjc-framework-UniformTypeIdentifiers (==10.0)", "pyobjc-framework-UserNotifications (==10.0)", "pyobjc-framework-UserNotificationsUI (==10.0)", "pyobjc-framework-VideoSubscriberAccount (==10.0)", "pyobjc-framework-VideoToolbox (==10.0)", "pyobjc-framework-Virtualization (==10.0)", "pyobjc-framework-Vision (==10.0)", "pyobjc-framework-WebKit (==10.0)", "pyobjc-framework-iTunesLibrary (==10.0)", "pyobjc-framework-libdispatch (==10.0)", "pyobjc-framework-libxpc (==10.0)"] [[package]] -name = "pytest-cov" -version = "4.1.0" -description = "Pytest plugin for measuring coverage." +name = "pyobjc-core" +version = "10.0" +description = "Python<->ObjC Interoperability Module" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pyobjc-core-10.0.tar.gz", hash = "sha256:3dd0a7b3acd7e0b8ffd3f5331b29a3aaebe79a03323e61efeece38627a6020b3"}, + {file = "pyobjc_core-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:61ea5112a672d21b5b0ed945778707c655b17c400672aef144705674c4b95499"}, + {file = "pyobjc_core-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:99b72cda4593e0c66037b25a178f2bcc6efffb6d5d9dcd477ecca859a1f9ae8e"}, + {file = "pyobjc_core-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2843ca32e86a01ccee67d7ad82a325ddd72d754929d1f2c0d96bc8741dc9af09"}, + {file = "pyobjc_core-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a886b9d2a93210cab4ae72601ab005ca6f627fa2f0cc62c43c03ef1405067a11"}, + {file = "pyobjc_core-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:166666b5c380a49e8aa1ad1dda978c581e29a00703d82203216f3c65a3f397a4"}, + {file = "pyobjc_core-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:198a0360f64e4c0148eed07b42d1de0545f56c498c356d1d5524422bb3352907"}, +] + +[[package]] +name = "pyobjc-framework-accessibility" +version = "10.0" +description = "Wrappers for the framework Accessibility on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Accessibility-10.0.tar.gz", hash = "sha256:5aa152201ccc235a6bbba271b698de42445a4a058b8dceca982d70384c195255"}, + {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e23bcd2e43ab8bc800255ee2b09c1af924b2d6b4602a4ec94719a08d181fdf62"}, + {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:911295caa0ad264787580e2aa8680d3c7c1957e22e9db3ccdc0d9a95a27f3333"}, + {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c2f95c08ae2d7d0c8745d81a68d74aba00a3de026a7831fb67561f85a5886c0b"}, ] [package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +[[package]] +name = "pyobjc-framework-accounts" +version = "10.0" +description = "Wrappers for the framework Accounts on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Accounts-10.0.tar.gz", hash = "sha256:5679caa87b3bd597f776e154c43dbeb460251798165d55daf79f105a131fdf2c"}, + {file = "pyobjc_framework_Accounts-10.0-py2.py3-none-any.whl", hash = "sha256:72c67d4b1f174d2045558d7b1348d5dce642ea0907ab3dfb79d2f449e601ad42"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pytest-env" -version = "0.6.2" -description = "py.test plugin that allows you to add environment variables." +name = "pyobjc-framework-addressbook" +version = "10.0" +description = "Wrappers for the framework AddressBook on macOS" +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, + {file = "pyobjc-framework-AddressBook-10.0.tar.gz", hash = "sha256:e61dbd593113721ff45bbc706884727dc483502eb4d514fd4c53f56b9a86bef7"}, + {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:71a0667a4d89bf9a50e2fda57705d296ab04ae24063ee67f377226fe6693699d"}, + {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bce60351f7e8db831b9044702e368eee09daacb7bcc51d036f3b95a13b634316"}, + {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:75c7d8dc47dc1f3c01e9bab9af33fb012950b9b0926d8fd0cf3774c6c3a2a2ca"}, ] [package.dependencies] -pytest = ">=2.6.0" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pytest-freezegun" -version = "0.4.2" -description = "Wrap tests with fixtures in freeze_time" +name = "pyobjc-framework-adservices" +version = "10.0" +description = "Wrappers for the framework AdServices on macOS" +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pytest-freezegun-0.4.2.zip", hash = "sha256:19c82d5633751bf3ec92caa481fb5cffaac1787bd485f0df6436fd6242176949"}, - {file = "pytest_freezegun-0.4.2-py2.py3-none-any.whl", hash = "sha256:5318a6bfb8ba4b709c8471c94d0033113877b3ee02da5bfcd917c1889cde99a7"}, + {file = "pyobjc-framework-AdServices-10.0.tar.gz", hash = "sha256:a49b6f57e0bebef2e5484deebd68828106ec3f2e70683f75cb3414a080689983"}, + {file = "pyobjc_framework_AdServices-10.0-py2.py3-none-any.whl", hash = "sha256:d3c9bb0c7da4c98879368ad22c6e558fff73c6d3d971ee5ac8bdd38f723f811b"}, ] [package.dependencies] -freezegun = ">0.3" -pytest = ">=3.0.0" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pytest-mock" -version = "3.11.1" -description = "Thin-wrapper around the mock package for easier use with pytest" +name = "pyobjc-framework-adsupport" +version = "10.0" +description = "Wrappers for the framework AdSupport on macOS" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, - {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, + {file = "pyobjc-framework-AdSupport-10.0.tar.gz", hash = "sha256:d208bcbd4462b2ffa686e9137aa1a028fa2c1cd5dda1d31e409b7e935e843565"}, + {file = "pyobjc_framework_AdSupport-10.0-py2.py3-none-any.whl", hash = "sha256:9fe3295892d2906f46ee36c982cf1b41a94dc9c5a316937174966512d61a7939"}, ] [package.dependencies] -pytest = ">=5.0" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] +[[package]] +name = "pyobjc-framework-applescriptkit" +version = "10.0" +description = "Wrappers for the framework AppleScriptKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-AppleScriptKit-10.0.tar.gz", hash = "sha256:8d6192e4f8a9ca89b2b32e9f6f18e0cb9dd4c026d112d28b18235b1c9f8016fb"}, + {file = "pyobjc_framework_AppleScriptKit-10.0-py2.py3-none-any.whl", hash = "sha256:567123701b86833118236f0177ce7979cd91be5c2d0fe26afb7b73499812f673"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pytest-random-order" -version = "1.1.0" -description = "Randomise the order in which pytest tests are run with some control over the randomness" +name = "pyobjc-framework-applescriptobjc" +version = "10.0" +description = "Wrappers for the framework AppleScriptObjC on macOS" +category = "main" optional = false -python-versions = ">=3.5.0" +python-versions = ">=3.8" files = [ - {file = "pytest-random-order-1.1.0.tar.gz", hash = "sha256:dbe6debb9353a7af984cc9eddbeb3577dd4dbbcc1529a79e3d21f68ed9b45605"}, - {file = "pytest_random_order-1.1.0-py3-none-any.whl", hash = "sha256:6cb1e59ab0f798bb0c3488c11ae0c70d7d3340306a466d28b28ccd8ef8c20b7e"}, + {file = "pyobjc-framework-AppleScriptObjC-10.0.tar.gz", hash = "sha256:3adb92fe129543c5b763e95788b8b408292ce6ff83436fec4182bcbda6493c28"}, + {file = "pyobjc_framework_AppleScriptObjC-10.0-py2.py3-none-any.whl", hash = "sha256:ef800eae5cd54a41f88c8bf83fcc7ab3c902ecaf104e469a6f1ead15da517479"}, ] [package.dependencies] -pytest = ">=3.0.0" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pytest-responsemock" -version = "1.1.1" -description = "Simplified requests calls mocking for pytest" +name = "pyobjc-framework-applicationservices" +version = "10.0" +description = "Wrappers for the framework ApplicationServices on macOS" +category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-responsemock-1.1.1.tar.gz", hash = "sha256:71abcebaf61f8930bd92bd643bfc9bc2891299e4e819e21fec18c8434d5dc9af"}, - {file = "pytest_responsemock-1.1.1-py2-none-any.whl", hash = "sha256:bb2583f0cf64e8b47183464d43fe30656ddb7318f64ff2fdf935067827c461c0"}, + {file = "pyobjc-framework-ApplicationServices-10.0.tar.gz", hash = "sha256:8a667da95c09202def58746c42d5093f90be5762a52e6f5ad8beb334b51dca20"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b1688abb30cfd6607ae70dd07d3118a5f2d3593916342ffb842a208e7ff52f2b"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ebbe656c8b1a8fb3880d47ebef5cb7c95b9a646c84bc369cf132347dc4754143"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9cf969781616261ec7a2c427120a9fb4ac861e62bc2854de6cabdd2e4ea47141"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:49c4b3e6399572552ba8167bff16ef6cd2eeba6e417547a67d26316acb80f612"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b26b16077fbd3e32f4216b05798a9fe79b4c00c498581adf15c4f47db13ed270"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b20d97f6aa63c4935363f4d9bad736d92b67f46ccd9c8c8c84d08e03b2583691"}, ] [package.dependencies] -pytest = "*" -responses = ">=0.18.0" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" [[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" +name = "pyobjc-framework-apptrackingtransparency" +version = "10.0" +description = "Wrappers for the framework AppTrackingTransparency on macOS" +category = "main" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +python-versions = ">=3.8" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "pyobjc-framework-AppTrackingTransparency-10.0.tar.gz", hash = "sha256:846b148300b0c588cfdfc016cf2ace3f77ee4470ca8112907fb2ef00b1271660"}, + {file = "pyobjc_framework_AppTrackingTransparency-10.0-py2.py3-none-any.whl", hash = "sha256:20d1c8516c2ac568b90f3daf7d93b91a37ea61aa874b4a541d276c7fdac623e4"}, ] [package.dependencies] -six = ">=1.5" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "python-dotenv" -version = "1.0.0" -description = "Read key-value pairs from a .env file and set them as environment variables" +name = "pyobjc-framework-audiovideobridging" +version = "10.0" +description = "Wrappers for the framework AudioVideoBridging on macOS" +category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "pyobjc-framework-AudioVideoBridging-10.0.tar.gz", hash = "sha256:ca0b947dca87a831328aa8da16232f98699d7a144ed4d088d6b5a388552d85fb"}, + {file = "pyobjc_framework_AudioVideoBridging-10.0-py2.py3-none-any.whl", hash = "sha256:979081558ec3a8cd875515120027448fbe24fa0605b96cf13c7541bffab281bc"}, ] -[package.extras] -cli = ["click (>=5.0)"] +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "python-editor" -version = "1.0.4" -description = "Programmatically open an editor, capture the result." +name = "pyobjc-framework-authenticationservices" +version = "10.0" +description = "Wrappers for the framework AuthenticationServices on macOS" +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"}, - {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"}, - {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"}, + {file = "pyobjc-framework-AuthenticationServices-10.0.tar.gz", hash = "sha256:0ee315ccae58e9821d92052ac937f26d4a033b1fbbda1e213b1752b10653ba5b"}, + {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b9aafe7b5e6f46ebb1e52f94d562bc4c137ff2cbbcebf7aebce7a0d0e4a2431f"}, + {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e20a06e250547c3bf29ea209e38f59eb471b3081a160dcb2ef26f05c8ff46412"}, + {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:019ebeeb191938bc34058cec587b137aee6b7cfcfaa01e23a4073fa633a04cdc"}, ] +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + [[package]] -name = "python-jose" -version = "3.3.0" -description = "JOSE implementation in Python" +name = "pyobjc-framework-automaticassessmentconfiguration" +version = "10.0" +description = "Wrappers for the framework AutomaticAssessmentConfiguration on macOS" +category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, - {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, + {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.0.tar.gz", hash = "sha256:008599dc2b2af1175e574ebce2be950c5bb67a2c9eb7391535dac4f514e158a2"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:46dcc05d21ebd6253c266acd40b2392725823455ea730b3dcb62a42764f28bec"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:46a318317123e7a2915bf04f93a11ab11f97f21706aff2152cdcdcc1835252f4"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:520eeb727edd2f9f91dd261b31ed3de2baafb40da59f2f7120b3f39166cbafbf"}, ] [package.dependencies] -ecdsa = "!=0.15" -pyasn1 = "*" -rsa = "*" +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" -[package.extras] -cryptography = ["cryptography (>=3.4.0)"] -pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] -pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] +[[package]] +name = "pyobjc-framework-automator" +version = "10.0" +description = "Wrappers for the framework Automator on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Automator-10.0.tar.gz", hash = "sha256:c6d8591650e17a1d9d92f62fd83848d3afbf70b08dfc12a205fb78684ab4b9ac"}, + {file = "pyobjc_framework_Automator-10.0-py2.py3-none-any.whl", hash = "sha256:261e36071f1a662f387bab48f711059e6e468ddd5054c0f2bae7af7e619a7aba"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-avfoundation" +version = "10.0" +description = "Wrappers for the framework AVFoundation on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-AVFoundation-10.0.tar.gz", hash = "sha256:40366a8c6bb964e7b7263e8cf060350f69ad365e6a5356d6ccab9f256a9987f7"}, + {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b9b2e6731a64425f297bed68c6fc6e31e20965277c96012e62f7fa9059ff544e"}, + {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:917185ff4e3f262b98cca2789ed68d43b0b111b161b9c8bda0bc7e6ab6def41c"}, + {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d2bf8c4cfe72a24a4632d4152522c6b1b9b69b1bfadc7d76fd1082e7cc3cec7e"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreAudio = ">=10.0" +pyobjc-framework-CoreMedia = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-avkit" +version = "10.0" +description = "Wrappers for the framework AVKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-AVKit-10.0.tar.gz", hash = "sha256:53f8b74a76c948c0d9a96f331d99e1a6ab7a1ce87af7d9bbfffd267532bea98c"}, + {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:96e153fc74339c5634a8f49614b8039028995cde08b3dd8b024a46ebe4cb4286"}, + {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:44df99e60a3ab5359d92ccc840c0abbed2b8072d27a483fac46ec73800e128bd"}, + {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5bc830421f74c1b78aa85605d2e72c5aa18b6d74b24b82824a1b6e519b66cc64"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-avrouting" +version = "10.0" +description = "Wrappers for the framework AVRouting on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-AVRouting-10.0.tar.gz", hash = "sha256:41213eb9fdff4ec58dddee240de7100601cef74e458265623763b460a422438c"}, + {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cc38ebfc114467ec14b39e774c93d4f1e4345bc4a723ba555a42bacbb5e45dd3"}, + {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0cd4531d5edd0c6be1ba53db037f04c32ad91caf9572d03666608b8ab93c07ae"}, + {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9089d3e2b53c10f131d4f23f14ccd2c89dff59b47666ba5383616a2a6026fa2"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-backgroundassets" +version = "10.0" +description = "Wrappers for the framework BackgroundAssets on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-BackgroundAssets-10.0.tar.gz", hash = "sha256:d2b9a7a46a632d0adeaa6ba411ddb829d8efa3273a93d7918cc143dfe9dfb54b"}, + {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9b9c236a3ccaf1e68bfaade6b5c6d843f628bc4d3636b093be78cd7bb7d9c9f6"}, + {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:93736d6fb6bda52cfddf4006ffbdcf6bfe414826c04901d4c5b644cc380ade44"}, + {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a248a110092983f0b19d9c5b21d7027987954ae4d58775411d540139e6972a69"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-businesschat" +version = "10.0" +description = "Wrappers for the framework BusinessChat on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-BusinessChat-10.0.tar.gz", hash = "sha256:fb929e4ab2b8fe618ac8038a12745d32972e0f6d1dd7c3eb41395542e0200207"}, + {file = "pyobjc_framework_BusinessChat-10.0-py2.py3-none-any.whl", hash = "sha256:2eb35f6f3585302c32cab1af13501b13f97badd13c0ed885c4ecd66ed24add15"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-calendarstore" +version = "10.0" +description = "Wrappers for the framework CalendarStore on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CalendarStore-10.0.tar.gz", hash = "sha256:bf73fc69e306456a36417b97a56398013637ae551cdfae1ba53e2a86935afa52"}, + {file = "pyobjc_framework_CalendarStore-10.0-py2.py3-none-any.whl", hash = "sha256:1e0da82b7d1a0d1f34991795d1f7dc8e186f79faf9a4b0ef5fe1a74112ac70a4"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-callkit" +version = "10.0" +description = "Wrappers for the framework CallKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CallKit-10.0.tar.gz", hash = "sha256:640bc3175b494f6cd0e2a56a453025d2d7d18c97af18800c24dcd8e257209101"}, + {file = "pyobjc_framework_CallKit-10.0-py2.py3-none-any.whl", hash = "sha256:3c431115a3d3c826268a9c4272c0b261e5a15206e9468915a859cde52f32d190"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-cfnetwork" +version = "10.0" +description = "Wrappers for the framework CFNetwork on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CFNetwork-10.0.tar.gz", hash = "sha256:18118d62e05e37692e3cfa5b1ab8c0b82079aad72240bcb6d626740aa4405480"}, + {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8d9d3badde8adac25c2fef5bf768792a0ee1cbaff9b5d9f416a8a77b0729f2d7"}, + {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc16d60fdba0aa41ea10353ca4108c464c18eb6caadb457f845bdd32de6a236e"}, + {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b935f6f43fa42d9f2617e9858e243e0381338aaa4c2a47c59efbefd310d6faa6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-cinematic" +version = "10.0" +description = "Wrappers for the framework Cinematic on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Cinematic-10.0.tar.gz", hash = "sha256:5cc96e10e76dc617f11a327ea351078a44b1a4c918187626d8d7e9e9c3d7bcd7"}, + {file = "pyobjc_framework_Cinematic-10.0-py2.py3-none-any.whl", hash = "sha256:667197227d10add7869dbcfd8396faa251682ff62a702c125ddaf7566469c25b"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-AVFoundation = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreMedia = ">=10.0" +pyobjc-framework-Metal = ">=10.0" + +[[package]] +name = "pyobjc-framework-classkit" +version = "10.0" +description = "Wrappers for the framework ClassKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ClassKit-10.0.tar.gz", hash = "sha256:6f0c6dbba20945f515b5a3540c88d91e9c00c1af854c889fb56491179dc064be"}, + {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:586e5a5d26d4444614cde1be7acc51483ed806057c87c035c3a22bcf6d910d37"}, + {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea01948a1711a680fb2209adbc72931759b3d96621b10d207d3ec41a3663a3e1"}, + {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ccd9f14c9ecbd35af3264e017871d26ea51d335d011ebd6ecc6c11b0cd605f3d"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-cloudkit" +version = "10.0" +description = "Wrappers for the framework CloudKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CloudKit-10.0.tar.gz", hash = "sha256:05dab3798e9126625a0a72ca1987a768d5bf5c3293b594c9eb8d4e1eb02d26ec"}, + {file = "pyobjc_framework_CloudKit-10.0-py2.py3-none-any.whl", hash = "sha256:cf58196fc29c0fec8f5471172d0fc2f4fe03ded5ccb4d4c1075967283164aad3"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Accounts = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreData = ">=10.0" +pyobjc-framework-CoreLocation = ">=10.0" + +[[package]] +name = "pyobjc-framework-cocoa" +version = "10.0" +description = "Wrappers for the Cocoa frameworks on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Cocoa-10.0.tar.gz", hash = "sha256:723421eff4f59e4ca9a9bb8ec6dafbc0f778141236fa85a49fdd86732d58a74c"}, + {file = "pyobjc_framework_Cocoa-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:80c22a8fc7f085746d9cd222adeca8fe6790e3e6ad7eed5fc70b32aa87c10adb"}, + {file = "pyobjc_framework_Cocoa-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0187cba228976a45f41116c74aab079b64bacb3ffc3c886a4bd8e472bf9be581"}, + {file = "pyobjc_framework_Cocoa-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a81dabdc40268591e3196087388e680c6570fed1b521df9b04733cb3ece0414e"}, + {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0a23db9ab99e338e1d8a268d873cc15408f78cec9946308393ca2241820c18b8"}, + {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a3c66fe56a5156a818fbf056c589f8140a5fdb1dcb1f1075cb34d3755474d900"}, + {file = "pyobjc_framework_Cocoa-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bf9020e85ead569021b15272dcd90207aab6c754093f520b11d4210a2efbdd06"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" + +[[package]] +name = "pyobjc-framework-collaboration" +version = "10.0" +description = "Wrappers for the framework Collaboration on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Collaboration-10.0.tar.gz", hash = "sha256:242148c98010f44b4f09d6037b9aa963e54038c1769474643997e7c4618f2c2a"}, + {file = "pyobjc_framework_Collaboration-10.0-py2.py3-none-any.whl", hash = "sha256:971e75adb91bc3f39750ce3f5332e72500f82d04f6e95cb1e8dd1dc468826530"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-colorsync" +version = "10.0" +description = "Wrappers for the framework ColorSync on Mac OS X" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ColorSync-10.0.tar.gz", hash = "sha256:e5722486f02a3c2330996e76207e7e26dde1597122503659259715a7dedf73da"}, + {file = "pyobjc_framework_ColorSync-10.0-py2.py3-none-any.whl", hash = "sha256:5c5d361ebdcf72f4a2665cf0c68adc153b6621ea7ea0df6bbc60a4a69ec1e2b0"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-contacts" +version = "10.0" +description = "Wrappers for the framework Contacts on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Contacts-10.0.tar.gz", hash = "sha256:7130d83be467c4bb877716a73b2e1a7768f19f2c43bf3bbff2d9ae412008d4a8"}, + {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8f3b8cbf337d6a674374d6b90292871bdda0304c58aa7d4e23b96c40816534db"}, + {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e344065964de463cc18aaac5d684ae900a3867889a1ad24e0fa1937f03ceac0c"}, + {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:03d0a882fef637ebdc709c3915ae437fdc5afe63141fb6c1c3e6041c4831c2b6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-contactsui" +version = "10.0" +description = "Wrappers for the framework ContactsUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ContactsUI-10.0.tar.gz", hash = "sha256:38f885b861af10e5773f4dbbabd4170bcd35610d879763caac47623ff7a410a9"}, + {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d73a991b76238161d97de16e717e1de0a1359dd5439f7a23277a9cddaf9f2d35"}, + {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5ea57e3eecc9a8dc451c91a21eb2b03a6a94b23c5c61dbf26d774abedb604313"}, + {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0fe6ad4f5d1fb15a7c749512458c71da8d5ffe46170e992b1a1d0f07dafd98a3"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Contacts = ">=10.0" + +[[package]] +name = "pyobjc-framework-coreaudio" +version = "10.0" +description = "Wrappers for the framework CoreAudio on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreAudio-10.0.tar.gz", hash = "sha256:6042e9fea80bf5c23a8a3a4a2888243b7152316275ab863ed6bc289eabdef9f1"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bd83cb720352e59c99d3c60a06670babad27c04ca0266dabf127a4575f3899bf"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ae64cfc907b7bc7fb275b6072e6aedf0755f9ec57f862bf74c53ae6fef6e340"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:41c75e7a2e17619841c55a0be8c3c0666fad190a7142f1a80f01451184832cf3"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0802a45702bf8c2c0cbc5e80863a3c7924d1a6b07ffcd21e3aeac22a590772a1"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c7b4af7752e7c99e4b958313a00697b19a3475adb611469909ab5431c0d6ef08"}, + {file = "pyobjc_framework_CoreAudio-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ee779edf528b56bc5dcd2b4d5dda4795516a68d3443453341e485f461e14301"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coreaudiokit" +version = "10.0" +description = "Wrappers for the framework CoreAudioKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreAudioKit-10.0.tar.gz", hash = "sha256:0e604b47fb04303399d6cdeda5e83c0fed53ee61348052d44321ffbe898b08dc"}, + {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b199359b9140df894a96673bb805f29ef40004167d1bdbea899222844ed3d5e2"}, + {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:096d04184ed27dc415bcd6c7652f4db6901efbd6df544c1b18f69c1e67c5c03e"}, + {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4e06731de042dded49b0854c946b6e5cd67b37d3a892609985ffbb2d60169224"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreAudio = ">=10.0" + +[[package]] +name = "pyobjc-framework-corebluetooth" +version = "10.0" +description = "Wrappers for the framework CoreBluetooth on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreBluetooth-10.0.tar.gz", hash = "sha256:dddc9020cd2ca008c7037c61026641fff5d91a608b9e3bda51d4ba6afbb04e3c"}, + {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5dc85f0acea4ec8fb59ed91f89e677133b0e5efab21fe14694328ddcdbdc22c1"}, + {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:155b2f9814970a07c602286ce19d3d3c3a812951a62b9f19aaa80475f9b49f05"}, + {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:119c4747dcc8a1b9980b8bac4f2ffd90a3950b048b9fbf03e70656eaaaefe7d4"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coredata" +version = "10.0" +description = "Wrappers for the framework CoreData on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreData-10.0.tar.gz", hash = "sha256:6799c3ab2ad5d609df8d8801d19740abdbe8ea70851abfe8a660bcb91818238d"}, + {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98803ba27319308305cb498947e8edad829ab4564c945217563a0a4d13607702"}, + {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ad6c11c9d1fd9c368291546bdaaf9355c1410bce662f782509249863dd8368ef"}, + {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1c897103683737761f8d1c248011affbad3f2bc08f0c9f312a051da6134931a2"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-corehaptics" +version = "10.0" +description = "Wrappers for the framework CoreHaptics on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreHaptics-10.0.tar.gz", hash = "sha256:3ea964b452763e27b24373fc61adf65fe6553bd815e8b9b3399f43ee10ab600c"}, + {file = "pyobjc_framework_CoreHaptics-10.0-py2.py3-none-any.whl", hash = "sha256:5c7bbc18db031be82bdbdde8f96045220a0309e200e8779bc7e361eb2d482892"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-corelocation" +version = "10.0" +description = "Wrappers for the framework CoreLocation on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreLocation-10.0.tar.gz", hash = "sha256:d84001ab5ef58441514bd92ed9b2fd4225faf0241d2a09ab503592fbc6a6066d"}, + {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0a9d535f00a0369d493f49bd898e68d5ce7227ce161a3f0df0d9e6668e396a77"}, + {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cf39e4f092d7a94a8ad516bda2603872fd0952aeac0bb0143e7ec2e2244a172d"}, + {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4ec1c23b92285f7f33bdc86dc4e6cbccb8788ceca6ea6205f420859ed172abee"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coremedia" +version = "10.0" +description = "Wrappers for the framework CoreMedia on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreMedia-10.0.tar.gz", hash = "sha256:27d0755cbd3ae3b487ace5e3233f0598b976905f43357b71fd73489865f7b9e1"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0fd980d45d710c54e668e96268cb94dd6c877526a141581d2749bfdce4e6791"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:064c35991073fe18f27f321cb33cac1d484052d154cee5222260c7fd179bc3fe"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d8bf02036e60c5f47b904a259e0665b7774d915eda95810566ca1b82a1be27e"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb6d6dd75febc83d22e986b2894307bd6bac1980535e7f70931bcac034bdbded"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:df15b39eec3420b68f878b6de698c8e94fc2a46a2bd5a16928c9cfa2ae24e8ee"}, + {file = "pyobjc_framework_CoreMedia-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b1251c455e593dc0af52eb38c61da9847f349b9dfe6b6449a24f15aea938a31"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coremediaio" +version = "10.0" +description = "Wrappers for the framework CoreMediaIO on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreMediaIO-10.0.tar.gz", hash = "sha256:d535c67d287d21e25d739c72ae9f7ce8b0f96eacfd3e19758da69ba355553483"}, + {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2e430da4065cadd8857b1615c5641874484c6d857805f9fd2185de3a8fc4ef53"}, + {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d20f7c39b065f24d12b403b663f1cc09ce794ebcd1a02a199ca335bf4b5fc26"}, + {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ad5fcce52f5f8628b3bad5ddfc9c60f4f74a5509ed59a022cc57d583b279d78d"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coremidi" +version = "10.0" +description = "Wrappers for the framework CoreMIDI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreMIDI-10.0.tar.gz", hash = "sha256:7e464775fb6bd77148394b5f53caa61c36e3426f61cc621f299bca91931eb3a4"}, + {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7ddb0b6222046b35a93601e3e4562bcbb32e4abe6ffa510e80660d718e45eaf8"}, + {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:68d0a9ac864d2ee1b7ba6977e68698d8db853149e64c18279149c1cc6ac39748"}, + {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e5e97f794154425def217d041ccf50f4c820b827d27ae48ad5eedb09eaf2f6f6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coreml" +version = "10.0" +description = "Wrappers for the framework CoreML on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreML-10.0.tar.gz", hash = "sha256:11b70aaa34d45b2a325231ddc571686b8e5c6404b74eb647c84c0cb2cf51052a"}, + {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c3b6ce1fc80a77909aa1bd0938da7516b3e8a0b04a5800036bdc1456e01c084d"}, + {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4bb7b240be5e184a68527db3a4d85a7af1263fca258fb25ee9d5b84a90b6e553"}, + {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:beb7eae3e2dce823c2e4d2ceb480884f09271e29784c8b5016b268df8b987378"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coremotion" +version = "10.0" +description = "Wrappers for the framework CoreMotion on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreMotion-10.0.tar.gz", hash = "sha256:d735668ffe028450c09499bca57467dbf77e0360b6f0623f1e054b2fe723fffb"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8d0fd4ab5f6642f716becd2ba3dfe45d83e3a042ba184bf5056d8d2064bf716"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2e0f6657464d5ba212691e5918f3d777a1c36d1694080ad029ef3d987c25b29c"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5a2082d1e3acbfde753909680a869c8cc7b11c1a494aa497496ea9c9c98fdf29"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cd4f635d73a3bdcfe1f6d6b9dc47816d7eda1152e1c9f4f2e2f4de1b4111cf38"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d1947bbb8348bc576fcf412781f616a35bc58bc6a8fef58630e5b801ee0e36cc"}, + {file = "pyobjc_framework_CoreMotion-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3bd7725e0f764d861d1ec6a531fa1ae046970ff6d9fcb62fcb804ca86bc28316"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coreservices" +version = "10.0" +description = "Wrappers for the framework CoreServices on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreServices-10.0.tar.gz", hash = "sha256:a6e80770ead727979e9ffd4ea97c30889e1fdec49873bb5129bf3ef3c5b90005"}, + {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5846d8fcd2b352c479b5517176a9c6939cb50599041d9f68ddf55804d58f5751"}, + {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b8638b63f83246f6659624ad20e068ba11fdfe915f7c6318de7e3213cd2b0aac"}, + {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6ecf120cc89401b410d8f307cd499c6d80f4f52d1d1291150507b85a69bbc12c"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-FSEvents = ">=10.0" + +[[package]] +name = "pyobjc-framework-corespotlight" +version = "10.0" +description = "Wrappers for the framework CoreSpotlight on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreSpotlight-10.0.tar.gz", hash = "sha256:393767c63f2513ab4056c688aecdaf1ae67357f8d99fa963d765cfbdc9ccba47"}, + {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:dc07cfa097f79946c15fcc3bb2aea5db17822f2e9f85478c5b07d2f5f194db4f"}, + {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8760252792ce351a97b9bfed9e3f84999b698b63fcf759e8b9df5978c67236ea"}, + {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4370d760d93cfc58691fa7fb585f20067157a18c06cd4c3bfc3dd7c9824eda5a"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-coretext" +version = "10.0" +description = "Wrappers for the framework CoreText on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreText-10.0.tar.gz", hash = "sha256:2c157d82373b8128afb9a61df26cbf029896adf86bf86876ce3f8cc3c3f3cb1b"}, + {file = "pyobjc_framework_CoreText-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dfba918655fcd37018f38e6ca9db557c67b63ddd2de93319eb05c07f492cca32"}, + {file = "pyobjc_framework_CoreText-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c8ec3d634b440b53727adf45212bb34639ee404b891be87a62f0f2253b7a92e5"}, + {file = "pyobjc_framework_CoreText-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab1f76d3f6bf6470217478d2edf62360c5e934dfd66a4d0d35a8bf07086bee65"}, + {file = "pyobjc_framework_CoreText-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:543f37fe792ec75d72bead5616f6dc29ab2d8e26d824080fd7625efc015ecc50"}, + {file = "pyobjc_framework_CoreText-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1c4026c3d15922c7ec372b2e43a5673ba0ed436e59e046afd860a3d6a5676c25"}, + {file = "pyobjc_framework_CoreText-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca269a49bb76fccb6d50eef3c72650bc686ae19a4cc9be6288fd6e758fa67768"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-corewlan" +version = "10.0" +description = "Wrappers for the framework CoreWLAN on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CoreWLAN-10.0.tar.gz", hash = "sha256:f71594ca1d2741f5979688d6d3880237c469943b49a030de131102357cdccb2a"}, + {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f245de3d5d7ff2f49cfe72c0bf499f5fb97ad2e930efd485f8c01ec11d749136"}, + {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7d7cb58fba9272a6dd20a84733006e574092128d9d581f346f4c777cb6c353ff"}, + {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6211ad500131bf1bd0680847f67a948478551043054a4514f90879067c854bb6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-cryptotokenkit" +version = "10.0" +description = "Wrappers for the framework CryptoTokenKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-CryptoTokenKit-10.0.tar.gz", hash = "sha256:314fe7067cecc0901602173a47bcdb3107ddbae6a22052b0e217f79b7d388153"}, + {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:94fe71998c6821d4f45de60227ee0541ad71baf758b3051e7a3c84e0abcccaac"}, + {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f30f0165b5914da418450cc3f8b870d02052f8eb9b14f27dd61aff7928cd1eb5"}, + {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9d4db0b30f395d0d4e26b48645ee7b219f499c243124fbd6495406620576ca31"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-datadetection" +version = "10.0" +description = "Wrappers for the framework DataDetection on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DataDetection-10.0.tar.gz", hash = "sha256:026b44718fc71750f7ba258be461ecb1463ebeac0ea3bf26e559cd10dfd7bd57"}, + {file = "pyobjc_framework_DataDetection-10.0-py2.py3-none-any.whl", hash = "sha256:6f6420b187475cccf20757577b005bc16b4a606dd8d9d431b59151e571fa6b12"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-devicecheck" +version = "10.0" +description = "Wrappers for the framework DeviceCheck on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DeviceCheck-10.0.tar.gz", hash = "sha256:00a02c603020a9e9369f894d0b6931217ca0c9606f4947c34bfb4f413cc736a7"}, + {file = "pyobjc_framework_DeviceCheck-10.0-py2.py3-none-any.whl", hash = "sha256:e930659cb8cb3096b88f43c237951364dbd1b29d98390e0b55b48aec0442cc92"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-dictionaryservices" +version = "10.0" +description = "Wrappers for the framework DictionaryServices on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DictionaryServices-10.0.tar.gz", hash = "sha256:a250ead7a3a0504ea860ed4ebefce3bec4b308b91ea760c33bfcc14af5054873"}, + {file = "pyobjc_framework_DictionaryServices-10.0-py2.py3-none-any.whl", hash = "sha256:8bc50b80e8f77e411b707827062609b67695bc5ae619452388eb02bdeea19f05"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-CoreServices = ">=10.0" + +[[package]] +name = "pyobjc-framework-discrecording" +version = "10.0" +description = "Wrappers for the framework DiscRecording on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DiscRecording-10.0.tar.gz", hash = "sha256:1b4a9a702f0695ed87392693ab916cc120c179547d6fa7bf3e59708fe218ec22"}, + {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6d4d737f0536d1d4cd4efc88787d4b20a74b71e2f91e5554346e8b1b993a2f97"}, + {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:11fecd1d6e464582e0ef0a0a4469e1ed1ea36e45c27d2bbd77cd42dca4f0dadd"}, + {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d547d69e3ac8f9c735456af7c440c0c318752e1e8b55868f8a2da0aae0bef8ee"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-discrecordingui" +version = "10.0" +description = "Wrappers for the framework DiscRecordingUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DiscRecordingUI-10.0.tar.gz", hash = "sha256:9a77cd9fb311ececab84b682ebfbb573a13f6f9f67b39733c1920fcea83dfd31"}, + {file = "pyobjc_framework_DiscRecordingUI-10.0-py2.py3-none-any.whl", hash = "sha256:c80135d65bb25f1d4c3c40af9a50c3b15125c54703d6e65cf4316fe3ed3bd0e7"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-DiscRecording = ">=10.0" + +[[package]] +name = "pyobjc-framework-diskarbitration" +version = "10.0" +description = "Wrappers for the framework DiskArbitration on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DiskArbitration-10.0.tar.gz", hash = "sha256:cfd8e4c7dbef6b69832fa8e2425c53bf8bbc83b8c78bb5a098a787335df7bf8f"}, + {file = "pyobjc_framework_DiskArbitration-10.0-py2.py3-none-any.whl", hash = "sha256:cf7dadef895980e08dc7dd646c6d819ea3b4b8321abd2af512d9bde5de389895"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-dvdplayback" +version = "10.0" +description = "Wrappers for the framework DVDPlayback on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-DVDPlayback-10.0.tar.gz", hash = "sha256:fe0bf9cfbf1be9888685aedd3b25b6793d072e947c6eddcc0ccb2c4a07bee453"}, + {file = "pyobjc_framework_DVDPlayback-10.0-py2.py3-none-any.whl", hash = "sha256:ea31f045edf56abda6e1fc2aa9ff0bee267fd549b7787bbaf7e437e4fa58135e"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-eventkit" +version = "10.0" +description = "Wrappers for the framework Accounts on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-EventKit-10.0.tar.gz", hash = "sha256:8219a650edf1b6842c92306a077502488f95473d138fd842068d4a1e56621989"}, + {file = "pyobjc_framework_EventKit-10.0-py2.py3-none-any.whl", hash = "sha256:48d65edd47efd0864d93e5bbe3f05121c413d4006b7c0f0a3f0592b58d80a0db"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-exceptionhandling" +version = "10.0" +description = "Wrappers for the framework ExceptionHandling on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ExceptionHandling-10.0.tar.gz", hash = "sha256:288b99a86e29999dc0f3f1a6bb90c8dc0b79ed51b265ee4c9e673d660e959cb2"}, + {file = "pyobjc_framework_ExceptionHandling-10.0-py2.py3-none-any.whl", hash = "sha256:3c7669d6e93d4f4d472de8c7b8e3b5ecd42dda16161e24b3bf796713fc20eb1a"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-executionpolicy" +version = "10.0" +description = "Wrappers for the framework ExecutionPolicy on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ExecutionPolicy-10.0.tar.gz", hash = "sha256:cd6c14970a090f033673e5870804051a2bc41b060d02420eac0e7816b9e2c034"}, + {file = "pyobjc_framework_ExecutionPolicy-10.0-py2.py3-none-any.whl", hash = "sha256:823eda14ad797436101f365cb3a5cd7bc46bb8a8972418851427d478b9274ded"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-extensionkit" +version = "10.0" +description = "Wrappers for the framework ExtensionKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ExtensionKit-10.0.tar.gz", hash = "sha256:ed9c596728819a58803841bb36d0a5773929d6bd32279b924dcd004266a901df"}, + {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e8b4bf58985300019f64ed8ce3dc6c9ba73621646dacdc5273d93c5ffdc9238b"}, + {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6613e71395266e948d4bd8917245adf77ca58166d37aac73e340081a4ad6ff8b"}, + {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:144cd81e9e2ff3de8553c236a9fb7b9fbe2023f3886d32328dc324442be7ab07"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-externalaccessory" +version = "10.0" +description = "Wrappers for the framework ExternalAccessory on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ExternalAccessory-10.0.tar.gz", hash = "sha256:4b00f07e6ec8e68974d89242789720bfecdc474c26bf0f2b2b2d648e6b6155cc"}, + {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9d51574d483719d646dc4327125ed1038c5bbaae626ae08b178cac3269f0285"}, + {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0d4101c0f3f7a4e0c7cc5c0bc0357dd564b03b5f9c41efa8f347d998806c8df1"}, + {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a2885e163ebbae023bd6990a3864f2ca24aa49fffbff3be54f23225bac64ca6e"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-fileprovider" +version = "10.0" +description = "Wrappers for the framework FileProvider on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-FileProvider-10.0.tar.gz", hash = "sha256:432165e8ae9e85437bd4b36be4fe1a467f03f5e9d6aca07228ac5385a96b2d44"}, + {file = "pyobjc_framework_FileProvider-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b596718c562d72bfc9dacdc53cef494b8afe9f2c9d715a16c3b209c628edcba"}, + {file = "pyobjc_framework_FileProvider-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:69427a57d2238a3274fe351e39d98918a097bafc54eebba68edc07624086e38a"}, + {file = "pyobjc_framework_FileProvider-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b9820f94be07aaae649d0eae55d7661f828fc12b605c0e61c08aeb33ed0c1747"}, + {file = "pyobjc_framework_FileProvider-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b03250d3e0c5ebfbd71e2134c67577a19c3856ef3c4b849d98a00e22801c7d14"}, + {file = "pyobjc_framework_FileProvider-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7caa8541f36a4842210ac8e82f107cd109d6e835f86d0391d5bbc41433f4b384"}, + {file = "pyobjc_framework_FileProvider-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a453bc7a76ae0bc9a574bfd0b38446166d344c62e59113a19da11ade8413eaf4"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-fileproviderui" +version = "10.0" +description = "Wrappers for the framework FileProviderUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-FileProviderUI-10.0.tar.gz", hash = "sha256:895c3de1ba34ab011d012906623bcc2d2addc7b32af201ad19d59718e933d2ff"}, + {file = "pyobjc_framework_FileProviderUI-10.0-py2.py3-none-any.whl", hash = "sha256:bca5613525ffb757e033803060d63f592612820fbe7ff024e931a5e3745ec08b"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-FileProvider = ">=10.0" + +[[package]] +name = "pyobjc-framework-findersync" +version = "10.0" +description = "Wrappers for the framework FinderSync on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-FinderSync-10.0.tar.gz", hash = "sha256:6915d934236efca382926e93ded216b18a23e7dd03bf70b751cb7e86bbf237f6"}, + {file = "pyobjc_framework_FinderSync-10.0-py2.py3-none-any.whl", hash = "sha256:b2d166fa8af4cd7516fc860c896531bcf9921e5251106c99ac6cd726bf41d020"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-fsevents" +version = "10.0" +description = "Wrappers for the framework FSEvents on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-FSEvents-10.0.tar.gz", hash = "sha256:a462c1ad6d6c93d9542c9780b970915e5e9fa0f70391187f7145b5b1c64e57d5"}, + {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:eb3b590a56c31eee60adddc9657f67e319a80bfe0d91f23cac5c78dd22893404"}, + {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a548e660f2f2e63e9f2cd57db472b2b21056d89748541a167803ba4c9b6287f1"}, + {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:68113dbd448619f1d07e847c6088f8b4371001f2468300638dc78236ffa10c05"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-gamecenter" +version = "10.0" +description = "Wrappers for the framework GameCenter on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-GameCenter-10.0.tar.gz", hash = "sha256:3157d1389bde7afd6fa7d5d1aa64578e99c5fd50a1400178b1f58443013d6669"}, + {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9a83d8c13ae716cd3216e288531fb9e3668bf4e8e27fc1c669b1511e801aa02b"}, + {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b333d53bffcbfce4929f7db22dec9f0d8bb47e387ef2e5df4a49250069e76c86"}, + {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:baea3dd2e75ede21c81cc81ecd2f525b2507556bee7bf76fb6a0a292f39f8346"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-gamecontroller" +version = "10.0" +description = "Wrappers for the framework GameController on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-GameController-10.0.tar.gz", hash = "sha256:c042d6f581a37d39564c6e7b998d6a2775adb4b937aa33e60b8aa99475157c2d"}, + {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bd8a4e7920df5f6f60d6034af31094fe756210efc75c58455735259e201385a6"}, + {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1f384ae252be210a32ec1ae6a460a108e004d13d5bac1324b25c9b3932171da9"}, + {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f7293f4c13ac372f9234d587e5370aac16de562b01c5dcd6e561564adb80211f"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-gamekit" +version = "10.0" +description = "Wrappers for the framework GameKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-GameKit-10.0.tar.gz", hash = "sha256:6febacef9b003b58eeb6ca936cd83825bd22fe55475b965e0deb29b48d5912c5"}, + {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cee6d712b20ef17bea9a92681635e92628ecefd78965e016b1ede0ff9c15ac11"}, + {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d7f7d7a3ed81d02f2191e3d6fc8336840e672f70984b64cefb36165abac371a"}, + {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:53859c370583322acfc9ba03b4b0ba258541836eb16420e8de44ab185caba8de"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-gameplaykit" +version = "10.0" +description = "Wrappers for the framework GameplayKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-GameplayKit-10.0.tar.gz", hash = "sha256:7e5cf3197a53344638a1957e1827cd86018cf7549a6da73193346cd8c40b1d52"}, + {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee4495804fbb6b1aaef1be5b2dcafb676aabfe9bbdcce319484b4e5e2e9d3526"}, + {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7fad056f82b75700139d2479e56a1bdd1e2cabb2367783321b31f4abe240084a"}, + {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ea527d8b7ee32f5cc9864afb172bb70bf0a1a02bd29d9d57d9f0278bac56aa0e"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-SpriteKit = ">=10.0" + +[[package]] +name = "pyobjc-framework-healthkit" +version = "10.0" +description = "Wrappers for the framework HealthKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-HealthKit-10.0.tar.gz", hash = "sha256:0abe3e003927998728db217d2a023f59d9e8f52072e81cc01469888731b7ebf5"}, + {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:02e92b6f875bb707516f957d33e94a4ef98b915e2e628356d77d2cf8edbcd4c6"}, + {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f24e683081c09050667b8d2410ef6ba06c6c314e2d3e42f9d947df87663ff9ef"}, + {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:888530d05ec6954fb5e6993c8f5089889baabda4527aafbbcca7c7d9c8705f0c"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-imagecapturecore" +version = "10.0" +description = "Wrappers for the framework ImageCaptureCore on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ImageCaptureCore-10.0.tar.gz", hash = "sha256:9660faa140806dd0f2c50c39062863c23188c6b9596e2946234dd3c35882d3c7"}, + {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3be85524a36f83e753898f93529145b6299760af5891521e4370f09944813942"}, + {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43d9fc0dc3f78aac627668aba6627888e95f034b3422a30f3727a0027222fec3"}, + {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3f0790981bf67416d02004cf83f0f68e8edda4aba48933596317e8653a173403"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-inputmethodkit" +version = "10.0" +description = "Wrappers for the framework InputMethodKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-InputMethodKit-10.0.tar.gz", hash = "sha256:dc2f10752ab62e4c7b2306938d617d83bef6d52752862a0998ed57db472e36ae"}, + {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:895771f0a47f588f69ed930868ba48ee380ccecd7ef384ad97c4e78220e12a0a"}, + {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ab33c90206934137b093d71ea8e4b73626e337d7767c16154d4a41b502c9a2a"}, + {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f9d4f8025303549dbcc284bd7bb9ca6e58c06f398eb085ed9ca43e3ca65ab7fe"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-installerplugins" +version = "10.0" +description = "Wrappers for the framework InstallerPlugins on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-InstallerPlugins-10.0.tar.gz", hash = "sha256:417f51877cd2ddd95e341d7d4b5db7d152a3e9d4f6537db20758bce0f9235c3d"}, + {file = "pyobjc_framework_InstallerPlugins-10.0-py2.py3-none-any.whl", hash = "sha256:1dfee60017bdf9c2e1566dd26972a288f9f9ace878c25ab5681164b2221d1e70"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-instantmessage" +version = "10.0" +description = "Wrappers for the framework InstantMessage on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-InstantMessage-10.0.tar.gz", hash = "sha256:7b5cd6217fb0d867b03ea7c15ab55c66fe63ab0beaef63c1527e734b16780405"}, + {file = "pyobjc_framework_InstantMessage-10.0-py2.py3-none-any.whl", hash = "sha256:c53dd8ddf2b28dd87cdb67c21798b15d432d659abc633fc3c0a27433bc7a241a"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-intents" +version = "10.0" +description = "Wrappers for the framework Intents on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Intents-10.0.tar.gz", hash = "sha256:228177cd32e63b2b2c76befdb80e520c4db81be7186549753c3dc7b9f74d4a4b"}, + {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5cc9ec8240b261578cac95b97156883f1ad80ac2771ec5e2fa7fe41e112f169b"}, + {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c4fb57078f797362169f8c41218248028132e6120b98546e7d22bf6a995c640b"}, + {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aea0e15602ffac9ef237fa5bda102372918e8066630d0d4c5e919fb8f647b090"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-intentsui" +version = "10.0" +description = "Wrappers for the framework Intents on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-IntentsUI-10.0.tar.gz", hash = "sha256:27dbc84df229700c8e187ba9bfc089fe7dea63cfa20ee7e3c3f09c9f8b8c37d0"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:930a3b7bde1292a67e2f62b0bbe11778b7d0a77e29a716b6b0ee55f3270515c1"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6ad1aaa9fc424605b9800ca848d57058903ad26d1dabaef33a8339051746f1d5"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c122eee00aa5bdc471399431088c9359508988e88f57289c25d18cbd95bd190c"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28b1d6fc8e0a416f65959a7506672425cff960e152538dc7fbb7fc3f3237871f"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:829bd2b67c2d753e43ec6d8d0b3dc544f9a576cbe00cbe3264c1636e367d157d"}, + {file = "pyobjc_framework_IntentsUI-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70335349188f82b5be762b926938fddb01ec24bece963690b6ed6ba50bf480c4"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Intents = ">=10.0" + +[[package]] +name = "pyobjc-framework-iobluetooth" +version = "10.0" +description = "Wrappers for the framework IOBluetooth on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-IOBluetooth-10.0.tar.gz", hash = "sha256:5e6ddcdb8132124fa18c2eb0d0dab9b51e32be14e7ab7a2df12daee3940ec431"}, + {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c0dd178608ad97e9c981992f6d9396c2dc05844d24e25095a68aa28d1013f10f"}, + {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f73913e8700a1106da8b566160cf1ec5ba7bd69b0983772cc8ca1aa7dc450fa0"}, + {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c3645fb7ed7425640eeca0a8e9bb4f1cee337bfa6e9b4b8db3b199b8611b87f6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-iobluetoothui" +version = "10.0" +description = "Wrappers for the framework IOBluetoothUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-IOBluetoothUI-10.0.tar.gz", hash = "sha256:5cd1e6fb2100020c90af6cfcfdea5089634469d2b29cdba9c749791943274bfd"}, + {file = "pyobjc_framework_IOBluetoothUI-10.0-py2.py3-none-any.whl", hash = "sha256:d8e15a2eb39f9d76613fb6ea241ef5c4bd94ae2f21e0fc15661ae44090bea43f"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-IOBluetooth = ">=10.0" + +[[package]] +name = "pyobjc-framework-iosurface" +version = "10.0" +description = "Wrappers for the framework IOSurface on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-IOSurface-10.0.tar.gz", hash = "sha256:c233b39e4f5f000e0f9014feb9ec54d36d3a11675a6bcfc8d05d058be965940f"}, + {file = "pyobjc_framework_IOSurface-10.0-py2.py3-none-any.whl", hash = "sha256:a3df57071d833c58ca019bf880a54c92aaeb11accc006a1fb4eb7f215cf8a1a1"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-ituneslibrary" +version = "10.0" +description = "Wrappers for the framework iTunesLibrary on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-iTunesLibrary-10.0.tar.gz", hash = "sha256:3891793569bfe5a2dcfbe075dbd9a92b0937ebc47e233d78a2f65ca6bc92d13b"}, + {file = "pyobjc_framework_iTunesLibrary-10.0-py2.py3-none-any.whl", hash = "sha256:2d3d8457f9ba6bf415535263dee6973e468f140b04b3cf436481551a25c8f07f"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-kernelmanagement" +version = "10.0" +description = "Wrappers for the framework KernelManagement on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-KernelManagement-10.0.tar.gz", hash = "sha256:52b9546ed192dd9390351fd3c530e658122348c9b6f033f94e5737ce760f9bb2"}, + {file = "pyobjc_framework_KernelManagement-10.0-py2.py3-none-any.whl", hash = "sha256:d3573fb51b0132b6814a0fd56a7fb7d648fd627b459ea3157c3d778a5ea4cdbd"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-latentsemanticmapping" +version = "10.0" +description = "Wrappers for the framework LatentSemanticMapping on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-LatentSemanticMapping-10.0.tar.gz", hash = "sha256:ad74bb661109cca52543fa9fb5747c6dc3ad352d74771db6c18312b6468098e9"}, + {file = "pyobjc_framework_LatentSemanticMapping-10.0-py2.py3-none-any.whl", hash = "sha256:01dc811aad11914c1e01daa018ef1833da144095f42ca2dfe810e4768a540a86"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-launchservices" +version = "10.0" +description = "Wrappers for the framework LaunchServices on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-LaunchServices-10.0.tar.gz", hash = "sha256:0fb7e8d17db9c6a9c8d9333c88703734ef4325c0d36a319183ac3febccef8a9c"}, + {file = "pyobjc_framework_LaunchServices-10.0-py2.py3-none-any.whl", hash = "sha256:f86c70574c7d7c9586fd1908e15fff9df297ab285d7067759337c8e03955427c"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-CoreServices = ">=10.0" + +[[package]] +name = "pyobjc-framework-libdispatch" +version = "10.0" +description = "Wrappers for libdispatch on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-libdispatch-10.0.tar.gz", hash = "sha256:228adf364c895d2a0e8b08bd06f7a23cfbd8e82e9ea6cfdba73bdee0651a4e1f"}, + {file = "pyobjc_framework_libdispatch-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:67fe10a671117fe7e8c35b7eaf8914084fbd0c64f3d635a1147782e3408dbc40"}, + {file = "pyobjc_framework_libdispatch-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:386d53ffd2389c2494a806e3bad2d709ef5d597d1500cb643a817464c20ab8f8"}, + {file = "pyobjc_framework_libdispatch-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d2fbd247ebac8fa57bb0d7a2c4e769118c995bfd81bfc7f189a8ebe297399776"}, + {file = "pyobjc_framework_libdispatch-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:66dc959837b898bdb83a85ed34c2c368d0d38aaed9883c3769d4d1ca1aad23d7"}, + {file = "pyobjc_framework_libdispatch-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4a1e13172617916b894246b03579814f4e8151f2600403f4a799e4d4c7a032e"}, + {file = "pyobjc_framework_libdispatch-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a55a33fc71e385ff7a8c9f1d29276f44dc0f7ff5b0597d2fd769620438058152"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" + +[[package]] +name = "pyobjc-framework-libxpc" +version = "10.0" +description = "Wrappers for xpc on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-libxpc-10.0.tar.gz", hash = "sha256:ece6fc3158f61c3f33a5ed0d767f2aeb64e4575f367716f3f1642cb80221b02c"}, + {file = "pyobjc_framework_libxpc-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:029157c4af899a835122443d299e2f04030a5c801cd34ab8f5724033ff0e88e5"}, + {file = "pyobjc_framework_libxpc-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2a3c98da602f90bbb0ed0da49193381e439e0716b747b6ecb2b0b07951d0de4"}, + {file = "pyobjc_framework_libxpc-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:918e7defb445ac089736714b2c30665ea566b51fc6dae5c555751f52cced9399"}, + {file = "pyobjc_framework_libxpc-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd6e1ce4e503a45611a9f6fc22b189fa5cc4db0aa779dc09be5e7f321bdd894e"}, + {file = "pyobjc_framework_libxpc-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:862896fb2c4e8c706196ed5f9a8ca8fe88b6bf73a92cc8bc0ec6e00449d6cd20"}, + {file = "pyobjc_framework_libxpc-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d66712e657d3217ef5c8c9181e706ee21370d425ec99aa091c44b92d43dfa341"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" + +[[package]] +name = "pyobjc-framework-linkpresentation" +version = "10.0" +description = "Wrappers for the framework LinkPresentation on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-LinkPresentation-10.0.tar.gz", hash = "sha256:e48af9dc9a1a33313c85a11d667fcf00461638e8778f8f99ce6b2e967a0a8579"}, + {file = "pyobjc_framework_LinkPresentation-10.0-py2.py3-none-any.whl", hash = "sha256:a3de92916daa214da87afe402feef42536e3896b6ed392e040296d01ddd927f7"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-localauthentication" +version = "10.0" +description = "Wrappers for the framework LocalAuthentication on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-LocalAuthentication-10.0.tar.gz", hash = "sha256:c7ca39512babcd08464b12586908d895efe3477289325cd12ab14768a194ed16"}, + {file = "pyobjc_framework_LocalAuthentication-10.0-py2.py3-none-any.whl", hash = "sha256:6d55c6df7a6337903b3a0c61e48c6e1fe7059005024885244ff8c937bf570aae"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Security = ">=10.0" + +[[package]] +name = "pyobjc-framework-localauthenticationembeddedui" +version = "10.0" +description = "Wrappers for the framework LocalAuthenticationEmbeddedUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.0.tar.gz", hash = "sha256:dd3e53030a2d71c50f5f9dd5e2e7082672ff741a9adfa3da7efe3c9a7691a86a"}, + {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.0-py2.py3-none-any.whl", hash = "sha256:136725e321929fd840905751adf158b4bba561951984ec75a4e534ef0be76c30"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-LocalAuthentication = ">=10.0" + +[[package]] +name = "pyobjc-framework-mailkit" +version = "10.0" +description = "Wrappers for the framework MailKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MailKit-10.0.tar.gz", hash = "sha256:2611649443f3307c8fbfd78d36276fd854373c0dc4516928d3bc51419b34852e"}, + {file = "pyobjc_framework_MailKit-10.0-py2.py3-none-any.whl", hash = "sha256:b95f61745c01d41b2548ff6b6d0efc1476b718874a115fe0f17c06b5b3a1d300"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-mapkit" +version = "10.0" +description = "Wrappers for the framework MapKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MapKit-10.0.tar.gz", hash = "sha256:35a4ac2a9ae3b13699290a6fb592d1914498e4de1b90a2b60394069cd0a02c5b"}, + {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:af80e9f2debe0dfd0f614fc797b4238cc298eb753704c747667f400dc9f57169"}, + {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cded4f7e60ad9595d7cc665d5738c8fcd5eda41d84475b67a3abc0cd493ab808"}, + {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5d33b49430d2d7229121916c57875218c0943caba6faae9caad948839657768e"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreLocation = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-mediaaccessibility" +version = "10.0" +description = "Wrappers for the framework MediaAccessibility on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MediaAccessibility-10.0.tar.gz", hash = "sha256:0f60ed2ac0bdd4c01457619408230d61a0547b16a19ce0d6770a8f4fa7379fbe"}, + {file = "pyobjc_framework_MediaAccessibility-10.0-py2.py3-none-any.whl", hash = "sha256:20b7d0dfd0680e6b19de9683025e35d2cdbdaa76ddb66ae79fea9c0deb5ac3b5"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-medialibrary" +version = "10.0" +description = "Wrappers for the framework MediaLibrary on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MediaLibrary-10.0.tar.gz", hash = "sha256:5a4909257d6c67245b4687327996a4a3f8c038c31e6ea2ea7cc916fd8e44bed5"}, + {file = "pyobjc_framework_MediaLibrary-10.0-py2.py3-none-any.whl", hash = "sha256:e7d0f3353a954abc801bcdb7c02713f38d76835eb8ff4912fab5d005b95d5459"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-mediaplayer" +version = "10.0" +description = "Wrappers for the framework MediaPlayer on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MediaPlayer-10.0.tar.gz", hash = "sha256:e3c66443fd13e5ddede01f15fdd9b635492edc239c4cd88fa540b866a76c1602"}, + {file = "pyobjc_framework_MediaPlayer-10.0-py2.py3-none-any.whl", hash = "sha256:19afc844bc204e008eac5f59699b93bae84e6235fa030d72651200414b019fc2"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-AVFoundation = ">=10.0" + +[[package]] +name = "pyobjc-framework-mediatoolbox" +version = "10.0" +description = "Wrappers for the framework MediaToolbox on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MediaToolbox-10.0.tar.gz", hash = "sha256:8bd24724b26a0bdcdec7e078261d8777018c9ec275b553dd8e1372afc60778d1"}, + {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:73bb05d629914f1eca277e1e7aa9ca429408121a49874259f190ce7e37dbf646"}, + {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:65475deb4a9da96504df4ad677ff470afb0f50128bd4a140788db923b6638b12"}, + {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:68c6340e33f60a23acc375935abad73b876705ad460cf7f09be0bc000d219d15"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-metal" +version = "10.0" +description = "Wrappers for the framework Metal on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Metal-10.0.tar.gz", hash = "sha256:2e50b1fc34b11654a0ecb0d6ea98f691dc5794c53e18cb70f71d6460f68dbbf3"}, + {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0336f14c65a7e064d283b785487522c52f894d23348b1cc49114a919bb0db32c"}, + {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9eade923110db0db7a57c11761c8bac0c780fb786493ca7f504261c749184dfc"}, + {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:33c35ee2bd8062786c103149949713eb6d7d90618d69a2acb9c0b732824cad70"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-metalfx" +version = "10.0" +description = "Wrappers for the framework MetalFX on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MetalFX-10.0.tar.gz", hash = "sha256:79edcf90b59276023a143c637d37a1be563a921f5f73f526bb2d970fc08949a3"}, + {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4ff51b35c29573a5b93b76334d165030055e0cfbf0a8d0b0839f510ca2d9d1ff"}, + {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eac982bd2e8316e4d6b65d9bac2d62365db65f2f9bf4be4bf1a8111b7b0a08e3"}, + {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:376f78e3edcd67f64ff6c2f682e9e94cdbcddf6bf27a32c73f1b8aefb49fc748"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Metal = ">=10.0" + +[[package]] +name = "pyobjc-framework-metalkit" +version = "10.0" +description = "Wrappers for the framework MetalKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MetalKit-10.0.tar.gz", hash = "sha256:a29951ae30dae738bb9d1bab5bcc6fa1150815f671923b6e6705a10d7bab2f8c"}, + {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:31f15e033abaad2a6212bafc39e2f5d6e7d6bc7a6c93c6a24fc64a4b2db01fe9"}, + {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8cf2cc8f7fa79bb919c4b6b864edce5e1cd789a88af07ad8846dec985808940d"}, + {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d13c0a8ae8e65b87c56ea63d84a26f6cb06dafe0f34beabcf86b930c39088748"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Metal = ">=10.0" + +[[package]] +name = "pyobjc-framework-metalperformanceshaders" +version = "10.0" +description = "Wrappers for the framework MetalPerformanceShaders on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MetalPerformanceShaders-10.0.tar.gz", hash = "sha256:eeb3d9e5b44db876ebc93dd3d492dbc4a52b6fee96558d13a66fb283b7757ee4"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1094595da9dd3fbcbaff278538ad88871347d6155fe84d1fe2f49737831bb6d6"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4dbc6e8d902ca9e4ceb3699182006495f9e3da84b1efdbc3821e1ba4c23cf808"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fa91c8e325c592e2a3db5940109efca9d874a4c19dd238047a4f7bd327015263"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Metal = ">=10.0" + +[[package]] +name = "pyobjc-framework-metalperformanceshadersgraph" +version = "10.0" +description = "Wrappers for the framework MetalPerformanceShadersGraph on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.0.tar.gz", hash = "sha256:f9b6be9ef300b82a4d228107122fc153c2763c2a1b3c7e311ded52c565bbcf58"}, + {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.0-py2.py3-none-any.whl", hash = "sha256:824f9721eb724de171c9e4515931a59daacbc743890eef5fe00aa70ad1927f30"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-MetalPerformanceShaders = ">=10.0" + +[[package]] +name = "pyobjc-framework-metrickit" +version = "10.0" +description = "Wrappers for the framework MetricKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MetricKit-10.0.tar.gz", hash = "sha256:15f4d384f95ab3656ae183d2fa15e1c59e91b6a5566a4edd105684a70c79401b"}, + {file = "pyobjc_framework_MetricKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:660bfe9654cb21ac450d3be4d4cbc568e503d4d1b04a97c4c90240be632ec1b9"}, + {file = "pyobjc_framework_MetricKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1f83c96d09a6ef03b39da0df5e21235b32145c726455a7e9be40ec5b2d35b5ba"}, + {file = "pyobjc_framework_MetricKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:526ebe3c0d7a4612608668fdfbcb57cdeb9b5324a9e8b481246040013ae5ce6f"}, + {file = "pyobjc_framework_MetricKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:542745e902eeda8cdcb5ca2f0517ae7832142f53a110ad59bd7c8189f31d65d9"}, + {file = "pyobjc_framework_MetricKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b694b1ed197015f14e7f6c35abc855fe790fbbbe17b16ba224c727e185279fc7"}, + {file = "pyobjc_framework_MetricKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5ff9c29a6dda4a19dbdf40e513f06b00bb8f032d2b98655b030fc3a35e71c2d7"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-mlcompute" +version = "10.0" +description = "Wrappers for the framework MLCompute on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MLCompute-10.0.tar.gz", hash = "sha256:1ffbeeb3f4850c1ffada9b253afd2d4fe4448e0e52861701e1c5ab6a56961526"}, + {file = "pyobjc_framework_MLCompute-10.0-py2.py3-none-any.whl", hash = "sha256:8ba3eba33549a22acfdf589818ede36f65031425c6968eb193a9dad143d3cc64"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-modelio" +version = "10.0" +description = "Wrappers for the framework ModelIO on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ModelIO-10.0.tar.gz", hash = "sha256:1629db056d3bebdd79c582637e48c9da5c5aa76a073439dcb3820e00e3f75227"}, + {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:36510ff0567310da48bc5cdd8b8f63e2bf158eb29b598d7b40e26189546c984e"}, + {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91aa11bc6005b98c73541eebbdb69caf71b5ef4a9d1da032a58ef90b043e4b80"}, + {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:91a80adda076760390ea00cd39d861384455f794673924a923fa7957e4225c52"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-multipeerconnectivity" +version = "10.0" +description = "Wrappers for the framework MultipeerConnectivity on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-MultipeerConnectivity-10.0.tar.gz", hash = "sha256:c2641b9c6d2eb2dccd3c69417f5291bd141a23afc3835f7a7822a8cfa45a1153"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:71cbe835d30a81ec7fcdd3706344dcc5351af4eaa9cf17dada28b88023549953"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:feeb828c8005bd9a941ec437ad1c4dc67843a110d9f80e33c6426b0178faef8e"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e3ef039148b7215c3886636a65baad7dbf1083f1c6dc09c782632085f5efeeec"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-naturallanguage" +version = "10.0" +description = "Wrappers for the framework NaturalLanguage on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-NaturalLanguage-10.0.tar.gz", hash = "sha256:00b055806a0fe096c8d9e2af0f610951ef0fc892d2f496301f2bda794bca781a"}, + {file = "pyobjc_framework_NaturalLanguage-10.0-py2.py3-none-any.whl", hash = "sha256:8924630ff802486dd16a426d75fddfc7e6cd917fecd5ff3902b84107051130cb"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-netfs" +version = "10.0" +description = "Wrappers for the framework NetFS on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-NetFS-10.0.tar.gz", hash = "sha256:31becccbbff5cb4336b736e97f61f92d5df0c40b5e3be7d4e5964527e1b1e3b4"}, + {file = "pyobjc_framework_NetFS-10.0-py2.py3-none-any.whl", hash = "sha256:1ad29eb81bd4774259377a716fa3dd8b3e105e5f8021e295f640a8e036847cc0"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-network" +version = "10.0" +description = "Wrappers for the framework Network on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Network-10.0.tar.gz", hash = "sha256:4e92b1271f999dea0297a844cc101b5c0c908168428d77caab054d25ca8e4e69"}, + {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2402ddcac58735333420a4e467eb415df59f54cf893cd4401f81cce64449dd77"}, + {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:93327d81b58294065f6d2f6db746e992c218cab94b992f5c778dd15a4ecc6f51"}, + {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:53fa04ba5e0ecdc40dd0139074740d4bc3459c829ef550b89141e4cc71562c5a"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-networkextension" +version = "10.0" +description = "Wrappers for the framework NetworkExtension on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-NetworkExtension-10.0.tar.gz", hash = "sha256:cd17420c9763c240343fcfedaddff11db8c0f4f1b54c060c24d6f414234d6b5d"}, + {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fa42c5e57247827647fcbc63341f38799403dba28c5e1ebc68fae57b84727f10"}, + {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:301bb43a39069af6e28dfd73de4dee48bd87e0c0473d605b58ab92ce7d1cface"}, + {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:325b67c507d69f0d97ad5e612bea68426f5523fae2e8f39792a8c46a88d2067d"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-notificationcenter" +version = "10.0" +description = "Wrappers for the framework NotificationCenter on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-NotificationCenter-10.0.tar.gz", hash = "sha256:64f85eaea8e8811afbfa265e56d3d07ab8b0e57a4a7b5b33a9f72a50a3ede83b"}, + {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d06c29f7fd1f0c8b0f7867c80475dfb4d8df491cb92a48932befe47810b6c440"}, + {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:95960b70654160083e93cb7c47663a045a68b00ce457e408046062c705b2056e"}, + {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1b9534f6a07a6cfeb1a5b5585178a58fb544e2f0f58935afec5ba668b7567170"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-opendirectory" +version = "10.0" +description = "Wrappers for the framework OpenDirectory on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-OpenDirectory-10.0.tar.gz", hash = "sha256:94e0313910b343a1e9738a7a006a1651f4d2995125f743576535ecca9cbb141f"}, + {file = "pyobjc_framework_OpenDirectory-10.0-py2.py3-none-any.whl", hash = "sha256:a58211a1cecb4e1d52377dfe60eecdd4579a3dfc44ff50b92cc3bb123a413189"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-osakit" +version = "10.0" +description = "Wrappers for the framework OSAKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-OSAKit-10.0.tar.gz", hash = "sha256:eaf442ca46219c19f14d3f12612a37325ab7d2a9b5f67eef64a289877500ea75"}, + {file = "pyobjc_framework_OSAKit-10.0-py2.py3-none-any.whl", hash = "sha256:b87bb4ac330da116c33ffefa2da0b7946ac8a840150da848cafd7fff19f7e674"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-oslog" +version = "10.0" +description = "Wrappers for the framework OSLog on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-OSLog-10.0.tar.gz", hash = "sha256:3a169df2fe5fdbd6ca8db28e5c51d89f8759b369636ea7cc2672cde11f4a09fb"}, + {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1c2ac445b647edf4e2e925efc4d2471f9a6952dcb2d5929f1e570946941f622d"}, + {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05eaf07e2d4b5c51a9859d0f5e170f51975268ee14782fa626c51b19740d0e68"}, + {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:432861f5bd5ad45b119c1327cb17d1feb5e2a5700d753a79d0abdc49a2123496"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreMedia = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-passkit" +version = "10.0" +description = "Wrappers for the framework PassKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PassKit-10.0.tar.gz", hash = "sha256:da2c5b12c341e2e826b5345798854219966c7bef4bfdb8df306816877df22abb"}, + {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bb315a01d67865f06c751ca4f590c7340c27847a51ebdb645bd31dc48a07f478"}, + {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c7c4b12957ac615759e385d0baf02e82f5218049369e60a3e74cbd97f7730a0"}, + {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:78d82720f05df6447579495de6e1cca17a18ce203b670fb67b8d8b7317fe2b46"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-pencilkit" +version = "10.0" +description = "Wrappers for the framework PencilKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PencilKit-10.0.tar.gz", hash = "sha256:68f19a4d9ebab2d002667dce8820bf200d36cc8e1a2351a47f44f3e1f99bb194"}, + {file = "pyobjc_framework_PencilKit-10.0-py2.py3-none-any.whl", hash = "sha256:162bd4797749247e34414ddfb91336b97ff8c31fa79abe27a2885188cbe3fed8"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-phase" +version = "10.0" +description = "Wrappers for the framework PHASE on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PHASE-10.0.tar.gz", hash = "sha256:9141baca910edc8935a5f22b82444e3b5a001c9275562752f13adce034529377"}, + {file = "pyobjc_framework_PHASE-10.0-py2.py3-none-any.whl", hash = "sha256:d16c38d58065d22c9b688f0fa753fc0a32d9a24bcda23830dab7fd34105c5432"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-AVFoundation = ">=10.0" + +[[package]] +name = "pyobjc-framework-photos" +version = "10.0" +description = "Wrappers for the framework Photos on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Photos-10.0.tar.gz", hash = "sha256:b284e2ede913081570f862fde99fe22c5f254a36b53105fedad4ce66d4dd93af"}, + {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5809848be530e5f49fbfbe5c6de6255ebe9127da94eab637a8c4f68cef263c80"}, + {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2058ced6eccf6ffef45f67175d8486d84b07892056338a71aca609f961b807db"}, + {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:567bbf0287700a32dd3baa0d94da63dd4eece13f622e12ee011a269704880d03"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-photosui" +version = "10.0" +description = "Wrappers for the framework PhotosUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PhotosUI-10.0.tar.gz", hash = "sha256:aa521325e7c86d1c739306cd5a14f3f7f69f5db654dc8884f1630001ad72aa7c"}, + {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9234c231d6e970fabf1b609933e362bade59d6fd40ebfba0b0bfefec7603308"}, + {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6812342b1588e4675afacff5e6af1376e1569784081699e7c2e865c206f78b27"}, + {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:794972421c21f541898a05fb3ffc7efc027c15b5f3b19af9cafd424cb5c29613"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-preferencepanes" +version = "10.0" +description = "Wrappers for the framework PreferencePanes on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PreferencePanes-10.0.tar.gz", hash = "sha256:4e25e9f192252e4d76e9c68fbeae6a7bf832f0d3ab8f18561c65689f344b70c8"}, + {file = "pyobjc_framework_PreferencePanes-10.0-py2.py3-none-any.whl", hash = "sha256:992765158f0cae73957178109338bde94bbac5c91ca6e1ada884c3dc43868e18"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-pubsub" +version = "10.0" +description = "Wrappers for the framework PubSub on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PubSub-10.0.tar.gz", hash = "sha256:b5632265d86bb114444ce56923633c45be930d3ff224fc76390d2711742df0f8"}, + {file = "pyobjc_framework_PubSub-10.0-py2.py3-none-any.whl", hash = "sha256:7d04a4594c232650f4caf3dbb7d3e6e9c7ec1e87847c147bb4f1c5d412efe5ce"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-pushkit" +version = "10.0" +description = "Wrappers for the framework PushKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-PushKit-10.0.tar.gz", hash = "sha256:54e0b9f3374ba26bdd2c08993080862e7dfc5ccd5c74ad2d5c1c4f9c4c0caa32"}, + {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8fa158ef13bb6a6e0d5cbb25b60cc7f82ed8f048fccedbe6f38df5d27ae8ff26"}, + {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f50e93124ed0df1c9d3c83f24d877bc286c8a3005fc59b85864c4675cfe078a8"}, + {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:014a293a5d11f4213c222fb10284094eed85a37ce8dc5543a5b5e68ed3fb628d"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-quartz" +version = "10.0" +description = "Wrappers for the Quartz frameworks on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Quartz-10.0.tar.gz", hash = "sha256:ff7c938d9c8adff87d577d63e58f9be6e4bc75274384715fa7a20032a1ce8b0e"}, + {file = "pyobjc_framework_Quartz-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f06be24fdd2112c9f5b96ede54ec48ad7623e107b85ebbd5b4155d0b1da4d45f"}, + {file = "pyobjc_framework_Quartz-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:52848a5e283a508c6895a73cb0c950bd4dca9b1186b70dd73ddc8f436d64fd42"}, + {file = "pyobjc_framework_Quartz-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0cc89890de411a341e90d2c4148831b6d241fca66e734b5470d27869c04e33c"}, + {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc8d6edcdb0bb3dab4dbe6e6a6d420c28aa0caca53715a3e49d7f299601a723f"}, + {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4b03fade2c4aff2682cd5eae8469f3f15e089c7dd09641e24e5b54d015edfae"}, + {file = "pyobjc_framework_Quartz-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6975be7f776ad4c3a41655b90d67e45a9c7fa2d715b189d8599e8d227f790280"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-quicklookthumbnailing" +version = "10.0" +description = "Wrappers for the framework QuickLookThumbnailing on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-QuickLookThumbnailing-10.0.tar.gz", hash = "sha256:13858592b6cd03c26e0020de47721d74ba992f44e9030ef70f47a99d7660b71c"}, + {file = "pyobjc_framework_QuickLookThumbnailing-10.0-py2.py3-none-any.whl", hash = "sha256:7572750f84477bd9ef4bd6d1fbb88dd3fb3b39567b004307b347b97de861163a"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-replaykit" +version = "10.0" +description = "Wrappers for the framework ReplayKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ReplayKit-10.0.tar.gz", hash = "sha256:83a95c5c95d1a1af731fc9fba71e194d13ceded46799422908d8f95376a4a5ac"}, + {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:dea16e14c493a6dc976a4d762fd09b5713dac70f49390df07ac0457dc4fdc759"}, + {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1b87a5400c05eba3734bfdd5110a9ef186b98aae0c36a1de3a6dacf3802f5c4f"}, + {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e2edfcdf3140bf111e21471fbfdc8fc105e3475c342b1ecd240a8d3e8b8ac368"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-safariservices" +version = "10.0" +description = "Wrappers for the framework SafariServices on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SafariServices-10.0.tar.gz", hash = "sha256:7f7a477b77b17161e22bdddc8a16fb3000eeccc430a730cb144e1a84a5f6e4e3"}, + {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:60edbbb667e26654a197f3e72528094f63a1aafb20f73bbd4b182e988275edd2"}, + {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed51d96673f579e3f4379e1130f3e2cde1c427f916e3172332acd948314f3b7f"}, + {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:91e336dce2622fdf87d5da8de4a43746ca13f3e85410102da067e1bf0dc4eecb"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-safetykit" +version = "10.0" +description = "Wrappers for the framework SafetyKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SafetyKit-10.0.tar.gz", hash = "sha256:8f6408bdd4ba749d1840700e1a7f1719a5068ae15a2dfdab9d533333b2adda20"}, + {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:18d26db21af00838d907527ec1edfcd59217561cc86ed2cfa4fad4788f58ecf7"}, + {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:208285c0460a0ed9459c2c0c636fee941a3f2644d07832533140f22de3cc9f11"}, + {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b94d9f17bcaef877dad6024b6990265a9e6d9152bd7f734539bf5da9e95e2a91"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-scenekit" +version = "10.0" +description = "Wrappers for the framework SceneKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SceneKit-10.0.tar.gz", hash = "sha256:205a6706ffe271f3961255f1c55ab60b47d797c7a4154a5c9cc0a3b263c433d6"}, + {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:aabc098a6870b34af54be2aaf0010f1050d3a30e8e86a478b48f7cc2046a5bee"}, + {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b4fd50030066bf71e24c793a3d8200b75051f9b6d6daa5b10eb92663e08f0b64"}, + {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:326a588c89801f96fc10a7629446336f385f5615d03c0cce10bb18824ac5c021"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-screencapturekit" +version = "10.0" +description = "Wrappers for the framework ScreenCaptureKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ScreenCaptureKit-10.0.tar.gz", hash = "sha256:d6abaccf2620d01af9bcb408fc47713f813839a35899caea8fa0a96a147597b9"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4064835492904889290d450b5f4f7b8147235620be0f2b8c455a8ca03e532779"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3b80a295b2545b0da492f4f5b8df5b62dc3e1b69141fe1b8982901839635d6e1"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d963acbc24f1d2e0bcc3d0a4d5515dc680259ef7c3b6e80159c82a05774c2862"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c9aa29cb9628d8d1afdd7c8d650ccf90c228aabded792058ca82ee72682c44f"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:f69c623e1e11068c1af01c7f2e359941e1287b7e840b4cd93a9de2eddcd608aa"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eefc981b906e80b6b51694472d9b573f547d6633c7e9e2f160ad464fbb2b36ab"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-CoreMedia = ">=10.0" + +[[package]] +name = "pyobjc-framework-screensaver" +version = "10.0" +description = "Wrappers for the framework ScreenSaver on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ScreenSaver-10.0.tar.gz", hash = "sha256:84b658c81469305f29aaad61ac29aaad4db27ef9e9b8a13568ddb3a6bfbb902d"}, + {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6f0e4a278349997ed1b36ae27ebbbeb18d4a8e766f68c65749e861e4388a5f5"}, + {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cd0d3104140be9ef10becae43d222ff0904e4cb655cbe83441f51898e20164e0"}, + {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ad0826d5cb11e2615c66e1e0576a5a23f35b6b83c05625efca5ac4ce31e06b33"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-screentime" +version = "10.0" +description = "Wrappers for the framework ScreenTime on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ScreenTime-10.0.tar.gz", hash = "sha256:77d927c7aec657902ef5bdc1cb4be44bc3cd3d1ea51c70f66b8b891b9f97e8ff"}, + {file = "pyobjc_framework_ScreenTime-10.0-py2.py3-none-any.whl", hash = "sha256:800cbb0f5e1bc2ef04e1328e6263b5ec7585538e16989265a3fa8c33957744ed"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-scriptingbridge" +version = "10.0" +description = "Wrappers for the framework ScriptingBridge on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ScriptingBridge-10.0.tar.gz", hash = "sha256:dc8ee394c84caabef9512eaf784ba91459b9560556da5fd5762aa7a6ef5e4612"}, + {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cc1d6d40280b183b34ca24b92d28dbe9ad14e351a53e60262209e44b7da1c98c"}, + {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d3a236e10ef6cdd6a57954950cde0dd4833e0f041b8807da2e14e44645b256bb"}, + {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:632cbf4fd887e3cfc17c7b12ff68879e75f3930d0c54600ab72b41ed2d828901"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-searchkit" +version = "10.0" +description = "Wrappers for the framework SearchKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SearchKit-10.0.tar.gz", hash = "sha256:953ade5f21aed098db366673885cd2e8a3e94574e0fb6e0ccebb063ffc8559ed"}, + {file = "pyobjc_framework_SearchKit-10.0-py2.py3-none-any.whl", hash = "sha256:21921a722f3f1e3868ae38c4582c6d51bad35b13290e90cca62802a477d7f8d1"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-CoreServices = ">=10.0" + +[[package]] +name = "pyobjc-framework-security" +version = "10.0" +description = "Wrappers for the framework Security on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Security-10.0.tar.gz", hash = "sha256:89837b93aaae053d80430da6a3dbd6430ca9d889aa43c3d53ed4ce81afa99462"}, + {file = "pyobjc_framework_Security-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:257abf4821df4a9824f970df7b27acd05c8b7a544c424ca29c63c1bf963b0011"}, + {file = "pyobjc_framework_Security-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e4917cfeca742b790a8f5053b39051be83a132e85f5ad9af2cd3a31527960143"}, + {file = "pyobjc_framework_Security-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7d9cae84018bcb6ff2967a9cd158b2298e0c5fd95cf6deef12b4b44464e1797"}, + {file = "pyobjc_framework_Security-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71522a2adc3b30c28508156a510b5b8796d5f6ad003bd35b4d86c121bf4f7957"}, + {file = "pyobjc_framework_Security-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:be52243da7a143e898b8e726201140f4be0bd5803b90e56b22d2cc6ad1edde0f"}, + {file = "pyobjc_framework_Security-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ef948582c47593895e27be1a1401d96b19a8edcbed223fa9cf3185345a2bc117"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-securityfoundation" +version = "10.0" +description = "Wrappers for the framework SecurityFoundation on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SecurityFoundation-10.0.tar.gz", hash = "sha256:9871cc1cb7e15b694c7c406d8125acbe990b28c6b15d5833df53a38906836342"}, + {file = "pyobjc_framework_SecurityFoundation-10.0-py2.py3-none-any.whl", hash = "sha256:c7c8bc25d3297eb6c4684ef0c9680b619a1966ddc0cfd33a2122a46cd7963f57"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Security = ">=10.0" + +[[package]] +name = "pyobjc-framework-securityinterface" +version = "10.0" +description = "Wrappers for the framework SecurityInterface on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SecurityInterface-10.0.tar.gz", hash = "sha256:fb3e660b7e1e2054597a87237a885ca62212c9889702bd634d34792d84fcc9ab"}, + {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:997a018d6f550ccb82e33bd33317bc586e2911ce1645533f7d16f27973d1d439"}, + {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:573d31308465ad1842352e982f7a64cfcaf9d599fe0765ce02e66d0c452a172a"}, + {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:06567ae02e1757070bdd3dd21bb0ff3b214b6fff4635d7b0b575f304b02386d4"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Security = ">=10.0" + +[[package]] +name = "pyobjc-framework-sensitivecontentanalysis" +version = "10.0" +description = "Wrappers for the framework SensitiveContentAnalysis on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SensitiveContentAnalysis-10.0.tar.gz", hash = "sha256:212ebb393b7e8a7d9eebd9025a0cc96e20edd0934e570cd57fd0a8a7e5e6b860"}, + {file = "pyobjc_framework_SensitiveContentAnalysis-10.0-py2.py3-none-any.whl", hash = "sha256:99262f5d8a049973531a44113e9157874bba274ed8541b8b778878c664472042"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-servicemanagement" +version = "10.0" +description = "Wrappers for the framework ServiceManagement on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ServiceManagement-10.0.tar.gz", hash = "sha256:0a578e879adf126b4997feca02b6aebee8fc92ef96e4f1d5d76b53860f8b14fa"}, + {file = "pyobjc_framework_ServiceManagement-10.0-py2.py3-none-any.whl", hash = "sha256:a27685c393c1c91b42c5701e0e18326b58d50f0b0c2a194190bc3078d53b5df1"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-sharedwithyou" +version = "10.0" +description = "Wrappers for the framework SharedWithYou on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SharedWithYou-10.0.tar.gz", hash = "sha256:2d19cd38d54c3c5e85488e6f6264f83638984810d9d1601916abddd0984e6b8d"}, + {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:706d0c17ad64c22da16eeb1e10a677ea29712164e7f517ac14d866148f2ba437"}, + {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:496c9bd0403e1a9896a3cf21d1ae5f1bbbeaefc94322f1063626d2c489b87b8b"}, + {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5fa3394b4cf289c798eebb6ee90295221ef2b02b6bd315ac5bd87d9b0ed8b339"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-SharedWithYouCore = ">=10.0" + +[[package]] +name = "pyobjc-framework-sharedwithyoucore" +version = "10.0" +description = "Wrappers for the framework SharedWithYouCore on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SharedWithYouCore-10.0.tar.gz", hash = "sha256:b07e79716e496270a4a84bd2645c1a1dc48b557ff3faaf268c8d5d4c79de9ede"}, + {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1e13c7b0c057b2467b9a2417066257266570ae6932032aa0eb1e796790ba85d1"}, + {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43e730bd17023c51a0895ec3678856662764eebb13c5a19e9d775fc1ee3e5c6c"}, + {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a029e5ba6e1123baff788888ffb49a4afd83e95320fdcf377423992415c1f037"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-shazamkit" +version = "10.0" +description = "Wrappers for the framework ShazamKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ShazamKit-10.0.tar.gz", hash = "sha256:f5a84113307bac14460abf522ed2e5fc99c5ac1816e652d2bdb437623ada3429"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:71c2a0927df93276abe299ee49d256a76ce7b32015825085dd7cc572d82cf369"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:428e55cb4115eb38e45994a9f339f7909c2f3d62c40aa37478e772e79e455639"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e8071f802b91d0312cd31cb888bb3de0388f01d7c975111c6cd80e571bd5609d"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:266fdbea9491deb29aa34f08b26a9016d9823585348d4e2714acbb5bf133e4f3"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ce7a1b842dfe4af9e523ac5635297276810e85fc734be43d5a2ae0237b25acfa"}, + {file = "pyobjc_framework_ShazamKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d2694a3a242844f324a5983fbb8594a7087722308b3777c7cd6d2435387cdbd"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-social" +version = "10.0" +description = "Wrappers for the framework Social on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Social-10.0.tar.gz", hash = "sha256:29c4d039b25a73d0499ae37d5eba9c30c12e68209cb85f1bdd94b78274421764"}, + {file = "pyobjc_framework_Social-10.0-py2.py3-none-any.whl", hash = "sha256:05d2cc1b62e2c1ffbe9ed8868e70fb846eb0f4d7157b87c8db77cd13bf0f2a92"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-soundanalysis" +version = "10.0" +description = "Wrappers for the framework SoundAnalysis on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SoundAnalysis-10.0.tar.gz", hash = "sha256:9a2db7edfb506aa296968abfa86f67534b1e02c726aa26c516750c04e7b21d12"}, + {file = "pyobjc_framework_SoundAnalysis-10.0-py2.py3-none-any.whl", hash = "sha256:b2de7dc4ee724fc7940a777ee50aa8b96b836aade84a408737bacf8818b9bde5"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-speech" +version = "10.0" +description = "Wrappers for the framework Speech on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Speech-10.0.tar.gz", hash = "sha256:ffcd35855246432f02ebd96e6eb97da319f3ff108d8b62266e83da9c5eec8497"}, + {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3664cebcb74d48a131fe02bf2716d72378798ed504fad85e72661f2923a8cd9"}, + {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6755395bb80b28b2ccf4f02e7a1d850c80e5bf8e590f1359daa2b55a7ec3d108"}, + {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0ab33eecad4a053a281c6f71f9c6b70d0ad19706887cee3e30509df75cfdbe8d"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-spritekit" +version = "10.0" +description = "Wrappers for the framework SpriteKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SpriteKit-10.0.tar.gz", hash = "sha256:c9db030232e251426575674bbe61b7bdb1cfc4a587a0a1e0d1a59e704658dc30"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4dfaa8a541f60a3c56b38029e4da154f2672cc231c70ceeb558c18af423f822"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5582ef597d381fb9113099bbd07065c565d9db966193f4807327cd09363043b4"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:71042fd8986d0a6544588b42198b8840fe9afd335a3329d4d1dfa4b4ae432327"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c83378276161c3ed043fd8fea6d2d8fcfcb74fb30dbb77a13be6bcdd9914496d"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:93c19908a3aaf1cbf68192f3f312885a2f829dee349d015162d301b379f8046a"}, + {file = "pyobjc_framework_SpriteKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2884623c261a3ae5f12fcad8c30c15e631e5cd86b7f16581b750b07ee31005f3"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-storekit" +version = "10.0" +description = "Wrappers for the framework StoreKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-StoreKit-10.0.tar.gz", hash = "sha256:5835de40067e2ea4374babb41da4ebc0bbe087b770c352bdababfa6871e9590a"}, + {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e6c607c76edd85444eacf81da5d1823deb5cd1c312f4544d10299f05ae99f87"}, + {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:df9186ce3ccac15050b3bb90738d9d2abf6617c793d738ac55b95908578c468e"}, + {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c235266a035b9f3ef9575cd71dda0303e85af90b166cd73466fb668e180c72da"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-symbols" +version = "10.0" +description = "Wrappers for the framework Symbols on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Symbols-10.0.tar.gz", hash = "sha256:16aa2273cb28af944de81039df86bdef04df4b3cf3c776d84d2520fb550a1b6d"}, + {file = "pyobjc_framework_Symbols-10.0-py2.py3-none-any.whl", hash = "sha256:fd1bfc2958d860aef26b15994714abcbb6b3340eda2c67df31c12df0740a661f"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-syncservices" +version = "10.0" +description = "Wrappers for the framework SyncServices on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SyncServices-10.0.tar.gz", hash = "sha256:3060a5b66c42a276b3a5765f7c41fe6a80491685977b0f78b67ef2e8f2325673"}, + {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:398c95d5b306eddc8534fa7411092d39f8d4aeafa68de7349e890ab7f6d8bc3c"}, + {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05cbef4425859dd372545d238cc868d53edc1265be752ebcb73a311d1a2fd9e4"}, + {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3a89a3b4a627fddcda323c8879e969742a99dc0c312ab4bc04c167ca3d19be5b"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreData = ">=10.0" + +[[package]] +name = "pyobjc-framework-systemconfiguration" +version = "10.0" +description = "Wrappers for the framework SystemConfiguration on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SystemConfiguration-10.0.tar.gz", hash = "sha256:f9ab1759933c77688615810f8278519158273a658f11fc3d75a1a2446fd0f774"}, + {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e64f7a0011ad4a0f86302bd243ada159dfbc25525cfd48270d230fadd24f7dfa"}, + {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:106c98eff3552611fa9bf456f162a3c578958e6c8bea3cb5cfc9478f3cc09005"}, + {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:df000aee4b8350fa413d00370309d0626e503d2773a9882b64b521105e795d8f"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-systemextensions" +version = "10.0" +description = "Wrappers for the framework SystemExtensions on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-SystemExtensions-10.0.tar.gz", hash = "sha256:0c71c2d3db048fd55d931137402e9d0550178f65aacc6597538d4c1c9debb729"}, + {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b1908397e50d70abe618383dd4b205fd3d5e8ddd3b9b7ff5d2dd6b330530296a"}, + {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6dcb3ca8c0598e35a6f7332f4ced3b83560d10e01254f0db76beaee68c1211c8"}, + {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4967721a4ba3d8d5ea812d31f0494fe2f876a26e4eae929fcb3681e062349623"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-threadnetwork" +version = "10.0" +description = "Wrappers for the framework ThreadNetwork on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-ThreadNetwork-10.0.tar.gz", hash = "sha256:8d014eacbd195367f93c24b1cf08690728f42f20b33d5f1fdc38bd6b114b1f13"}, + {file = "pyobjc_framework_ThreadNetwork-10.0-py2.py3-none-any.whl", hash = "sha256:f4f24ad1457e2a89c80f3aa5133e8015e67cbd0e2654d8f08abe0f4690eb7cb3"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-uniformtypeidentifiers" +version = "10.0" +description = "Wrappers for the framework UniformTypeIdentifiers on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-UniformTypeIdentifiers-10.0.tar.gz", hash = "sha256:60254b6d3bce2cc79fee6044ebce828a6c7715b218710e0b5cf3a896bba324ea"}, + {file = "pyobjc_framework_UniformTypeIdentifiers-10.0-py2.py3-none-any.whl", hash = "sha256:04ddee19fcac2cb3f56c69a6a70fe889515d2f03cc2fcecfb5e414c5bf588032"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-usernotifications" +version = "10.0" +description = "Wrappers for the framework UserNotifications on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-UserNotifications-10.0.tar.gz", hash = "sha256:d2646747d4ddbf9abb8e41937364ae074742449e2fd9d33b3138049ad686d555"}, + {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:965d38c993efa23e0bb24b63d64bfbbf396172bd9846f397ad3c5b896645648f"}, + {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0c7a535581b0c72c68b91333dc40c7341a05db666cd57ede812b316ed05534c9"}, + {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3499b79aa5aa735dfe09a73e72f14313d93675c28769e59847ae98ba31114fc3"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-usernotificationsui" +version = "10.0" +description = "Wrappers for the framework UserNotificationsUI on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-UserNotificationsUI-10.0.tar.gz", hash = "sha256:50ee261a50798e8a9dfe5152f66ed18cf584b8fcb3ef9cb6283b61413d376a3a"}, + {file = "pyobjc_framework_UserNotificationsUI-10.0-py2.py3-none-any.whl", hash = "sha256:3732661248a507a61ec551846b5f03d136d719ee402a434f9e77cee044983d75"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-UserNotifications = ">=10.0" + +[[package]] +name = "pyobjc-framework-videosubscriberaccount" +version = "10.0" +description = "Wrappers for the framework VideoSubscriberAccount on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-VideoSubscriberAccount-10.0.tar.gz", hash = "sha256:14f2d6d644df7634d186ae0a64c68317018f3ef191d9ff78658c2bfd9bad394a"}, + {file = "pyobjc_framework_VideoSubscriberAccount-10.0-py2.py3-none-any.whl", hash = "sha256:d7616cc2302372211a415e5afb83f3b52b9582b2f1381ba83b0cf955180ca2ba"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-videotoolbox" +version = "10.0" +description = "Wrappers for the framework VideoToolbox on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-VideoToolbox-10.0.tar.gz", hash = "sha256:3c1d112ca55b56eee913697f044d69f5de6959a7503fd2fcb0822ebad45f7b6c"}, + {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fa1f8442096aa52f6043a02f4ad5566bf3c8783a66e51fcd6f165de700e4244c"}, + {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ac6279db7a907d98e2e09ed75aafadfc3dc8662d9e3f0120b48d1e371bc9a9f8"}, + {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ff43e2138b5e4ae50ed1373ef436a4d0a9e9cc6b1a296e3687549e519fc73364"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreMedia = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-virtualization" +version = "10.0" +description = "Wrappers for the framework Virtualization on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Virtualization-10.0.tar.gz", hash = "sha256:6387103c8285fe1226f1f35583a11c3aa208d0fea994923cfb405413985cac91"}, + {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ffa8d1a1f588f38bf45b8631f6759ad2d8bb74e4c1c0409f33e99a68bf97b676"}, + {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:62592a97e29d6fb2e999ccfa109b03301e8d7bd91f957b1ddff44dd53afb4b94"}, + {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:95da5017b799c1443edf654cc8d3cbae29f71bb7924976a00c721043d8ccb0a6"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyobjc-framework-vision" +version = "10.0" +description = "Wrappers for the framework Vision on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-Vision-10.0.tar.gz", hash = "sha256:c78244e68b7601682f0940b3d205ca087db4177e3fcc17ee29ae6f0fa811f492"}, + {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b688e439129d06d7352924e531d5cc49badf499892272fb9e95c99539f941eb7"}, + {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76943a64cbb9cbdf06653e801e11b69ce721edccc76b6b86cddb027303b65244"}, + {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7fbb163e66a65e382123f7dc0056a525c3711e0650186ac4d05b09f21a403ca5"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" +pyobjc-framework-CoreML = ">=10.0" +pyobjc-framework-Quartz = ">=10.0" + +[[package]] +name = "pyobjc-framework-webkit" +version = "10.0" +description = "Wrappers for the framework WebKit on macOS" +category = "main" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-WebKit-10.0.tar.gz", hash = "sha256:847a69aeeb2e743c5ff838628f3a0031e538de4e011e29df52272955ed0b11df"}, + {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98104c829ecc169fe4ffd0fe499bec21e5fec0aec1974b3edd1ffac1fca0db21"}, + {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30850ed65f411bd1d54d15ec4937d36856e1e390ea70878022d45c5a08f33aa0"}, + {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:42936e1af1a4cf328ce05e3dcd56dc937f348e7971642c68d33128550b4cb169"}, +] + +[package.dependencies] +pyobjc-core = ">=10.0" +pyobjc-framework-Cocoa = ">=10.0" + +[[package]] +name = "pyperclip" +version = "1.8.2" +description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" +optional = false +python-versions = "*" +files = [ + {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, +] + +[[package]] +name = "pytest" +version = "7.4.2" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, +] + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] + +[[package]] +name = "pytest-env" +version = "0.6.2" +description = "py.test plugin that allows you to add environment variables." +optional = false +python-versions = "*" +files = [ + {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, +] + +[package.dependencies] +pytest = ">=2.6.0" + +[[package]] +name = "pytest-freezegun" +version = "0.4.2" +description = "Wrap tests with fixtures in freeze_time" +optional = false +python-versions = "*" +files = [ + {file = "pytest-freezegun-0.4.2.zip", hash = "sha256:19c82d5633751bf3ec92caa481fb5cffaac1787bd485f0df6436fd6242176949"}, + {file = "pytest_freezegun-0.4.2-py2.py3-none-any.whl", hash = "sha256:5318a6bfb8ba4b709c8471c94d0033113877b3ee02da5bfcd917c1889cde99a7"}, +] + +[package.dependencies] +freezegun = ">0.3" +pytest = ">=3.0.0" + +[[package]] +name = "pytest-mock" +version = "3.11.1" +description = "Thin-wrapper around the mock package for easier use with pytest" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, + {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, +] + +[package.dependencies] +pytest = ">=5.0" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] + +[[package]] +name = "pytest-random-order" +version = "1.1.0" +description = "Randomise the order in which pytest tests are run with some control over the randomness" +optional = false +python-versions = ">=3.5.0" +files = [ + {file = "pytest-random-order-1.1.0.tar.gz", hash = "sha256:dbe6debb9353a7af984cc9eddbeb3577dd4dbbcc1529a79e3d21f68ed9b45605"}, + {file = "pytest_random_order-1.1.0-py3-none-any.whl", hash = "sha256:6cb1e59ab0f798bb0c3488c11ae0c70d7d3340306a466d28b28ccd8ef8c20b7e"}, +] + +[package.dependencies] +pytest = ">=3.0.0" + +[[package]] +name = "pytest-responsemock" +version = "1.1.1" +description = "Simplified requests calls mocking for pytest" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-responsemock-1.1.1.tar.gz", hash = "sha256:71abcebaf61f8930bd92bd643bfc9bc2891299e4e819e21fec18c8434d5dc9af"}, + {file = "pytest_responsemock-1.1.1-py2-none-any.whl", hash = "sha256:bb2583f0cf64e8b47183464d43fe30656ddb7318f64ff2fdf935067827c461c0"}, +] + +[package.dependencies] +pytest = "*" +responses = ">=0.18.0" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "python-dotenv" +version = "1.0.0" +description = "Read key-value pairs from a .env file and set them as environment variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, + {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, +] + +[package.extras] +cli = ["click (>=5.0)"] + +[[package]] +name = "python-editor" +version = "1.0.4" +description = "Programmatically open an editor, capture the result." +optional = false +python-versions = "*" +files = [ + {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"}, + {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"}, + {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"}, +] + +[[package]] +name = "python-jose" +version = "3.3.0" +description = "JOSE implementation in Python" +optional = false +python-versions = "*" +files = [ + {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, + {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, +] + +[package.dependencies] +ecdsa = "!=0.15" +pyasn1 = "*" +rsa = "*" + +[package.extras] +cryptography = ["cryptography (>=3.4.0)"] +pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] +pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] + +[[package]] +name = "python-xlib" +version = "0.33" +description = "Python X Library" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "python-xlib-0.33.tar.gz", hash = "sha256:55af7906a2c75ce6cb280a584776080602444f75815a7aff4d287bb2d7018b32"}, + {file = "python_xlib-0.33-py2.py3-none-any.whl", hash = "sha256:c3534038d42e0df2f1392a1b30a15a4ff5fdc2b86cfa94f072bf11b10a164398"}, +] + +[package.dependencies] +six = ">=1.10.0" [[package]] name = "pytzdata" @@ -1452,4 +4392,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "07b7a76e581e9851e7032bad851e0dc9ef574b6aaabfb2700dccba1a30e4b1b8" +content-hash = "82e298604b3f5c40de2d5de4748930cab7c6ffa5ac7be9c6a7d35862da804a9d" diff --git a/jobbergate-cli/pyproject.toml b/jobbergate-cli/pyproject.toml index d6bbb6f31..3f5a33fcb 100644 --- a/jobbergate-cli/pyproject.toml +++ b/jobbergate-cli/pyproject.toml @@ -36,6 +36,8 @@ PyYAML = "6.*" rich = "^11.2.0" sentry-sdk = "^1.29.2" typer = "^0.9.0" +keyboard = "^0.13.5" +pynput = "^1.7.6" [tool.poetry.scripts] jobbergate = "jobbergate_cli.main:app" From 93c704a5153a907c49680b9bca45d419569d407a Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 20 Oct 2023 18:23:05 -0300 Subject: [PATCH 02/22] Add render paginated list results --- jobbergate-cli/jobbergate_cli/render.py | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/jobbergate-cli/jobbergate_cli/render.py b/jobbergate-cli/jobbergate_cli/render.py index caa7efb4a..c88462246 100644 --- a/jobbergate-cli/jobbergate_cli/render.py +++ b/jobbergate-cli/jobbergate_cli/render.py @@ -202,3 +202,48 @@ def render_single_result( if ctx.full_output or hidden_fields is None: hidden_fields = [] render_dict(result, hidden_fields=hidden_fields, title=title) + + +def render_paginated_list_results( + ctx: JobbergateContext, + envelope: ListResponseEnvelope, + title: str = "Results List", + style_mapper: StyleMapper = None, + hidden_fields: List[str] = None, +): + if ctx.raw_output: + serialized = envelope.json() + deserialized = json.loads(serialized) + render_json(deserialized["items"]) + else: + if envelope.total == 0: + terminal_message("There are no results to display", subject="Nothing here...") + return + + current_page = envelope.page + total_pages = envelope.pages + + if ctx.full_output or hidden_fields is None: + filtered_results = envelope.items + else: + filtered_results = [{k: v for (k, v) in d.items() if k not in hidden_fields} for d in envelope.items] + + first_row = filtered_results[0] + + table = Table(title=title, caption=f"Page {current_page} of {total_pages} - Total items: {envelope.total}") + if style_mapper is None: + style_mapper = StyleMapper() + for key in first_row.keys(): + table.add_column(key, **style_mapper.map_style(key)) + + for row in filtered_results: + table.add_row(*[str(v) for v in row.values()]) + + console = Console() + console.print() + console.print(table) + + page_controls = ( + f"Page {current_page} of {total_pages} - press Left for previous page, Right for next page, or Esc to exit" + ) + console.print(page_controls) From 8e7ef76a208074cc92990dd9192ad8d724c11c3b Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 20 Oct 2023 18:23:43 -0300 Subject: [PATCH 03/22] Add keyboard listener to list_all applications --- .../subapps/applications/app.py | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index d4cc3e9a1..9e0d858e5 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -7,10 +7,17 @@ from typing import Any, Dict, Optional, cast import typer +from pynput import keyboard from jobbergate_cli.constants import OV_CONTACT, SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.render import StyleMapper, render_list_results, render_single_result, terminal_message +from jobbergate_cli.render import ( + StyleMapper, + render_list_results, + render_paginated_list_results, + render_single_result, + terminal_message, +) from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope from jobbergate_cli.subapps.applications.tools import fetch_application_data, save_application_files, upload_application @@ -97,7 +104,8 @@ def list_all( params=params, ), ) - render_list_results( + + render_paginated_list_results( jg_ctx, envelope, title="Applications List", @@ -105,6 +113,44 @@ def list_all( hidden_fields=HIDDEN_FIELDS, ) + current_page = envelope.page + total_pages = envelope.pages + + def handle_pagination(key, current_page=current_page, total_pages=total_pages): + if key == keyboard.Key.left: + current_page = max(1, current_page - 1) + + if key == keyboard.Key.right: + current_page = min(current_page + 1, total_pages) + + if key == keyboard.Key.esc: + return False + + envelope = cast( + ListResponseEnvelope, + make_request( + jg_ctx.client, + "/jobbergate/job-script-templates?page={}".format(current_page), + "GET", + expected_status=200, + abort_message="Couldn't retrieve applications list from API", + support=True, + response_model_cls=ListResponseEnvelope, + params=params, + ), + ) + + render_paginated_list_results( + jg_ctx, + envelope, + title="Applications List", + style_mapper=style_mapper, + hidden_fields=HIDDEN_FIELDS, + ) + + with keyboard.Listener(on_press=handle_pagination, current_page=current_page, total_pages=total_pages) as listener: + listener.join() + @app.command() @handle_abort From 89884c38dbb65ee33a32827979bd449865c665ff Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Tue, 24 Oct 2023 13:55:54 -0300 Subject: [PATCH 04/22] Add prototype 2: navigation using inquirer --- jobbergate-cli/jobbergate_cli/render.py | 4 +- .../subapps/applications/app.py | 54 +- jobbergate-cli/poetry.lock | 3166 ++--------------- jobbergate-cli/pyproject.toml | 1 - 4 files changed, 254 insertions(+), 2971 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/render.py b/jobbergate-cli/jobbergate_cli/render.py index c88462246..9c36a72a9 100644 --- a/jobbergate-cli/jobbergate_cli/render.py +++ b/jobbergate-cli/jobbergate_cli/render.py @@ -243,7 +243,5 @@ def render_paginated_list_results( console.print() console.print(table) - page_controls = ( - f"Page {current_page} of {total_pages} - press Left for previous page, Right for next page, or Esc to exit" - ) + page_controls = f"Page {current_page} of {total_pages}" console.print(page_controls) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index 9e0d858e5..57974584d 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -7,7 +7,7 @@ from typing import Any, Dict, Optional, cast import typer -from pynput import keyboard +from inquirer import List, prompt from jobbergate_cli.constants import OV_CONTACT, SortOrder from jobbergate_cli.exceptions import handle_abort @@ -116,15 +116,47 @@ def list_all( current_page = envelope.page total_pages = envelope.pages - def handle_pagination(key, current_page=current_page, total_pages=total_pages): - if key == keyboard.Key.left: - current_page = max(1, current_page - 1) - - if key == keyboard.Key.right: - current_page = min(current_page + 1, total_pages) + while True: + if current_page == 1: + answer = prompt( + [ + List( + "navigation", + message="Which page would you like to view?", + choices=["Next page", "Exit"], + default="Next page", + ) + ] + ) + elif current_page == total_pages: + answer = prompt( + [ + List( + "navigation", + message="Which page would you like to view?", + choices=["Previous page", "Exit"], + default="Exit", + ) + ] + ) + else: + answer = prompt( + [ + List( + "navigation", + message="Which page would you like to view?", + choices=["Previous page", "Next page", "Exit"], + default="Next page", + ) + ] + ) - if key == keyboard.Key.esc: - return False + if answer["navigation"] == "Next page": + current_page += 1 + elif answer["navigation"] == "Previous page": + current_page -= 1 + else: + break envelope = cast( ListResponseEnvelope, @@ -139,7 +171,6 @@ def handle_pagination(key, current_page=current_page, total_pages=total_pages): params=params, ), ) - render_paginated_list_results( jg_ctx, envelope, @@ -148,9 +179,6 @@ def handle_pagination(key, current_page=current_page, total_pages=total_pages): hidden_fields=HIDDEN_FIELDS, ) - with keyboard.Listener(on_press=handle_pagination, current_page=current_page, total_pages=total_pages) as listener: - listener.join() - @app.command() @handle_abort diff --git a/jobbergate-cli/poetry.lock b/jobbergate-cli/poetry.lock index dd1c207b7..1aa44681c 100644 --- a/jobbergate-cli/poetry.lock +++ b/jobbergate-cli/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "ansicon" version = "1.89.0" description = "Python wrapper for loading Jason Hood's ANSICON" +category = "main" optional = false python-versions = "*" files = [ @@ -15,6 +16,7 @@ files = [ name = "anyio" version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -36,6 +38,7 @@ trio = ["trio (>=0.22)"] name = "black" version = "23.9.1" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -82,6 +85,7 @@ uvloop = ["uvloop (>=0.15.2)"] name = "blessed" version = "1.20.0" description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." +category = "main" optional = false python-versions = ">=2.7" files = [ @@ -98,6 +102,7 @@ wcwidth = ">=0.1.4" name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -109,6 +114,7 @@ files = [ name = "charset-normalizer" version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -208,6 +214,7 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -222,6 +229,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -233,6 +241,7 @@ files = [ name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" +category = "main" optional = false python-versions = "*" files = [ @@ -247,6 +256,7 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] name = "coverage" version = "7.3.2" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -314,6 +324,7 @@ toml = ["tomli"] name = "ecdsa" version = "0.18.0" description = "ECDSA cryptographic signature library (pure python)" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -343,6 +354,7 @@ files = [ name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -357,6 +369,7 @@ test = ["pytest (>=6)"] name = "flake8" version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -373,6 +386,7 @@ pyflakes = ">=3.1.0,<3.2.0" name = "flake8-pyproject" version = "1.2.3" description = "Flake8 plug-in loading the configuration from pyproject.toml" +category = "dev" optional = false python-versions = ">= 3.6" files = [ @@ -390,6 +404,7 @@ dev = ["pyTest", "pyTest-cov"] name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -404,6 +419,7 @@ python-dateutil = ">=2.7" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -415,6 +431,7 @@ files = [ name = "httpcore" version = "0.17.3" description = "A minimal low-level HTTP client." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -426,16 +443,17 @@ files = [ anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" +sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "httpx" version = "0.24.1" description = "The next generation HTTP client." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -451,14 +469,15 @@ sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -470,6 +489,7 @@ files = [ name = "importlib-metadata" version = "4.13.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -489,6 +509,7 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -500,6 +521,7 @@ files = [ name = "inquirer" version = "3.1.3" description = "Collection of common interactive command line user interfaces, based on Inquirer.js" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -516,6 +538,7 @@ readchar = ">=3.0.6" name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -533,6 +556,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinxed" version = "1.2.0" description = "Jinxed Terminal Library" +category = "main" optional = false python-versions = "*" files = [ @@ -543,25 +567,11 @@ files = [ [package.dependencies] ansicon = {version = "*", markers = "platform_system == \"Windows\""} -[[package]] -name = "keyboard" -version = "0.13.5" -description = "Hook and simulate keyboard events on Windows and Linux" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "keyboard-0.13.5-py3-none-any.whl", hash = "sha256:8e9c2422f1217e0bd84489b9ecd361027cc78415828f4fe4f88dd4acd587947b"}, - {file = "keyboard-0.13.5.zip", hash = "sha256:63ed83305955939ca5c9a73755e5cc43e8242263f5ad5fd3bb7e0b032f3d308b"}, -] - -[package.dependencies] -pyobjc = {version = "*", markers = "sys_platform == \"darwin\""} - [[package]] name = "loguru" version = "0.6.0" description = "Python logging made (stupidly) simple" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -580,6 +590,7 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -591,6 +602,7 @@ files = [ name = "mypy" version = "0.982" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -634,6 +646,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -645,6 +658,7 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -656,6 +670,7 @@ files = [ name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -667,6 +682,7 @@ files = [ name = "pendulum" version = "2.1.2" description = "Python datetimes made easy" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -701,6 +717,7 @@ pytzdata = ">=2020.1" name = "platformdirs" version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -716,6 +733,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -731,6 +749,7 @@ testing = ["pytest", "pytest-benchmark"] name = "plummet" version = "1.2.1" description = "Utilities for testing with pendulum timestamps" +category = "dev" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -750,6 +769,7 @@ time-machine = ["time-machine (>=2)"] name = "py-buzz" version = "4.1.0" description = "\"That's not flying, it's falling with style\": Exceptions with extras" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -761,6 +781,7 @@ files = [ name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -772,6 +793,7 @@ files = [ name = "pycodestyle" version = "2.11.0" description = "Python style guide checker" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -783,6 +805,7 @@ files = [ name = "pydantic" version = "1.10.13" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -835,6 +858,7 @@ email = ["email-validator (>=1.0.3)"] name = "pyflakes" version = "3.1.0" description = "passive checker of Python programs" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -846,6 +870,7 @@ files = [ name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -875,176 +900,6 @@ pyobjc-framework-Quartz = {version = ">=8.0", markers = "sys_platform == \"darwi python-xlib = {version = ">=0.17", markers = "sys_platform in \"linux\""} six = "*" -[[package]] -name = "pyobjc" -version = "10.0" -description = "Python<->ObjC Interoperability Module" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-10.0-py3-none-any.whl", hash = "sha256:0f30bd3f25425a6c435f37713bc062382c85022d07ddb1f199a9211d859846db"}, - {file = "pyobjc-10.0.tar.gz", hash = "sha256:9987a79e30cdd0de31e58ed41240e2fc4cbf2c085c9fd8988f7de5d0ae06b101"}, -] - -[package.dependencies] -pyobjc-core = "10.0" -pyobjc-framework-Accessibility = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Accounts = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AddressBook = "10.0" -pyobjc-framework-AdServices = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AdSupport = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-AppleScriptKit = "10.0" -pyobjc-framework-AppleScriptObjC = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-ApplicationServices = "10.0" -pyobjc-framework-AppTrackingTransparency = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AudioVideoBridging = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AuthenticationServices = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Automator = "10.0" -pyobjc-framework-AVFoundation = {version = "10.0", markers = "platform_release >= \"11.0\""} -pyobjc-framework-AVKit = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-AVRouting = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BackgroundAssets = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BusinessChat = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-CalendarStore = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-CallKit = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CFNetwork = "10.0" -pyobjc-framework-Cinematic = {version = "10.0", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ClassKit = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CloudKit = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-Cocoa = "10.0" -pyobjc-framework-Collaboration = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-ColorSync = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-Contacts = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-ContactsUI = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-CoreAudio = "10.0" -pyobjc-framework-CoreAudioKit = "10.0" -pyobjc-framework-CoreBluetooth = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-CoreData = "10.0" -pyobjc-framework-CoreHaptics = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreLocation = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CoreMedia = {version = "10.0", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMediaIO = {version = "10.0", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMIDI = "10.0" -pyobjc-framework-CoreML = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreMotion = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreServices = "10.0" -pyobjc-framework-CoreSpotlight = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreText = "10.0" -pyobjc-framework-CoreWLAN = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CryptoTokenKit = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-DataDetection = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-DeviceCheck = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-DictionaryServices = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-DiscRecording = "10.0" -pyobjc-framework-DiscRecordingUI = "10.0" -pyobjc-framework-DiskArbitration = "10.0" -pyobjc-framework-DVDPlayback = "10.0" -pyobjc-framework-EventKit = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-ExceptionHandling = "10.0" -pyobjc-framework-ExecutionPolicy = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ExtensionKit = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ExternalAccessory = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-FileProvider = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FileProviderUI = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FinderSync = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-FSEvents = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-GameCenter = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameController = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-GameKit = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameplayKit = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-HealthKit = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ImageCaptureCore = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-InputMethodKit = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-InstallerPlugins = "10.0" -pyobjc-framework-InstantMessage = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-Intents = {version = "10.0", markers = "platform_release >= \"16.0\""} -pyobjc-framework-IntentsUI = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-IOBluetooth = "10.0" -pyobjc-framework-IOBluetoothUI = "10.0" -pyobjc-framework-IOSurface = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-iTunesLibrary = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-KernelManagement = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-LatentSemanticMapping = "10.0" -pyobjc-framework-LaunchServices = "10.0" -pyobjc-framework-libdispatch = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-libxpc = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-LinkPresentation = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-LocalAuthentication = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MailKit = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MapKit = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaAccessibility = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaLibrary = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaPlayer = {version = "10.0", markers = "platform_release >= \"16.0\""} -pyobjc-framework-MediaToolbox = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-Metal = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalFX = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-MetalKit = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalPerformanceShaders = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-MetricKit = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MLCompute = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ModelIO = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MultipeerConnectivity = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-NaturalLanguage = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetFS = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-Network = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetworkExtension = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-NotificationCenter = {version = "10.0", markers = "platform_release >= \"14.0\""} -pyobjc-framework-OpenDirectory = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-OSAKit = "10.0" -pyobjc-framework-OSLog = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PassKit = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-PencilKit = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PHASE = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Photos = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PhotosUI = {version = "10.0", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PreferencePanes = "10.0" -pyobjc-framework-PubSub = {version = "10.0", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} -pyobjc-framework-PushKit = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Quartz = "10.0" -pyobjc-framework-QuickLookThumbnailing = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ReplayKit = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-SafariServices = {version = "10.0", markers = "platform_release >= \"16.0\""} -pyobjc-framework-SafetyKit = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SceneKit = {version = "10.0", markers = "platform_release >= \"11.0\""} -pyobjc-framework-ScreenCaptureKit = {version = "10.0", markers = "platform_release >= \"21.4\""} -pyobjc-framework-ScreenSaver = "10.0" -pyobjc-framework-ScreenTime = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ScriptingBridge = {version = "10.0", markers = "platform_release >= \"9.0\""} -pyobjc-framework-SearchKit = "10.0" -pyobjc-framework-Security = "10.0" -pyobjc-framework-SecurityFoundation = "10.0" -pyobjc-framework-SecurityInterface = "10.0" -pyobjc-framework-SensitiveContentAnalysis = {version = "10.0", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ServiceManagement = {version = "10.0", markers = "platform_release >= \"10.0\""} -pyobjc-framework-SharedWithYou = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SharedWithYouCore = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ShazamKit = {version = "10.0", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Social = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-SoundAnalysis = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Speech = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-SpriteKit = {version = "10.0", markers = "platform_release >= \"13.0\""} -pyobjc-framework-StoreKit = {version = "10.0", markers = "platform_release >= \"11.0\""} -pyobjc-framework-Symbols = {version = "10.0", markers = "platform_release >= \"23.0\""} -pyobjc-framework-SyncServices = "10.0" -pyobjc-framework-SystemConfiguration = "10.0" -pyobjc-framework-SystemExtensions = {version = "10.0", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ThreadNetwork = {version = "10.0", markers = "platform_release >= \"22.0\""} -pyobjc-framework-UniformTypeIdentifiers = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-UserNotifications = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-UserNotificationsUI = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-VideoSubscriberAccount = {version = "10.0", markers = "platform_release >= \"18.0\""} -pyobjc-framework-VideoToolbox = {version = "10.0", markers = "platform_release >= \"12.0\""} -pyobjc-framework-Virtualization = {version = "10.0", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Vision = {version = "10.0", markers = "platform_release >= \"17.0\""} -pyobjc-framework-WebKit = "10.0" - -[package.extras] -allbindings = ["pyobjc-core (==10.0)", "pyobjc-framework-AVFoundation (==10.0)", "pyobjc-framework-AVKit (==10.0)", "pyobjc-framework-AVRouting (==10.0)", "pyobjc-framework-Accessibility (==10.0)", "pyobjc-framework-Accounts (==10.0)", "pyobjc-framework-AdServices (==10.0)", "pyobjc-framework-AdSupport (==10.0)", "pyobjc-framework-AddressBook (==10.0)", "pyobjc-framework-AppTrackingTransparency (==10.0)", "pyobjc-framework-AppleScriptKit (==10.0)", "pyobjc-framework-AppleScriptObjC (==10.0)", "pyobjc-framework-ApplicationServices (==10.0)", "pyobjc-framework-AudioVideoBridging (==10.0)", "pyobjc-framework-AuthenticationServices (==10.0)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.0)", "pyobjc-framework-Automator (==10.0)", "pyobjc-framework-BackgroundAssets (==10.0)", "pyobjc-framework-BusinessChat (==10.0)", "pyobjc-framework-CFNetwork (==10.0)", "pyobjc-framework-CalendarStore (==10.0)", "pyobjc-framework-CallKit (==10.0)", "pyobjc-framework-Cinematic (==10.0)", "pyobjc-framework-ClassKit (==10.0)", "pyobjc-framework-CloudKit (==10.0)", "pyobjc-framework-Cocoa (==10.0)", "pyobjc-framework-Collaboration (==10.0)", "pyobjc-framework-ColorSync (==10.0)", "pyobjc-framework-Contacts (==10.0)", "pyobjc-framework-ContactsUI (==10.0)", "pyobjc-framework-CoreAudio (==10.0)", "pyobjc-framework-CoreAudioKit (==10.0)", "pyobjc-framework-CoreBluetooth (==10.0)", "pyobjc-framework-CoreData (==10.0)", "pyobjc-framework-CoreHaptics (==10.0)", "pyobjc-framework-CoreLocation (==10.0)", "pyobjc-framework-CoreMIDI (==10.0)", "pyobjc-framework-CoreML (==10.0)", "pyobjc-framework-CoreMedia (==10.0)", "pyobjc-framework-CoreMediaIO (==10.0)", "pyobjc-framework-CoreMotion (==10.0)", "pyobjc-framework-CoreServices (==10.0)", "pyobjc-framework-CoreSpotlight (==10.0)", "pyobjc-framework-CoreText (==10.0)", "pyobjc-framework-CoreWLAN (==10.0)", "pyobjc-framework-CryptoTokenKit (==10.0)", "pyobjc-framework-DVDPlayback (==10.0)", "pyobjc-framework-DataDetection (==10.0)", "pyobjc-framework-DeviceCheck (==10.0)", "pyobjc-framework-DictionaryServices (==10.0)", "pyobjc-framework-DiscRecording (==10.0)", "pyobjc-framework-DiscRecordingUI (==10.0)", "pyobjc-framework-DiskArbitration (==10.0)", "pyobjc-framework-EventKit (==10.0)", "pyobjc-framework-ExceptionHandling (==10.0)", "pyobjc-framework-ExecutionPolicy (==10.0)", "pyobjc-framework-ExtensionKit (==10.0)", "pyobjc-framework-ExternalAccessory (==10.0)", "pyobjc-framework-FSEvents (==10.0)", "pyobjc-framework-FileProvider (==10.0)", "pyobjc-framework-FileProviderUI (==10.0)", "pyobjc-framework-FinderSync (==10.0)", "pyobjc-framework-GameCenter (==10.0)", "pyobjc-framework-GameController (==10.0)", "pyobjc-framework-GameKit (==10.0)", "pyobjc-framework-GameplayKit (==10.0)", "pyobjc-framework-HealthKit (==10.0)", "pyobjc-framework-IOBluetooth (==10.0)", "pyobjc-framework-IOBluetoothUI (==10.0)", "pyobjc-framework-IOSurface (==10.0)", "pyobjc-framework-ImageCaptureCore (==10.0)", "pyobjc-framework-InputMethodKit (==10.0)", "pyobjc-framework-InstallerPlugins (==10.0)", "pyobjc-framework-InstantMessage (==10.0)", "pyobjc-framework-Intents (==10.0)", "pyobjc-framework-IntentsUI (==10.0)", "pyobjc-framework-KernelManagement (==10.0)", "pyobjc-framework-LatentSemanticMapping (==10.0)", "pyobjc-framework-LaunchServices (==10.0)", "pyobjc-framework-LinkPresentation (==10.0)", "pyobjc-framework-LocalAuthentication (==10.0)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.0)", "pyobjc-framework-MLCompute (==10.0)", "pyobjc-framework-MailKit (==10.0)", "pyobjc-framework-MapKit (==10.0)", "pyobjc-framework-MediaAccessibility (==10.0)", "pyobjc-framework-MediaLibrary (==10.0)", "pyobjc-framework-MediaPlayer (==10.0)", "pyobjc-framework-MediaToolbox (==10.0)", "pyobjc-framework-Metal (==10.0)", "pyobjc-framework-MetalFX (==10.0)", "pyobjc-framework-MetalKit (==10.0)", "pyobjc-framework-MetalPerformanceShaders (==10.0)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.0)", "pyobjc-framework-MetricKit (==10.0)", "pyobjc-framework-ModelIO (==10.0)", "pyobjc-framework-MultipeerConnectivity (==10.0)", "pyobjc-framework-NaturalLanguage (==10.0)", "pyobjc-framework-NetFS (==10.0)", "pyobjc-framework-Network (==10.0)", "pyobjc-framework-NetworkExtension (==10.0)", "pyobjc-framework-NotificationCenter (==10.0)", "pyobjc-framework-OSAKit (==10.0)", "pyobjc-framework-OSLog (==10.0)", "pyobjc-framework-OpenDirectory (==10.0)", "pyobjc-framework-PHASE (==10.0)", "pyobjc-framework-PassKit (==10.0)", "pyobjc-framework-PencilKit (==10.0)", "pyobjc-framework-Photos (==10.0)", "pyobjc-framework-PhotosUI (==10.0)", "pyobjc-framework-PreferencePanes (==10.0)", "pyobjc-framework-PubSub (==10.0)", "pyobjc-framework-PushKit (==10.0)", "pyobjc-framework-Quartz (==10.0)", "pyobjc-framework-QuickLookThumbnailing (==10.0)", "pyobjc-framework-ReplayKit (==10.0)", "pyobjc-framework-SafariServices (==10.0)", "pyobjc-framework-SafetyKit (==10.0)", "pyobjc-framework-SceneKit (==10.0)", "pyobjc-framework-ScreenCaptureKit (==10.0)", "pyobjc-framework-ScreenSaver (==10.0)", "pyobjc-framework-ScreenTime (==10.0)", "pyobjc-framework-ScriptingBridge (==10.0)", "pyobjc-framework-SearchKit (==10.0)", "pyobjc-framework-Security (==10.0)", "pyobjc-framework-SecurityFoundation (==10.0)", "pyobjc-framework-SecurityInterface (==10.0)", "pyobjc-framework-SensitiveContentAnalysis (==10.0)", "pyobjc-framework-ServiceManagement (==10.0)", "pyobjc-framework-SharedWithYou (==10.0)", "pyobjc-framework-SharedWithYouCore (==10.0)", "pyobjc-framework-ShazamKit (==10.0)", "pyobjc-framework-Social (==10.0)", "pyobjc-framework-SoundAnalysis (==10.0)", "pyobjc-framework-Speech (==10.0)", "pyobjc-framework-SpriteKit (==10.0)", "pyobjc-framework-StoreKit (==10.0)", "pyobjc-framework-Symbols (==10.0)", "pyobjc-framework-SyncServices (==10.0)", "pyobjc-framework-SystemConfiguration (==10.0)", "pyobjc-framework-SystemExtensions (==10.0)", "pyobjc-framework-ThreadNetwork (==10.0)", "pyobjc-framework-UniformTypeIdentifiers (==10.0)", "pyobjc-framework-UserNotifications (==10.0)", "pyobjc-framework-UserNotificationsUI (==10.0)", "pyobjc-framework-VideoSubscriberAccount (==10.0)", "pyobjc-framework-VideoToolbox (==10.0)", "pyobjc-framework-Virtualization (==10.0)", "pyobjc-framework-Vision (==10.0)", "pyobjc-framework-WebKit (==10.0)", "pyobjc-framework-iTunesLibrary (==10.0)", "pyobjc-framework-libdispatch (==10.0)", "pyobjc-framework-libxpc (==10.0)"] - [[package]] name = "pyobjc-core" version = "10.0" @@ -1063,17 +918,20 @@ files = [ ] [[package]] -name = "pyobjc-framework-accessibility" +name = "pyobjc-framework-applicationservices" version = "10.0" -description = "Wrappers for the framework Accessibility on macOS" +description = "Wrappers for the framework ApplicationServices on macOS" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accessibility-10.0.tar.gz", hash = "sha256:5aa152201ccc235a6bbba271b698de42445a4a058b8dceca982d70384c195255"}, - {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e23bcd2e43ab8bc800255ee2b09c1af924b2d6b4602a4ec94719a08d181fdf62"}, - {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:911295caa0ad264787580e2aa8680d3c7c1957e22e9db3ccdc0d9a95a27f3333"}, - {file = "pyobjc_framework_Accessibility-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c2f95c08ae2d7d0c8745d81a68d74aba00a3de026a7831fb67561f85a5886c0b"}, + {file = "pyobjc-framework-ApplicationServices-10.0.tar.gz", hash = "sha256:8a667da95c09202def58746c42d5093f90be5762a52e6f5ad8beb334b51dca20"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b1688abb30cfd6607ae70dd07d3118a5f2d3593916342ffb842a208e7ff52f2b"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ebbe656c8b1a8fb3880d47ebef5cb7c95b9a646c84bc369cf132347dc4754143"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9cf969781616261ec7a2c427120a9fb4ac861e62bc2854de6cabdd2e4ea47141"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:49c4b3e6399572552ba8167bff16ef6cd2eeba6e417547a67d26316acb80f612"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b26b16077fbd3e32f4216b05798a9fe79b4c00c498581adf15c4f47db13ed270"}, + {file = "pyobjc_framework_ApplicationServices-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b20d97f6aa63c4935363f4d9bad736d92b67f46ccd9c8c8c84d08e03b2583691"}, ] [package.dependencies] @@ -1082,33 +940,40 @@ pyobjc-framework-Cocoa = ">=10.0" pyobjc-framework-Quartz = ">=10.0" [[package]] -name = "pyobjc-framework-accounts" +name = "pyobjc-framework-cocoa" version = "10.0" -description = "Wrappers for the framework Accounts on macOS" +description = "Wrappers for the Cocoa frameworks on macOS" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accounts-10.0.tar.gz", hash = "sha256:5679caa87b3bd597f776e154c43dbeb460251798165d55daf79f105a131fdf2c"}, - {file = "pyobjc_framework_Accounts-10.0-py2.py3-none-any.whl", hash = "sha256:72c67d4b1f174d2045558d7b1348d5dce642ea0907ab3dfb79d2f449e601ad42"}, + {file = "pyobjc-framework-Cocoa-10.0.tar.gz", hash = "sha256:723421eff4f59e4ca9a9bb8ec6dafbc0f778141236fa85a49fdd86732d58a74c"}, + {file = "pyobjc_framework_Cocoa-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:80c22a8fc7f085746d9cd222adeca8fe6790e3e6ad7eed5fc70b32aa87c10adb"}, + {file = "pyobjc_framework_Cocoa-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0187cba228976a45f41116c74aab079b64bacb3ffc3c886a4bd8e472bf9be581"}, + {file = "pyobjc_framework_Cocoa-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a81dabdc40268591e3196087388e680c6570fed1b521df9b04733cb3ece0414e"}, + {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0a23db9ab99e338e1d8a268d873cc15408f78cec9946308393ca2241820c18b8"}, + {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a3c66fe56a5156a818fbf056c589f8140a5fdb1dcb1f1075cb34d3755474d900"}, + {file = "pyobjc_framework_Cocoa-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bf9020e85ead569021b15272dcd90207aab6c754093f520b11d4210a2efbdd06"}, ] [package.dependencies] pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pyobjc-framework-addressbook" +name = "pyobjc-framework-quartz" version = "10.0" -description = "Wrappers for the framework AddressBook on macOS" +description = "Wrappers for the Quartz frameworks on macOS" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AddressBook-10.0.tar.gz", hash = "sha256:e61dbd593113721ff45bbc706884727dc483502eb4d514fd4c53f56b9a86bef7"}, - {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:71a0667a4d89bf9a50e2fda57705d296ab04ae24063ee67f377226fe6693699d"}, - {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bce60351f7e8db831b9044702e368eee09daacb7bcc51d036f3b95a13b634316"}, - {file = "pyobjc_framework_AddressBook-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:75c7d8dc47dc1f3c01e9bab9af33fb012950b9b0926d8fd0cf3774c6c3a2a2ca"}, + {file = "pyobjc-framework-Quartz-10.0.tar.gz", hash = "sha256:ff7c938d9c8adff87d577d63e58f9be6e4bc75274384715fa7a20032a1ce8b0e"}, + {file = "pyobjc_framework_Quartz-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f06be24fdd2112c9f5b96ede54ec48ad7623e107b85ebbd5b4155d0b1da4d45f"}, + {file = "pyobjc_framework_Quartz-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:52848a5e283a508c6895a73cb0c950bd4dca9b1186b70dd73ddc8f436d64fd42"}, + {file = "pyobjc_framework_Quartz-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0cc89890de411a341e90d2c4148831b6d241fca66e734b5470d27869c04e33c"}, + {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc8d6edcdb0bb3dab4dbe6e6a6d420c28aa0caca53715a3e49d7f299601a723f"}, + {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4b03fade2c4aff2682cd5eae8469f3f15e089c7dd09641e24e5b54d015edfae"}, + {file = "pyobjc_framework_Quartz-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6975be7f776ad4c3a41655b90d67e45a9c7fa2d715b189d8599e8d227f790280"}, ] [package.dependencies] @@ -1116,2840 +981,212 @@ pyobjc-core = ">=10.0" pyobjc-framework-Cocoa = ">=10.0" [[package]] -name = "pyobjc-framework-adservices" -version = "10.0" -description = "Wrappers for the framework AdServices on macOS" +name = "pyperclip" +version = "1.8.2" +description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-AdServices-10.0.tar.gz", hash = "sha256:a49b6f57e0bebef2e5484deebd68828106ec3f2e70683f75cb3414a080689983"}, - {file = "pyobjc_framework_AdServices-10.0-py2.py3-none-any.whl", hash = "sha256:d3c9bb0c7da4c98879368ad22c6e558fff73c6d3d971ee5ac8bdd38f723f811b"}, + {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, ] -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - [[package]] -name = "pyobjc-framework-adsupport" -version = "10.0" -description = "Wrappers for the framework AdSupport on macOS" -category = "main" +name = "pytest" +version = "7.4.2" +description = "pytest: simple powerful testing with Python" +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pyobjc-framework-AdSupport-10.0.tar.gz", hash = "sha256:d208bcbd4462b2ffa686e9137aa1a028fa2c1cd5dda1d31e409b7e935e843565"}, - {file = "pyobjc_framework_AdSupport-10.0-py2.py3-none-any.whl", hash = "sha256:9fe3295892d2906f46ee36c982cf1b41a94dc9c5a316937174966512d61a7939"}, + {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, + {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} + +[package.extras] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] -name = "pyobjc-framework-applescriptkit" -version = "10.0" -description = "Wrappers for the framework AppleScriptKit on macOS" -category = "main" +name = "pytest-cov" +version = "4.1.0" +description = "Pytest plugin for measuring coverage." +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pyobjc-framework-AppleScriptKit-10.0.tar.gz", hash = "sha256:8d6192e4f8a9ca89b2b32e9f6f18e0cb9dd4c026d112d28b18235b1c9f8016fb"}, - {file = "pyobjc_framework_AppleScriptKit-10.0-py2.py3-none-any.whl", hash = "sha256:567123701b86833118236f0177ce7979cd91be5c2d0fe26afb7b73499812f673"}, + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] [[package]] -name = "pyobjc-framework-applescriptobjc" -version = "10.0" -description = "Wrappers for the framework AppleScriptObjC on macOS" -category = "main" +name = "pytest-env" +version = "0.6.2" +description = "py.test plugin that allows you to add environment variables." +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-AppleScriptObjC-10.0.tar.gz", hash = "sha256:3adb92fe129543c5b763e95788b8b408292ce6ff83436fec4182bcbda6493c28"}, - {file = "pyobjc_framework_AppleScriptObjC-10.0-py2.py3-none-any.whl", hash = "sha256:ef800eae5cd54a41f88c8bf83fcc7ab3c902ecaf104e469a6f1ead15da517479"}, + {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +pytest = ">=2.6.0" [[package]] -name = "pyobjc-framework-applicationservices" -version = "10.0" -description = "Wrappers for the framework ApplicationServices on macOS" -category = "main" +name = "pytest-freezegun" +version = "0.4.2" +description = "Wrap tests with fixtures in freeze_time" +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-ApplicationServices-10.0.tar.gz", hash = "sha256:8a667da95c09202def58746c42d5093f90be5762a52e6f5ad8beb334b51dca20"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b1688abb30cfd6607ae70dd07d3118a5f2d3593916342ffb842a208e7ff52f2b"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ebbe656c8b1a8fb3880d47ebef5cb7c95b9a646c84bc369cf132347dc4754143"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9cf969781616261ec7a2c427120a9fb4ac861e62bc2854de6cabdd2e4ea47141"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:49c4b3e6399572552ba8167bff16ef6cd2eeba6e417547a67d26316acb80f612"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b26b16077fbd3e32f4216b05798a9fe79b4c00c498581adf15c4f47db13ed270"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b20d97f6aa63c4935363f4d9bad736d92b67f46ccd9c8c8c84d08e03b2583691"}, + {file = "pytest-freezegun-0.4.2.zip", hash = "sha256:19c82d5633751bf3ec92caa481fb5cffaac1787bd485f0df6436fd6242176949"}, + {file = "pytest_freezegun-0.4.2-py2.py3-none-any.whl", hash = "sha256:5318a6bfb8ba4b709c8471c94d0033113877b3ee02da5bfcd917c1889cde99a7"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" +freezegun = ">0.3" +pytest = ">=3.0.0" [[package]] -name = "pyobjc-framework-apptrackingtransparency" -version = "10.0" -description = "Wrappers for the framework AppTrackingTransparency on macOS" -category = "main" +name = "pytest-mock" +version = "3.11.1" +description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pyobjc-framework-AppTrackingTransparency-10.0.tar.gz", hash = "sha256:846b148300b0c588cfdfc016cf2ace3f77ee4470ca8112907fb2ef00b1271660"}, - {file = "pyobjc_framework_AppTrackingTransparency-10.0-py2.py3-none-any.whl", hash = "sha256:20d1c8516c2ac568b90f3daf7d93b91a37ea61aa874b4a541d276c7fdac623e4"}, + {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, + {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +pytest = ">=5.0" + +[package.extras] +dev = ["pre-commit", "pytest-asyncio", "tox"] [[package]] -name = "pyobjc-framework-audiovideobridging" -version = "10.0" -description = "Wrappers for the framework AudioVideoBridging on macOS" -category = "main" +name = "pytest-random-order" +version = "1.1.0" +description = "Randomise the order in which pytest tests are run with some control over the randomness" +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.5.0" files = [ - {file = "pyobjc-framework-AudioVideoBridging-10.0.tar.gz", hash = "sha256:ca0b947dca87a831328aa8da16232f98699d7a144ed4d088d6b5a388552d85fb"}, - {file = "pyobjc_framework_AudioVideoBridging-10.0-py2.py3-none-any.whl", hash = "sha256:979081558ec3a8cd875515120027448fbe24fa0605b96cf13c7541bffab281bc"}, + {file = "pytest-random-order-1.1.0.tar.gz", hash = "sha256:dbe6debb9353a7af984cc9eddbeb3577dd4dbbcc1529a79e3d21f68ed9b45605"}, + {file = "pytest_random_order-1.1.0-py3-none-any.whl", hash = "sha256:6cb1e59ab0f798bb0c3488c11ae0c70d7d3340306a466d28b28ccd8ef8c20b7e"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +pytest = ">=3.0.0" [[package]] -name = "pyobjc-framework-authenticationservices" -version = "10.0" -description = "Wrappers for the framework AuthenticationServices on macOS" -category = "main" +name = "pytest-responsemock" +version = "1.1.1" +description = "Simplified requests calls mocking for pytest" +category = "dev" optional = false -python-versions = ">=3.8" +python-versions = ">=3.7" files = [ - {file = "pyobjc-framework-AuthenticationServices-10.0.tar.gz", hash = "sha256:0ee315ccae58e9821d92052ac937f26d4a033b1fbbda1e213b1752b10653ba5b"}, - {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b9aafe7b5e6f46ebb1e52f94d562bc4c137ff2cbbcebf7aebce7a0d0e4a2431f"}, - {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e20a06e250547c3bf29ea209e38f59eb471b3081a160dcb2ef26f05c8ff46412"}, - {file = "pyobjc_framework_AuthenticationServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:019ebeeb191938bc34058cec587b137aee6b7cfcfaa01e23a4073fa633a04cdc"}, + {file = "pytest-responsemock-1.1.1.tar.gz", hash = "sha256:71abcebaf61f8930bd92bd643bfc9bc2891299e4e819e21fec18c8434d5dc9af"}, + {file = "pytest_responsemock-1.1.1-py2-none-any.whl", hash = "sha256:bb2583f0cf64e8b47183464d43fe30656ddb7318f64ff2fdf935067827c461c0"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +pytest = "*" +responses = ">=0.18.0" [[package]] -name = "pyobjc-framework-automaticassessmentconfiguration" -version = "10.0" -description = "Wrappers for the framework AutomaticAssessmentConfiguration on macOS" +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.0.tar.gz", hash = "sha256:008599dc2b2af1175e574ebce2be950c5bb67a2c9eb7391535dac4f514e158a2"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:46dcc05d21ebd6253c266acd40b2392725823455ea730b3dcb62a42764f28bec"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:46a318317123e7a2915bf04f93a11ab11f97f21706aff2152cdcdcc1835252f4"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:520eeb727edd2f9f91dd261b31ed3de2baafb40da59f2f7120b3f39166cbafbf"}, + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +six = ">=1.5" [[package]] -name = "pyobjc-framework-automator" -version = "10.0" -description = "Wrappers for the framework Automator on macOS" +name = "python-dotenv" +version = "1.0.0" +description = "Read key-value pairs from a .env file and set them as environment variables" category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Automator-10.0.tar.gz", hash = "sha256:c6d8591650e17a1d9d92f62fd83848d3afbf70b08dfc12a205fb78684ab4b9ac"}, - {file = "pyobjc_framework_Automator-10.0-py2.py3-none-any.whl", hash = "sha256:261e36071f1a662f387bab48f711059e6e468ddd5054c0f2bae7af7e619a7aba"}, + {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, + {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, ] -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" +[package.extras] +cli = ["click (>=5.0)"] [[package]] -name = "pyobjc-framework-avfoundation" -version = "10.0" -description = "Wrappers for the framework AVFoundation on macOS" +name = "python-editor" +version = "1.0.4" +description = "Programmatically open an editor, capture the result." category = "main" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-AVFoundation-10.0.tar.gz", hash = "sha256:40366a8c6bb964e7b7263e8cf060350f69ad365e6a5356d6ccab9f256a9987f7"}, - {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b9b2e6731a64425f297bed68c6fc6e31e20965277c96012e62f7fa9059ff544e"}, - {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:917185ff4e3f262b98cca2789ed68d43b0b111b161b9c8bda0bc7e6ab6def41c"}, - {file = "pyobjc_framework_AVFoundation-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d2bf8c4cfe72a24a4632d4152522c6b1b9b69b1bfadc7d76fd1082e7cc3cec7e"}, + {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"}, + {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"}, + {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"}, ] -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreAudio = ">=10.0" -pyobjc-framework-CoreMedia = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - [[package]] -name = "pyobjc-framework-avkit" -version = "10.0" -description = "Wrappers for the framework AVKit on macOS" +name = "python-jose" +version = "3.3.0" +description = "JOSE implementation in Python" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-AVKit-10.0.tar.gz", hash = "sha256:53f8b74a76c948c0d9a96f331d99e1a6ab7a1ce87af7d9bbfffd267532bea98c"}, - {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:96e153fc74339c5634a8f49614b8039028995cde08b3dd8b024a46ebe4cb4286"}, - {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:44df99e60a3ab5359d92ccc840c0abbed2b8072d27a483fac46ec73800e128bd"}, - {file = "pyobjc_framework_AVKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5bc830421f74c1b78aa85605d2e72c5aa18b6d74b24b82824a1b6e519b66cc64"}, + {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, + {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, ] [package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" +ecdsa = "!=0.15" +pyasn1 = "*" +rsa = "*" + +[package.extras] +cryptography = ["cryptography (>=3.4.0)"] +pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] +pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] [[package]] -name = "pyobjc-framework-avrouting" -version = "10.0" -description = "Wrappers for the framework AVRouting on macOS" +name = "python-xlib" +version = "0.33" +description = "Python X Library" category = "main" optional = false -python-versions = ">=3.8" +python-versions = "*" files = [ - {file = "pyobjc-framework-AVRouting-10.0.tar.gz", hash = "sha256:41213eb9fdff4ec58dddee240de7100601cef74e458265623763b460a422438c"}, - {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cc38ebfc114467ec14b39e774c93d4f1e4345bc4a723ba555a42bacbb5e45dd3"}, - {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0cd4531d5edd0c6be1ba53db037f04c32ad91caf9572d03666608b8ab93c07ae"}, - {file = "pyobjc_framework_AVRouting-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9089d3e2b53c10f131d4f23f14ccd2c89dff59b47666ba5383616a2a6026fa2"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-backgroundassets" -version = "10.0" -description = "Wrappers for the framework BackgroundAssets on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-BackgroundAssets-10.0.tar.gz", hash = "sha256:d2b9a7a46a632d0adeaa6ba411ddb829d8efa3273a93d7918cc143dfe9dfb54b"}, - {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9b9c236a3ccaf1e68bfaade6b5c6d843f628bc4d3636b093be78cd7bb7d9c9f6"}, - {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:93736d6fb6bda52cfddf4006ffbdcf6bfe414826c04901d4c5b644cc380ade44"}, - {file = "pyobjc_framework_BackgroundAssets-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a248a110092983f0b19d9c5b21d7027987954ae4d58775411d540139e6972a69"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-businesschat" -version = "10.0" -description = "Wrappers for the framework BusinessChat on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-BusinessChat-10.0.tar.gz", hash = "sha256:fb929e4ab2b8fe618ac8038a12745d32972e0f6d1dd7c3eb41395542e0200207"}, - {file = "pyobjc_framework_BusinessChat-10.0-py2.py3-none-any.whl", hash = "sha256:2eb35f6f3585302c32cab1af13501b13f97badd13c0ed885c4ecd66ed24add15"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-calendarstore" -version = "10.0" -description = "Wrappers for the framework CalendarStore on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CalendarStore-10.0.tar.gz", hash = "sha256:bf73fc69e306456a36417b97a56398013637ae551cdfae1ba53e2a86935afa52"}, - {file = "pyobjc_framework_CalendarStore-10.0-py2.py3-none-any.whl", hash = "sha256:1e0da82b7d1a0d1f34991795d1f7dc8e186f79faf9a4b0ef5fe1a74112ac70a4"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-callkit" -version = "10.0" -description = "Wrappers for the framework CallKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CallKit-10.0.tar.gz", hash = "sha256:640bc3175b494f6cd0e2a56a453025d2d7d18c97af18800c24dcd8e257209101"}, - {file = "pyobjc_framework_CallKit-10.0-py2.py3-none-any.whl", hash = "sha256:3c431115a3d3c826268a9c4272c0b261e5a15206e9468915a859cde52f32d190"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-cfnetwork" -version = "10.0" -description = "Wrappers for the framework CFNetwork on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CFNetwork-10.0.tar.gz", hash = "sha256:18118d62e05e37692e3cfa5b1ab8c0b82079aad72240bcb6d626740aa4405480"}, - {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8d9d3badde8adac25c2fef5bf768792a0ee1cbaff9b5d9f416a8a77b0729f2d7"}, - {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc16d60fdba0aa41ea10353ca4108c464c18eb6caadb457f845bdd32de6a236e"}, - {file = "pyobjc_framework_CFNetwork-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b935f6f43fa42d9f2617e9858e243e0381338aaa4c2a47c59efbefd310d6faa6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-cinematic" -version = "10.0" -description = "Wrappers for the framework Cinematic on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Cinematic-10.0.tar.gz", hash = "sha256:5cc96e10e76dc617f11a327ea351078a44b1a4c918187626d8d7e9e9c3d7bcd7"}, - {file = "pyobjc_framework_Cinematic-10.0-py2.py3-none-any.whl", hash = "sha256:667197227d10add7869dbcfd8396faa251682ff62a702c125ddaf7566469c25b"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-AVFoundation = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreMedia = ">=10.0" -pyobjc-framework-Metal = ">=10.0" - -[[package]] -name = "pyobjc-framework-classkit" -version = "10.0" -description = "Wrappers for the framework ClassKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ClassKit-10.0.tar.gz", hash = "sha256:6f0c6dbba20945f515b5a3540c88d91e9c00c1af854c889fb56491179dc064be"}, - {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:586e5a5d26d4444614cde1be7acc51483ed806057c87c035c3a22bcf6d910d37"}, - {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ea01948a1711a680fb2209adbc72931759b3d96621b10d207d3ec41a3663a3e1"}, - {file = "pyobjc_framework_ClassKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ccd9f14c9ecbd35af3264e017871d26ea51d335d011ebd6ecc6c11b0cd605f3d"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-cloudkit" -version = "10.0" -description = "Wrappers for the framework CloudKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CloudKit-10.0.tar.gz", hash = "sha256:05dab3798e9126625a0a72ca1987a768d5bf5c3293b594c9eb8d4e1eb02d26ec"}, - {file = "pyobjc_framework_CloudKit-10.0-py2.py3-none-any.whl", hash = "sha256:cf58196fc29c0fec8f5471172d0fc2f4fe03ded5ccb4d4c1075967283164aad3"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Accounts = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreData = ">=10.0" -pyobjc-framework-CoreLocation = ">=10.0" - -[[package]] -name = "pyobjc-framework-cocoa" -version = "10.0" -description = "Wrappers for the Cocoa frameworks on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Cocoa-10.0.tar.gz", hash = "sha256:723421eff4f59e4ca9a9bb8ec6dafbc0f778141236fa85a49fdd86732d58a74c"}, - {file = "pyobjc_framework_Cocoa-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:80c22a8fc7f085746d9cd222adeca8fe6790e3e6ad7eed5fc70b32aa87c10adb"}, - {file = "pyobjc_framework_Cocoa-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0187cba228976a45f41116c74aab079b64bacb3ffc3c886a4bd8e472bf9be581"}, - {file = "pyobjc_framework_Cocoa-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a81dabdc40268591e3196087388e680c6570fed1b521df9b04733cb3ece0414e"}, - {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0a23db9ab99e338e1d8a268d873cc15408f78cec9946308393ca2241820c18b8"}, - {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a3c66fe56a5156a818fbf056c589f8140a5fdb1dcb1f1075cb34d3755474d900"}, - {file = "pyobjc_framework_Cocoa-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bf9020e85ead569021b15272dcd90207aab6c754093f520b11d4210a2efbdd06"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" - -[[package]] -name = "pyobjc-framework-collaboration" -version = "10.0" -description = "Wrappers for the framework Collaboration on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Collaboration-10.0.tar.gz", hash = "sha256:242148c98010f44b4f09d6037b9aa963e54038c1769474643997e7c4618f2c2a"}, - {file = "pyobjc_framework_Collaboration-10.0-py2.py3-none-any.whl", hash = "sha256:971e75adb91bc3f39750ce3f5332e72500f82d04f6e95cb1e8dd1dc468826530"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-colorsync" -version = "10.0" -description = "Wrappers for the framework ColorSync on Mac OS X" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ColorSync-10.0.tar.gz", hash = "sha256:e5722486f02a3c2330996e76207e7e26dde1597122503659259715a7dedf73da"}, - {file = "pyobjc_framework_ColorSync-10.0-py2.py3-none-any.whl", hash = "sha256:5c5d361ebdcf72f4a2665cf0c68adc153b6621ea7ea0df6bbc60a4a69ec1e2b0"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-contacts" -version = "10.0" -description = "Wrappers for the framework Contacts on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Contacts-10.0.tar.gz", hash = "sha256:7130d83be467c4bb877716a73b2e1a7768f19f2c43bf3bbff2d9ae412008d4a8"}, - {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8f3b8cbf337d6a674374d6b90292871bdda0304c58aa7d4e23b96c40816534db"}, - {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e344065964de463cc18aaac5d684ae900a3867889a1ad24e0fa1937f03ceac0c"}, - {file = "pyobjc_framework_Contacts-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:03d0a882fef637ebdc709c3915ae437fdc5afe63141fb6c1c3e6041c4831c2b6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-contactsui" -version = "10.0" -description = "Wrappers for the framework ContactsUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ContactsUI-10.0.tar.gz", hash = "sha256:38f885b861af10e5773f4dbbabd4170bcd35610d879763caac47623ff7a410a9"}, - {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d73a991b76238161d97de16e717e1de0a1359dd5439f7a23277a9cddaf9f2d35"}, - {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5ea57e3eecc9a8dc451c91a21eb2b03a6a94b23c5c61dbf26d774abedb604313"}, - {file = "pyobjc_framework_ContactsUI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0fe6ad4f5d1fb15a7c749512458c71da8d5ffe46170e992b1a1d0f07dafd98a3"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Contacts = ">=10.0" - -[[package]] -name = "pyobjc-framework-coreaudio" -version = "10.0" -description = "Wrappers for the framework CoreAudio on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreAudio-10.0.tar.gz", hash = "sha256:6042e9fea80bf5c23a8a3a4a2888243b7152316275ab863ed6bc289eabdef9f1"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bd83cb720352e59c99d3c60a06670babad27c04ca0266dabf127a4575f3899bf"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4ae64cfc907b7bc7fb275b6072e6aedf0755f9ec57f862bf74c53ae6fef6e340"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:41c75e7a2e17619841c55a0be8c3c0666fad190a7142f1a80f01451184832cf3"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0802a45702bf8c2c0cbc5e80863a3c7924d1a6b07ffcd21e3aeac22a590772a1"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c7b4af7752e7c99e4b958313a00697b19a3475adb611469909ab5431c0d6ef08"}, - {file = "pyobjc_framework_CoreAudio-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ee779edf528b56bc5dcd2b4d5dda4795516a68d3443453341e485f461e14301"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coreaudiokit" -version = "10.0" -description = "Wrappers for the framework CoreAudioKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreAudioKit-10.0.tar.gz", hash = "sha256:0e604b47fb04303399d6cdeda5e83c0fed53ee61348052d44321ffbe898b08dc"}, - {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b199359b9140df894a96673bb805f29ef40004167d1bdbea899222844ed3d5e2"}, - {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:096d04184ed27dc415bcd6c7652f4db6901efbd6df544c1b18f69c1e67c5c03e"}, - {file = "pyobjc_framework_CoreAudioKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4e06731de042dded49b0854c946b6e5cd67b37d3a892609985ffbb2d60169224"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreAudio = ">=10.0" - -[[package]] -name = "pyobjc-framework-corebluetooth" -version = "10.0" -description = "Wrappers for the framework CoreBluetooth on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreBluetooth-10.0.tar.gz", hash = "sha256:dddc9020cd2ca008c7037c61026641fff5d91a608b9e3bda51d4ba6afbb04e3c"}, - {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5dc85f0acea4ec8fb59ed91f89e677133b0e5efab21fe14694328ddcdbdc22c1"}, - {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:155b2f9814970a07c602286ce19d3d3c3a812951a62b9f19aaa80475f9b49f05"}, - {file = "pyobjc_framework_CoreBluetooth-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:119c4747dcc8a1b9980b8bac4f2ffd90a3950b048b9fbf03e70656eaaaefe7d4"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coredata" -version = "10.0" -description = "Wrappers for the framework CoreData on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreData-10.0.tar.gz", hash = "sha256:6799c3ab2ad5d609df8d8801d19740abdbe8ea70851abfe8a660bcb91818238d"}, - {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98803ba27319308305cb498947e8edad829ab4564c945217563a0a4d13607702"}, - {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ad6c11c9d1fd9c368291546bdaaf9355c1410bce662f782509249863dd8368ef"}, - {file = "pyobjc_framework_CoreData-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1c897103683737761f8d1c248011affbad3f2bc08f0c9f312a051da6134931a2"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-corehaptics" -version = "10.0" -description = "Wrappers for the framework CoreHaptics on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreHaptics-10.0.tar.gz", hash = "sha256:3ea964b452763e27b24373fc61adf65fe6553bd815e8b9b3399f43ee10ab600c"}, - {file = "pyobjc_framework_CoreHaptics-10.0-py2.py3-none-any.whl", hash = "sha256:5c7bbc18db031be82bdbdde8f96045220a0309e200e8779bc7e361eb2d482892"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-corelocation" -version = "10.0" -description = "Wrappers for the framework CoreLocation on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreLocation-10.0.tar.gz", hash = "sha256:d84001ab5ef58441514bd92ed9b2fd4225faf0241d2a09ab503592fbc6a6066d"}, - {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0a9d535f00a0369d493f49bd898e68d5ce7227ce161a3f0df0d9e6668e396a77"}, - {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cf39e4f092d7a94a8ad516bda2603872fd0952aeac0bb0143e7ec2e2244a172d"}, - {file = "pyobjc_framework_CoreLocation-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4ec1c23b92285f7f33bdc86dc4e6cbccb8788ceca6ea6205f420859ed172abee"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coremedia" -version = "10.0" -description = "Wrappers for the framework CoreMedia on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreMedia-10.0.tar.gz", hash = "sha256:27d0755cbd3ae3b487ace5e3233f0598b976905f43357b71fd73489865f7b9e1"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a0fd980d45d710c54e668e96268cb94dd6c877526a141581d2749bfdce4e6791"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:064c35991073fe18f27f321cb33cac1d484052d154cee5222260c7fd179bc3fe"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d8bf02036e60c5f47b904a259e0665b7774d915eda95810566ca1b82a1be27e"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb6d6dd75febc83d22e986b2894307bd6bac1980535e7f70931bcac034bdbded"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:df15b39eec3420b68f878b6de698c8e94fc2a46a2bd5a16928c9cfa2ae24e8ee"}, - {file = "pyobjc_framework_CoreMedia-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9b1251c455e593dc0af52eb38c61da9847f349b9dfe6b6449a24f15aea938a31"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coremediaio" -version = "10.0" -description = "Wrappers for the framework CoreMediaIO on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreMediaIO-10.0.tar.gz", hash = "sha256:d535c67d287d21e25d739c72ae9f7ce8b0f96eacfd3e19758da69ba355553483"}, - {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2e430da4065cadd8857b1615c5641874484c6d857805f9fd2185de3a8fc4ef53"}, - {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d20f7c39b065f24d12b403b663f1cc09ce794ebcd1a02a199ca335bf4b5fc26"}, - {file = "pyobjc_framework_CoreMediaIO-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ad5fcce52f5f8628b3bad5ddfc9c60f4f74a5509ed59a022cc57d583b279d78d"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coremidi" -version = "10.0" -description = "Wrappers for the framework CoreMIDI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreMIDI-10.0.tar.gz", hash = "sha256:7e464775fb6bd77148394b5f53caa61c36e3426f61cc621f299bca91931eb3a4"}, - {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7ddb0b6222046b35a93601e3e4562bcbb32e4abe6ffa510e80660d718e45eaf8"}, - {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:68d0a9ac864d2ee1b7ba6977e68698d8db853149e64c18279149c1cc6ac39748"}, - {file = "pyobjc_framework_CoreMIDI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e5e97f794154425def217d041ccf50f4c820b827d27ae48ad5eedb09eaf2f6f6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coreml" -version = "10.0" -description = "Wrappers for the framework CoreML on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreML-10.0.tar.gz", hash = "sha256:11b70aaa34d45b2a325231ddc571686b8e5c6404b74eb647c84c0cb2cf51052a"}, - {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c3b6ce1fc80a77909aa1bd0938da7516b3e8a0b04a5800036bdc1456e01c084d"}, - {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4bb7b240be5e184a68527db3a4d85a7af1263fca258fb25ee9d5b84a90b6e553"}, - {file = "pyobjc_framework_CoreML-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:beb7eae3e2dce823c2e4d2ceb480884f09271e29784c8b5016b268df8b987378"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coremotion" -version = "10.0" -description = "Wrappers for the framework CoreMotion on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreMotion-10.0.tar.gz", hash = "sha256:d735668ffe028450c09499bca57467dbf77e0360b6f0623f1e054b2fe723fffb"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e8d0fd4ab5f6642f716becd2ba3dfe45d83e3a042ba184bf5056d8d2064bf716"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2e0f6657464d5ba212691e5918f3d777a1c36d1694080ad029ef3d987c25b29c"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5a2082d1e3acbfde753909680a869c8cc7b11c1a494aa497496ea9c9c98fdf29"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cd4f635d73a3bdcfe1f6d6b9dc47816d7eda1152e1c9f4f2e2f4de1b4111cf38"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d1947bbb8348bc576fcf412781f616a35bc58bc6a8fef58630e5b801ee0e36cc"}, - {file = "pyobjc_framework_CoreMotion-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3bd7725e0f764d861d1ec6a531fa1ae046970ff6d9fcb62fcb804ca86bc28316"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coreservices" -version = "10.0" -description = "Wrappers for the framework CoreServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreServices-10.0.tar.gz", hash = "sha256:a6e80770ead727979e9ffd4ea97c30889e1fdec49873bb5129bf3ef3c5b90005"}, - {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5846d8fcd2b352c479b5517176a9c6939cb50599041d9f68ddf55804d58f5751"}, - {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b8638b63f83246f6659624ad20e068ba11fdfe915f7c6318de7e3213cd2b0aac"}, - {file = "pyobjc_framework_CoreServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6ecf120cc89401b410d8f307cd499c6d80f4f52d1d1291150507b85a69bbc12c"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-FSEvents = ">=10.0" - -[[package]] -name = "pyobjc-framework-corespotlight" -version = "10.0" -description = "Wrappers for the framework CoreSpotlight on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreSpotlight-10.0.tar.gz", hash = "sha256:393767c63f2513ab4056c688aecdaf1ae67357f8d99fa963d765cfbdc9ccba47"}, - {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:dc07cfa097f79946c15fcc3bb2aea5db17822f2e9f85478c5b07d2f5f194db4f"}, - {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8760252792ce351a97b9bfed9e3f84999b698b63fcf759e8b9df5978c67236ea"}, - {file = "pyobjc_framework_CoreSpotlight-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4370d760d93cfc58691fa7fb585f20067157a18c06cd4c3bfc3dd7c9824eda5a"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-coretext" -version = "10.0" -description = "Wrappers for the framework CoreText on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreText-10.0.tar.gz", hash = "sha256:2c157d82373b8128afb9a61df26cbf029896adf86bf86876ce3f8cc3c3f3cb1b"}, - {file = "pyobjc_framework_CoreText-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:dfba918655fcd37018f38e6ca9db557c67b63ddd2de93319eb05c07f492cca32"}, - {file = "pyobjc_framework_CoreText-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c8ec3d634b440b53727adf45212bb34639ee404b891be87a62f0f2253b7a92e5"}, - {file = "pyobjc_framework_CoreText-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab1f76d3f6bf6470217478d2edf62360c5e934dfd66a4d0d35a8bf07086bee65"}, - {file = "pyobjc_framework_CoreText-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:543f37fe792ec75d72bead5616f6dc29ab2d8e26d824080fd7625efc015ecc50"}, - {file = "pyobjc_framework_CoreText-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1c4026c3d15922c7ec372b2e43a5673ba0ed436e59e046afd860a3d6a5676c25"}, - {file = "pyobjc_framework_CoreText-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ca269a49bb76fccb6d50eef3c72650bc686ae19a4cc9be6288fd6e758fa67768"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-corewlan" -version = "10.0" -description = "Wrappers for the framework CoreWLAN on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CoreWLAN-10.0.tar.gz", hash = "sha256:f71594ca1d2741f5979688d6d3880237c469943b49a030de131102357cdccb2a"}, - {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f245de3d5d7ff2f49cfe72c0bf499f5fb97ad2e930efd485f8c01ec11d749136"}, - {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7d7cb58fba9272a6dd20a84733006e574092128d9d581f346f4c777cb6c353ff"}, - {file = "pyobjc_framework_CoreWLAN-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6211ad500131bf1bd0680847f67a948478551043054a4514f90879067c854bb6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-cryptotokenkit" -version = "10.0" -description = "Wrappers for the framework CryptoTokenKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-CryptoTokenKit-10.0.tar.gz", hash = "sha256:314fe7067cecc0901602173a47bcdb3107ddbae6a22052b0e217f79b7d388153"}, - {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:94fe71998c6821d4f45de60227ee0541ad71baf758b3051e7a3c84e0abcccaac"}, - {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f30f0165b5914da418450cc3f8b870d02052f8eb9b14f27dd61aff7928cd1eb5"}, - {file = "pyobjc_framework_CryptoTokenKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9d4db0b30f395d0d4e26b48645ee7b219f499c243124fbd6495406620576ca31"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-datadetection" -version = "10.0" -description = "Wrappers for the framework DataDetection on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DataDetection-10.0.tar.gz", hash = "sha256:026b44718fc71750f7ba258be461ecb1463ebeac0ea3bf26e559cd10dfd7bd57"}, - {file = "pyobjc_framework_DataDetection-10.0-py2.py3-none-any.whl", hash = "sha256:6f6420b187475cccf20757577b005bc16b4a606dd8d9d431b59151e571fa6b12"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-devicecheck" -version = "10.0" -description = "Wrappers for the framework DeviceCheck on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DeviceCheck-10.0.tar.gz", hash = "sha256:00a02c603020a9e9369f894d0b6931217ca0c9606f4947c34bfb4f413cc736a7"}, - {file = "pyobjc_framework_DeviceCheck-10.0-py2.py3-none-any.whl", hash = "sha256:e930659cb8cb3096b88f43c237951364dbd1b29d98390e0b55b48aec0442cc92"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-dictionaryservices" -version = "10.0" -description = "Wrappers for the framework DictionaryServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DictionaryServices-10.0.tar.gz", hash = "sha256:a250ead7a3a0504ea860ed4ebefce3bec4b308b91ea760c33bfcc14af5054873"}, - {file = "pyobjc_framework_DictionaryServices-10.0-py2.py3-none-any.whl", hash = "sha256:8bc50b80e8f77e411b707827062609b67695bc5ae619452388eb02bdeea19f05"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-CoreServices = ">=10.0" - -[[package]] -name = "pyobjc-framework-discrecording" -version = "10.0" -description = "Wrappers for the framework DiscRecording on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DiscRecording-10.0.tar.gz", hash = "sha256:1b4a9a702f0695ed87392693ab916cc120c179547d6fa7bf3e59708fe218ec22"}, - {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6d4d737f0536d1d4cd4efc88787d4b20a74b71e2f91e5554346e8b1b993a2f97"}, - {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:11fecd1d6e464582e0ef0a0a4469e1ed1ea36e45c27d2bbd77cd42dca4f0dadd"}, - {file = "pyobjc_framework_DiscRecording-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d547d69e3ac8f9c735456af7c440c0c318752e1e8b55868f8a2da0aae0bef8ee"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-discrecordingui" -version = "10.0" -description = "Wrappers for the framework DiscRecordingUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DiscRecordingUI-10.0.tar.gz", hash = "sha256:9a77cd9fb311ececab84b682ebfbb573a13f6f9f67b39733c1920fcea83dfd31"}, - {file = "pyobjc_framework_DiscRecordingUI-10.0-py2.py3-none-any.whl", hash = "sha256:c80135d65bb25f1d4c3c40af9a50c3b15125c54703d6e65cf4316fe3ed3bd0e7"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-DiscRecording = ">=10.0" - -[[package]] -name = "pyobjc-framework-diskarbitration" -version = "10.0" -description = "Wrappers for the framework DiskArbitration on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DiskArbitration-10.0.tar.gz", hash = "sha256:cfd8e4c7dbef6b69832fa8e2425c53bf8bbc83b8c78bb5a098a787335df7bf8f"}, - {file = "pyobjc_framework_DiskArbitration-10.0-py2.py3-none-any.whl", hash = "sha256:cf7dadef895980e08dc7dd646c6d819ea3b4b8321abd2af512d9bde5de389895"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-dvdplayback" -version = "10.0" -description = "Wrappers for the framework DVDPlayback on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-DVDPlayback-10.0.tar.gz", hash = "sha256:fe0bf9cfbf1be9888685aedd3b25b6793d072e947c6eddcc0ccb2c4a07bee453"}, - {file = "pyobjc_framework_DVDPlayback-10.0-py2.py3-none-any.whl", hash = "sha256:ea31f045edf56abda6e1fc2aa9ff0bee267fd549b7787bbaf7e437e4fa58135e"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-eventkit" -version = "10.0" -description = "Wrappers for the framework Accounts on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-EventKit-10.0.tar.gz", hash = "sha256:8219a650edf1b6842c92306a077502488f95473d138fd842068d4a1e56621989"}, - {file = "pyobjc_framework_EventKit-10.0-py2.py3-none-any.whl", hash = "sha256:48d65edd47efd0864d93e5bbe3f05121c413d4006b7c0f0a3f0592b58d80a0db"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-exceptionhandling" -version = "10.0" -description = "Wrappers for the framework ExceptionHandling on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ExceptionHandling-10.0.tar.gz", hash = "sha256:288b99a86e29999dc0f3f1a6bb90c8dc0b79ed51b265ee4c9e673d660e959cb2"}, - {file = "pyobjc_framework_ExceptionHandling-10.0-py2.py3-none-any.whl", hash = "sha256:3c7669d6e93d4f4d472de8c7b8e3b5ecd42dda16161e24b3bf796713fc20eb1a"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-executionpolicy" -version = "10.0" -description = "Wrappers for the framework ExecutionPolicy on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ExecutionPolicy-10.0.tar.gz", hash = "sha256:cd6c14970a090f033673e5870804051a2bc41b060d02420eac0e7816b9e2c034"}, - {file = "pyobjc_framework_ExecutionPolicy-10.0-py2.py3-none-any.whl", hash = "sha256:823eda14ad797436101f365cb3a5cd7bc46bb8a8972418851427d478b9274ded"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-extensionkit" -version = "10.0" -description = "Wrappers for the framework ExtensionKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ExtensionKit-10.0.tar.gz", hash = "sha256:ed9c596728819a58803841bb36d0a5773929d6bd32279b924dcd004266a901df"}, - {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e8b4bf58985300019f64ed8ce3dc6c9ba73621646dacdc5273d93c5ffdc9238b"}, - {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6613e71395266e948d4bd8917245adf77ca58166d37aac73e340081a4ad6ff8b"}, - {file = "pyobjc_framework_ExtensionKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:144cd81e9e2ff3de8553c236a9fb7b9fbe2023f3886d32328dc324442be7ab07"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-externalaccessory" -version = "10.0" -description = "Wrappers for the framework ExternalAccessory on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ExternalAccessory-10.0.tar.gz", hash = "sha256:4b00f07e6ec8e68974d89242789720bfecdc474c26bf0f2b2b2d648e6b6155cc"}, - {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d9d51574d483719d646dc4327125ed1038c5bbaae626ae08b178cac3269f0285"}, - {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0d4101c0f3f7a4e0c7cc5c0bc0357dd564b03b5f9c41efa8f347d998806c8df1"}, - {file = "pyobjc_framework_ExternalAccessory-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a2885e163ebbae023bd6990a3864f2ca24aa49fffbff3be54f23225bac64ca6e"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-fileprovider" -version = "10.0" -description = "Wrappers for the framework FileProvider on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-FileProvider-10.0.tar.gz", hash = "sha256:432165e8ae9e85437bd4b36be4fe1a467f03f5e9d6aca07228ac5385a96b2d44"}, - {file = "pyobjc_framework_FileProvider-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b596718c562d72bfc9dacdc53cef494b8afe9f2c9d715a16c3b209c628edcba"}, - {file = "pyobjc_framework_FileProvider-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:69427a57d2238a3274fe351e39d98918a097bafc54eebba68edc07624086e38a"}, - {file = "pyobjc_framework_FileProvider-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b9820f94be07aaae649d0eae55d7661f828fc12b605c0e61c08aeb33ed0c1747"}, - {file = "pyobjc_framework_FileProvider-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b03250d3e0c5ebfbd71e2134c67577a19c3856ef3c4b849d98a00e22801c7d14"}, - {file = "pyobjc_framework_FileProvider-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7caa8541f36a4842210ac8e82f107cd109d6e835f86d0391d5bbc41433f4b384"}, - {file = "pyobjc_framework_FileProvider-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a453bc7a76ae0bc9a574bfd0b38446166d344c62e59113a19da11ade8413eaf4"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-fileproviderui" -version = "10.0" -description = "Wrappers for the framework FileProviderUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-FileProviderUI-10.0.tar.gz", hash = "sha256:895c3de1ba34ab011d012906623bcc2d2addc7b32af201ad19d59718e933d2ff"}, - {file = "pyobjc_framework_FileProviderUI-10.0-py2.py3-none-any.whl", hash = "sha256:bca5613525ffb757e033803060d63f592612820fbe7ff024e931a5e3745ec08b"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-FileProvider = ">=10.0" - -[[package]] -name = "pyobjc-framework-findersync" -version = "10.0" -description = "Wrappers for the framework FinderSync on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-FinderSync-10.0.tar.gz", hash = "sha256:6915d934236efca382926e93ded216b18a23e7dd03bf70b751cb7e86bbf237f6"}, - {file = "pyobjc_framework_FinderSync-10.0-py2.py3-none-any.whl", hash = "sha256:b2d166fa8af4cd7516fc860c896531bcf9921e5251106c99ac6cd726bf41d020"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-fsevents" -version = "10.0" -description = "Wrappers for the framework FSEvents on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-FSEvents-10.0.tar.gz", hash = "sha256:a462c1ad6d6c93d9542c9780b970915e5e9fa0f70391187f7145b5b1c64e57d5"}, - {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:eb3b590a56c31eee60adddc9657f67e319a80bfe0d91f23cac5c78dd22893404"}, - {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a548e660f2f2e63e9f2cd57db472b2b21056d89748541a167803ba4c9b6287f1"}, - {file = "pyobjc_framework_FSEvents-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:68113dbd448619f1d07e847c6088f8b4371001f2468300638dc78236ffa10c05"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-gamecenter" -version = "10.0" -description = "Wrappers for the framework GameCenter on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-GameCenter-10.0.tar.gz", hash = "sha256:3157d1389bde7afd6fa7d5d1aa64578e99c5fd50a1400178b1f58443013d6669"}, - {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9a83d8c13ae716cd3216e288531fb9e3668bf4e8e27fc1c669b1511e801aa02b"}, - {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b333d53bffcbfce4929f7db22dec9f0d8bb47e387ef2e5df4a49250069e76c86"}, - {file = "pyobjc_framework_GameCenter-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:baea3dd2e75ede21c81cc81ecd2f525b2507556bee7bf76fb6a0a292f39f8346"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-gamecontroller" -version = "10.0" -description = "Wrappers for the framework GameController on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-GameController-10.0.tar.gz", hash = "sha256:c042d6f581a37d39564c6e7b998d6a2775adb4b937aa33e60b8aa99475157c2d"}, - {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bd8a4e7920df5f6f60d6034af31094fe756210efc75c58455735259e201385a6"}, - {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1f384ae252be210a32ec1ae6a460a108e004d13d5bac1324b25c9b3932171da9"}, - {file = "pyobjc_framework_GameController-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f7293f4c13ac372f9234d587e5370aac16de562b01c5dcd6e561564adb80211f"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-gamekit" -version = "10.0" -description = "Wrappers for the framework GameKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-GameKit-10.0.tar.gz", hash = "sha256:6febacef9b003b58eeb6ca936cd83825bd22fe55475b965e0deb29b48d5912c5"}, - {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cee6d712b20ef17bea9a92681635e92628ecefd78965e016b1ede0ff9c15ac11"}, - {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d7f7d7a3ed81d02f2191e3d6fc8336840e672f70984b64cefb36165abac371a"}, - {file = "pyobjc_framework_GameKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:53859c370583322acfc9ba03b4b0ba258541836eb16420e8de44ab185caba8de"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-gameplaykit" -version = "10.0" -description = "Wrappers for the framework GameplayKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-GameplayKit-10.0.tar.gz", hash = "sha256:7e5cf3197a53344638a1957e1827cd86018cf7549a6da73193346cd8c40b1d52"}, - {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ee4495804fbb6b1aaef1be5b2dcafb676aabfe9bbdcce319484b4e5e2e9d3526"}, - {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7fad056f82b75700139d2479e56a1bdd1e2cabb2367783321b31f4abe240084a"}, - {file = "pyobjc_framework_GameplayKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ea527d8b7ee32f5cc9864afb172bb70bf0a1a02bd29d9d57d9f0278bac56aa0e"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-SpriteKit = ">=10.0" - -[[package]] -name = "pyobjc-framework-healthkit" -version = "10.0" -description = "Wrappers for the framework HealthKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-HealthKit-10.0.tar.gz", hash = "sha256:0abe3e003927998728db217d2a023f59d9e8f52072e81cc01469888731b7ebf5"}, - {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:02e92b6f875bb707516f957d33e94a4ef98b915e2e628356d77d2cf8edbcd4c6"}, - {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f24e683081c09050667b8d2410ef6ba06c6c314e2d3e42f9d947df87663ff9ef"}, - {file = "pyobjc_framework_HealthKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:888530d05ec6954fb5e6993c8f5089889baabda4527aafbbcca7c7d9c8705f0c"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-imagecapturecore" -version = "10.0" -description = "Wrappers for the framework ImageCaptureCore on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ImageCaptureCore-10.0.tar.gz", hash = "sha256:9660faa140806dd0f2c50c39062863c23188c6b9596e2946234dd3c35882d3c7"}, - {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3be85524a36f83e753898f93529145b6299760af5891521e4370f09944813942"}, - {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43d9fc0dc3f78aac627668aba6627888e95f034b3422a30f3727a0027222fec3"}, - {file = "pyobjc_framework_ImageCaptureCore-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3f0790981bf67416d02004cf83f0f68e8edda4aba48933596317e8653a173403"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-inputmethodkit" -version = "10.0" -description = "Wrappers for the framework InputMethodKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-InputMethodKit-10.0.tar.gz", hash = "sha256:dc2f10752ab62e4c7b2306938d617d83bef6d52752862a0998ed57db472e36ae"}, - {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:895771f0a47f588f69ed930868ba48ee380ccecd7ef384ad97c4e78220e12a0a"}, - {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ab33c90206934137b093d71ea8e4b73626e337d7767c16154d4a41b502c9a2a"}, - {file = "pyobjc_framework_InputMethodKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f9d4f8025303549dbcc284bd7bb9ca6e58c06f398eb085ed9ca43e3ca65ab7fe"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-installerplugins" -version = "10.0" -description = "Wrappers for the framework InstallerPlugins on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-InstallerPlugins-10.0.tar.gz", hash = "sha256:417f51877cd2ddd95e341d7d4b5db7d152a3e9d4f6537db20758bce0f9235c3d"}, - {file = "pyobjc_framework_InstallerPlugins-10.0-py2.py3-none-any.whl", hash = "sha256:1dfee60017bdf9c2e1566dd26972a288f9f9ace878c25ab5681164b2221d1e70"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-instantmessage" -version = "10.0" -description = "Wrappers for the framework InstantMessage on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-InstantMessage-10.0.tar.gz", hash = "sha256:7b5cd6217fb0d867b03ea7c15ab55c66fe63ab0beaef63c1527e734b16780405"}, - {file = "pyobjc_framework_InstantMessage-10.0-py2.py3-none-any.whl", hash = "sha256:c53dd8ddf2b28dd87cdb67c21798b15d432d659abc633fc3c0a27433bc7a241a"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-intents" -version = "10.0" -description = "Wrappers for the framework Intents on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Intents-10.0.tar.gz", hash = "sha256:228177cd32e63b2b2c76befdb80e520c4db81be7186549753c3dc7b9f74d4a4b"}, - {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5cc9ec8240b261578cac95b97156883f1ad80ac2771ec5e2fa7fe41e112f169b"}, - {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c4fb57078f797362169f8c41218248028132e6120b98546e7d22bf6a995c640b"}, - {file = "pyobjc_framework_Intents-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aea0e15602ffac9ef237fa5bda102372918e8066630d0d4c5e919fb8f647b090"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-intentsui" -version = "10.0" -description = "Wrappers for the framework Intents on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-IntentsUI-10.0.tar.gz", hash = "sha256:27dbc84df229700c8e187ba9bfc089fe7dea63cfa20ee7e3c3f09c9f8b8c37d0"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:930a3b7bde1292a67e2f62b0bbe11778b7d0a77e29a716b6b0ee55f3270515c1"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6ad1aaa9fc424605b9800ca848d57058903ad26d1dabaef33a8339051746f1d5"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c122eee00aa5bdc471399431088c9359508988e88f57289c25d18cbd95bd190c"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28b1d6fc8e0a416f65959a7506672425cff960e152538dc7fbb7fc3f3237871f"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:829bd2b67c2d753e43ec6d8d0b3dc544f9a576cbe00cbe3264c1636e367d157d"}, - {file = "pyobjc_framework_IntentsUI-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:70335349188f82b5be762b926938fddb01ec24bece963690b6ed6ba50bf480c4"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Intents = ">=10.0" - -[[package]] -name = "pyobjc-framework-iobluetooth" -version = "10.0" -description = "Wrappers for the framework IOBluetooth on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-IOBluetooth-10.0.tar.gz", hash = "sha256:5e6ddcdb8132124fa18c2eb0d0dab9b51e32be14e7ab7a2df12daee3940ec431"}, - {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c0dd178608ad97e9c981992f6d9396c2dc05844d24e25095a68aa28d1013f10f"}, - {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f73913e8700a1106da8b566160cf1ec5ba7bd69b0983772cc8ca1aa7dc450fa0"}, - {file = "pyobjc_framework_IOBluetooth-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c3645fb7ed7425640eeca0a8e9bb4f1cee337bfa6e9b4b8db3b199b8611b87f6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-iobluetoothui" -version = "10.0" -description = "Wrappers for the framework IOBluetoothUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-IOBluetoothUI-10.0.tar.gz", hash = "sha256:5cd1e6fb2100020c90af6cfcfdea5089634469d2b29cdba9c749791943274bfd"}, - {file = "pyobjc_framework_IOBluetoothUI-10.0-py2.py3-none-any.whl", hash = "sha256:d8e15a2eb39f9d76613fb6ea241ef5c4bd94ae2f21e0fc15661ae44090bea43f"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-IOBluetooth = ">=10.0" - -[[package]] -name = "pyobjc-framework-iosurface" -version = "10.0" -description = "Wrappers for the framework IOSurface on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-IOSurface-10.0.tar.gz", hash = "sha256:c233b39e4f5f000e0f9014feb9ec54d36d3a11675a6bcfc8d05d058be965940f"}, - {file = "pyobjc_framework_IOSurface-10.0-py2.py3-none-any.whl", hash = "sha256:a3df57071d833c58ca019bf880a54c92aaeb11accc006a1fb4eb7f215cf8a1a1"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-ituneslibrary" -version = "10.0" -description = "Wrappers for the framework iTunesLibrary on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-iTunesLibrary-10.0.tar.gz", hash = "sha256:3891793569bfe5a2dcfbe075dbd9a92b0937ebc47e233d78a2f65ca6bc92d13b"}, - {file = "pyobjc_framework_iTunesLibrary-10.0-py2.py3-none-any.whl", hash = "sha256:2d3d8457f9ba6bf415535263dee6973e468f140b04b3cf436481551a25c8f07f"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-kernelmanagement" -version = "10.0" -description = "Wrappers for the framework KernelManagement on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-KernelManagement-10.0.tar.gz", hash = "sha256:52b9546ed192dd9390351fd3c530e658122348c9b6f033f94e5737ce760f9bb2"}, - {file = "pyobjc_framework_KernelManagement-10.0-py2.py3-none-any.whl", hash = "sha256:d3573fb51b0132b6814a0fd56a7fb7d648fd627b459ea3157c3d778a5ea4cdbd"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-latentsemanticmapping" -version = "10.0" -description = "Wrappers for the framework LatentSemanticMapping on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-LatentSemanticMapping-10.0.tar.gz", hash = "sha256:ad74bb661109cca52543fa9fb5747c6dc3ad352d74771db6c18312b6468098e9"}, - {file = "pyobjc_framework_LatentSemanticMapping-10.0-py2.py3-none-any.whl", hash = "sha256:01dc811aad11914c1e01daa018ef1833da144095f42ca2dfe810e4768a540a86"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-launchservices" -version = "10.0" -description = "Wrappers for the framework LaunchServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-LaunchServices-10.0.tar.gz", hash = "sha256:0fb7e8d17db9c6a9c8d9333c88703734ef4325c0d36a319183ac3febccef8a9c"}, - {file = "pyobjc_framework_LaunchServices-10.0-py2.py3-none-any.whl", hash = "sha256:f86c70574c7d7c9586fd1908e15fff9df297ab285d7067759337c8e03955427c"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-CoreServices = ">=10.0" - -[[package]] -name = "pyobjc-framework-libdispatch" -version = "10.0" -description = "Wrappers for libdispatch on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-libdispatch-10.0.tar.gz", hash = "sha256:228adf364c895d2a0e8b08bd06f7a23cfbd8e82e9ea6cfdba73bdee0651a4e1f"}, - {file = "pyobjc_framework_libdispatch-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:67fe10a671117fe7e8c35b7eaf8914084fbd0c64f3d635a1147782e3408dbc40"}, - {file = "pyobjc_framework_libdispatch-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:386d53ffd2389c2494a806e3bad2d709ef5d597d1500cb643a817464c20ab8f8"}, - {file = "pyobjc_framework_libdispatch-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d2fbd247ebac8fa57bb0d7a2c4e769118c995bfd81bfc7f189a8ebe297399776"}, - {file = "pyobjc_framework_libdispatch-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:66dc959837b898bdb83a85ed34c2c368d0d38aaed9883c3769d4d1ca1aad23d7"}, - {file = "pyobjc_framework_libdispatch-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4a1e13172617916b894246b03579814f4e8151f2600403f4a799e4d4c7a032e"}, - {file = "pyobjc_framework_libdispatch-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a55a33fc71e385ff7a8c9f1d29276f44dc0f7ff5b0597d2fd769620438058152"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" - -[[package]] -name = "pyobjc-framework-libxpc" -version = "10.0" -description = "Wrappers for xpc on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-libxpc-10.0.tar.gz", hash = "sha256:ece6fc3158f61c3f33a5ed0d767f2aeb64e4575f367716f3f1642cb80221b02c"}, - {file = "pyobjc_framework_libxpc-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:029157c4af899a835122443d299e2f04030a5c801cd34ab8f5724033ff0e88e5"}, - {file = "pyobjc_framework_libxpc-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d2a3c98da602f90bbb0ed0da49193381e439e0716b747b6ecb2b0b07951d0de4"}, - {file = "pyobjc_framework_libxpc-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:918e7defb445ac089736714b2c30665ea566b51fc6dae5c555751f52cced9399"}, - {file = "pyobjc_framework_libxpc-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fd6e1ce4e503a45611a9f6fc22b189fa5cc4db0aa779dc09be5e7f321bdd894e"}, - {file = "pyobjc_framework_libxpc-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:862896fb2c4e8c706196ed5f9a8ca8fe88b6bf73a92cc8bc0ec6e00449d6cd20"}, - {file = "pyobjc_framework_libxpc-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d66712e657d3217ef5c8c9181e706ee21370d425ec99aa091c44b92d43dfa341"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" - -[[package]] -name = "pyobjc-framework-linkpresentation" -version = "10.0" -description = "Wrappers for the framework LinkPresentation on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-LinkPresentation-10.0.tar.gz", hash = "sha256:e48af9dc9a1a33313c85a11d667fcf00461638e8778f8f99ce6b2e967a0a8579"}, - {file = "pyobjc_framework_LinkPresentation-10.0-py2.py3-none-any.whl", hash = "sha256:a3de92916daa214da87afe402feef42536e3896b6ed392e040296d01ddd927f7"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-localauthentication" -version = "10.0" -description = "Wrappers for the framework LocalAuthentication on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-LocalAuthentication-10.0.tar.gz", hash = "sha256:c7ca39512babcd08464b12586908d895efe3477289325cd12ab14768a194ed16"}, - {file = "pyobjc_framework_LocalAuthentication-10.0-py2.py3-none-any.whl", hash = "sha256:6d55c6df7a6337903b3a0c61e48c6e1fe7059005024885244ff8c937bf570aae"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Security = ">=10.0" - -[[package]] -name = "pyobjc-framework-localauthenticationembeddedui" -version = "10.0" -description = "Wrappers for the framework LocalAuthenticationEmbeddedUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.0.tar.gz", hash = "sha256:dd3e53030a2d71c50f5f9dd5e2e7082672ff741a9adfa3da7efe3c9a7691a86a"}, - {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.0-py2.py3-none-any.whl", hash = "sha256:136725e321929fd840905751adf158b4bba561951984ec75a4e534ef0be76c30"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-LocalAuthentication = ">=10.0" - -[[package]] -name = "pyobjc-framework-mailkit" -version = "10.0" -description = "Wrappers for the framework MailKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MailKit-10.0.tar.gz", hash = "sha256:2611649443f3307c8fbfd78d36276fd854373c0dc4516928d3bc51419b34852e"}, - {file = "pyobjc_framework_MailKit-10.0-py2.py3-none-any.whl", hash = "sha256:b95f61745c01d41b2548ff6b6d0efc1476b718874a115fe0f17c06b5b3a1d300"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-mapkit" -version = "10.0" -description = "Wrappers for the framework MapKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MapKit-10.0.tar.gz", hash = "sha256:35a4ac2a9ae3b13699290a6fb592d1914498e4de1b90a2b60394069cd0a02c5b"}, - {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:af80e9f2debe0dfd0f614fc797b4238cc298eb753704c747667f400dc9f57169"}, - {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cded4f7e60ad9595d7cc665d5738c8fcd5eda41d84475b67a3abc0cd493ab808"}, - {file = "pyobjc_framework_MapKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5d33b49430d2d7229121916c57875218c0943caba6faae9caad948839657768e"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreLocation = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-mediaaccessibility" -version = "10.0" -description = "Wrappers for the framework MediaAccessibility on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MediaAccessibility-10.0.tar.gz", hash = "sha256:0f60ed2ac0bdd4c01457619408230d61a0547b16a19ce0d6770a8f4fa7379fbe"}, - {file = "pyobjc_framework_MediaAccessibility-10.0-py2.py3-none-any.whl", hash = "sha256:20b7d0dfd0680e6b19de9683025e35d2cdbdaa76ddb66ae79fea9c0deb5ac3b5"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-medialibrary" -version = "10.0" -description = "Wrappers for the framework MediaLibrary on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MediaLibrary-10.0.tar.gz", hash = "sha256:5a4909257d6c67245b4687327996a4a3f8c038c31e6ea2ea7cc916fd8e44bed5"}, - {file = "pyobjc_framework_MediaLibrary-10.0-py2.py3-none-any.whl", hash = "sha256:e7d0f3353a954abc801bcdb7c02713f38d76835eb8ff4912fab5d005b95d5459"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-mediaplayer" -version = "10.0" -description = "Wrappers for the framework MediaPlayer on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MediaPlayer-10.0.tar.gz", hash = "sha256:e3c66443fd13e5ddede01f15fdd9b635492edc239c4cd88fa540b866a76c1602"}, - {file = "pyobjc_framework_MediaPlayer-10.0-py2.py3-none-any.whl", hash = "sha256:19afc844bc204e008eac5f59699b93bae84e6235fa030d72651200414b019fc2"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-AVFoundation = ">=10.0" - -[[package]] -name = "pyobjc-framework-mediatoolbox" -version = "10.0" -description = "Wrappers for the framework MediaToolbox on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MediaToolbox-10.0.tar.gz", hash = "sha256:8bd24724b26a0bdcdec7e078261d8777018c9ec275b553dd8e1372afc60778d1"}, - {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:73bb05d629914f1eca277e1e7aa9ca429408121a49874259f190ce7e37dbf646"}, - {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:65475deb4a9da96504df4ad677ff470afb0f50128bd4a140788db923b6638b12"}, - {file = "pyobjc_framework_MediaToolbox-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:68c6340e33f60a23acc375935abad73b876705ad460cf7f09be0bc000d219d15"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-metal" -version = "10.0" -description = "Wrappers for the framework Metal on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Metal-10.0.tar.gz", hash = "sha256:2e50b1fc34b11654a0ecb0d6ea98f691dc5794c53e18cb70f71d6460f68dbbf3"}, - {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0336f14c65a7e064d283b785487522c52f894d23348b1cc49114a919bb0db32c"}, - {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9eade923110db0db7a57c11761c8bac0c780fb786493ca7f504261c749184dfc"}, - {file = "pyobjc_framework_Metal-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:33c35ee2bd8062786c103149949713eb6d7d90618d69a2acb9c0b732824cad70"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-metalfx" -version = "10.0" -description = "Wrappers for the framework MetalFX on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MetalFX-10.0.tar.gz", hash = "sha256:79edcf90b59276023a143c637d37a1be563a921f5f73f526bb2d970fc08949a3"}, - {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4ff51b35c29573a5b93b76334d165030055e0cfbf0a8d0b0839f510ca2d9d1ff"}, - {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eac982bd2e8316e4d6b65d9bac2d62365db65f2f9bf4be4bf1a8111b7b0a08e3"}, - {file = "pyobjc_framework_MetalFX-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:376f78e3edcd67f64ff6c2f682e9e94cdbcddf6bf27a32c73f1b8aefb49fc748"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Metal = ">=10.0" - -[[package]] -name = "pyobjc-framework-metalkit" -version = "10.0" -description = "Wrappers for the framework MetalKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MetalKit-10.0.tar.gz", hash = "sha256:a29951ae30dae738bb9d1bab5bcc6fa1150815f671923b6e6705a10d7bab2f8c"}, - {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:31f15e033abaad2a6212bafc39e2f5d6e7d6bc7a6c93c6a24fc64a4b2db01fe9"}, - {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8cf2cc8f7fa79bb919c4b6b864edce5e1cd789a88af07ad8846dec985808940d"}, - {file = "pyobjc_framework_MetalKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d13c0a8ae8e65b87c56ea63d84a26f6cb06dafe0f34beabcf86b930c39088748"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Metal = ">=10.0" - -[[package]] -name = "pyobjc-framework-metalperformanceshaders" -version = "10.0" -description = "Wrappers for the framework MetalPerformanceShaders on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MetalPerformanceShaders-10.0.tar.gz", hash = "sha256:eeb3d9e5b44db876ebc93dd3d492dbc4a52b6fee96558d13a66fb283b7757ee4"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1094595da9dd3fbcbaff278538ad88871347d6155fe84d1fe2f49737831bb6d6"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4dbc6e8d902ca9e4ceb3699182006495f9e3da84b1efdbc3821e1ba4c23cf808"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fa91c8e325c592e2a3db5940109efca9d874a4c19dd238047a4f7bd327015263"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Metal = ">=10.0" - -[[package]] -name = "pyobjc-framework-metalperformanceshadersgraph" -version = "10.0" -description = "Wrappers for the framework MetalPerformanceShadersGraph on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.0.tar.gz", hash = "sha256:f9b6be9ef300b82a4d228107122fc153c2763c2a1b3c7e311ded52c565bbcf58"}, - {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.0-py2.py3-none-any.whl", hash = "sha256:824f9721eb724de171c9e4515931a59daacbc743890eef5fe00aa70ad1927f30"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-MetalPerformanceShaders = ">=10.0" - -[[package]] -name = "pyobjc-framework-metrickit" -version = "10.0" -description = "Wrappers for the framework MetricKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MetricKit-10.0.tar.gz", hash = "sha256:15f4d384f95ab3656ae183d2fa15e1c59e91b6a5566a4edd105684a70c79401b"}, - {file = "pyobjc_framework_MetricKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:660bfe9654cb21ac450d3be4d4cbc568e503d4d1b04a97c4c90240be632ec1b9"}, - {file = "pyobjc_framework_MetricKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1f83c96d09a6ef03b39da0df5e21235b32145c726455a7e9be40ec5b2d35b5ba"}, - {file = "pyobjc_framework_MetricKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:526ebe3c0d7a4612608668fdfbcb57cdeb9b5324a9e8b481246040013ae5ce6f"}, - {file = "pyobjc_framework_MetricKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:542745e902eeda8cdcb5ca2f0517ae7832142f53a110ad59bd7c8189f31d65d9"}, - {file = "pyobjc_framework_MetricKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b694b1ed197015f14e7f6c35abc855fe790fbbbe17b16ba224c727e185279fc7"}, - {file = "pyobjc_framework_MetricKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5ff9c29a6dda4a19dbdf40e513f06b00bb8f032d2b98655b030fc3a35e71c2d7"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-mlcompute" -version = "10.0" -description = "Wrappers for the framework MLCompute on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MLCompute-10.0.tar.gz", hash = "sha256:1ffbeeb3f4850c1ffada9b253afd2d4fe4448e0e52861701e1c5ab6a56961526"}, - {file = "pyobjc_framework_MLCompute-10.0-py2.py3-none-any.whl", hash = "sha256:8ba3eba33549a22acfdf589818ede36f65031425c6968eb193a9dad143d3cc64"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-modelio" -version = "10.0" -description = "Wrappers for the framework ModelIO on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ModelIO-10.0.tar.gz", hash = "sha256:1629db056d3bebdd79c582637e48c9da5c5aa76a073439dcb3820e00e3f75227"}, - {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:36510ff0567310da48bc5cdd8b8f63e2bf158eb29b598d7b40e26189546c984e"}, - {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91aa11bc6005b98c73541eebbdb69caf71b5ef4a9d1da032a58ef90b043e4b80"}, - {file = "pyobjc_framework_ModelIO-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:91a80adda076760390ea00cd39d861384455f794673924a923fa7957e4225c52"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-multipeerconnectivity" -version = "10.0" -description = "Wrappers for the framework MultipeerConnectivity on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-MultipeerConnectivity-10.0.tar.gz", hash = "sha256:c2641b9c6d2eb2dccd3c69417f5291bd141a23afc3835f7a7822a8cfa45a1153"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:71cbe835d30a81ec7fcdd3706344dcc5351af4eaa9cf17dada28b88023549953"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:feeb828c8005bd9a941ec437ad1c4dc67843a110d9f80e33c6426b0178faef8e"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e3ef039148b7215c3886636a65baad7dbf1083f1c6dc09c782632085f5efeeec"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-naturallanguage" -version = "10.0" -description = "Wrappers for the framework NaturalLanguage on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-NaturalLanguage-10.0.tar.gz", hash = "sha256:00b055806a0fe096c8d9e2af0f610951ef0fc892d2f496301f2bda794bca781a"}, - {file = "pyobjc_framework_NaturalLanguage-10.0-py2.py3-none-any.whl", hash = "sha256:8924630ff802486dd16a426d75fddfc7e6cd917fecd5ff3902b84107051130cb"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-netfs" -version = "10.0" -description = "Wrappers for the framework NetFS on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-NetFS-10.0.tar.gz", hash = "sha256:31becccbbff5cb4336b736e97f61f92d5df0c40b5e3be7d4e5964527e1b1e3b4"}, - {file = "pyobjc_framework_NetFS-10.0-py2.py3-none-any.whl", hash = "sha256:1ad29eb81bd4774259377a716fa3dd8b3e105e5f8021e295f640a8e036847cc0"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-network" -version = "10.0" -description = "Wrappers for the framework Network on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Network-10.0.tar.gz", hash = "sha256:4e92b1271f999dea0297a844cc101b5c0c908168428d77caab054d25ca8e4e69"}, - {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2402ddcac58735333420a4e467eb415df59f54cf893cd4401f81cce64449dd77"}, - {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:93327d81b58294065f6d2f6db746e992c218cab94b992f5c778dd15a4ecc6f51"}, - {file = "pyobjc_framework_Network-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:53fa04ba5e0ecdc40dd0139074740d4bc3459c829ef550b89141e4cc71562c5a"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-networkextension" -version = "10.0" -description = "Wrappers for the framework NetworkExtension on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-NetworkExtension-10.0.tar.gz", hash = "sha256:cd17420c9763c240343fcfedaddff11db8c0f4f1b54c060c24d6f414234d6b5d"}, - {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fa42c5e57247827647fcbc63341f38799403dba28c5e1ebc68fae57b84727f10"}, - {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:301bb43a39069af6e28dfd73de4dee48bd87e0c0473d605b58ab92ce7d1cface"}, - {file = "pyobjc_framework_NetworkExtension-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:325b67c507d69f0d97ad5e612bea68426f5523fae2e8f39792a8c46a88d2067d"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-notificationcenter" -version = "10.0" -description = "Wrappers for the framework NotificationCenter on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-NotificationCenter-10.0.tar.gz", hash = "sha256:64f85eaea8e8811afbfa265e56d3d07ab8b0e57a4a7b5b33a9f72a50a3ede83b"}, - {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d06c29f7fd1f0c8b0f7867c80475dfb4d8df491cb92a48932befe47810b6c440"}, - {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:95960b70654160083e93cb7c47663a045a68b00ce457e408046062c705b2056e"}, - {file = "pyobjc_framework_NotificationCenter-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1b9534f6a07a6cfeb1a5b5585178a58fb544e2f0f58935afec5ba668b7567170"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-opendirectory" -version = "10.0" -description = "Wrappers for the framework OpenDirectory on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-OpenDirectory-10.0.tar.gz", hash = "sha256:94e0313910b343a1e9738a7a006a1651f4d2995125f743576535ecca9cbb141f"}, - {file = "pyobjc_framework_OpenDirectory-10.0-py2.py3-none-any.whl", hash = "sha256:a58211a1cecb4e1d52377dfe60eecdd4579a3dfc44ff50b92cc3bb123a413189"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-osakit" -version = "10.0" -description = "Wrappers for the framework OSAKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-OSAKit-10.0.tar.gz", hash = "sha256:eaf442ca46219c19f14d3f12612a37325ab7d2a9b5f67eef64a289877500ea75"}, - {file = "pyobjc_framework_OSAKit-10.0-py2.py3-none-any.whl", hash = "sha256:b87bb4ac330da116c33ffefa2da0b7946ac8a840150da848cafd7fff19f7e674"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-oslog" -version = "10.0" -description = "Wrappers for the framework OSLog on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-OSLog-10.0.tar.gz", hash = "sha256:3a169df2fe5fdbd6ca8db28e5c51d89f8759b369636ea7cc2672cde11f4a09fb"}, - {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1c2ac445b647edf4e2e925efc4d2471f9a6952dcb2d5929f1e570946941f622d"}, - {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05eaf07e2d4b5c51a9859d0f5e170f51975268ee14782fa626c51b19740d0e68"}, - {file = "pyobjc_framework_OSLog-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:432861f5bd5ad45b119c1327cb17d1feb5e2a5700d753a79d0abdc49a2123496"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreMedia = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-passkit" -version = "10.0" -description = "Wrappers for the framework PassKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PassKit-10.0.tar.gz", hash = "sha256:da2c5b12c341e2e826b5345798854219966c7bef4bfdb8df306816877df22abb"}, - {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bb315a01d67865f06c751ca4f590c7340c27847a51ebdb645bd31dc48a07f478"}, - {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c7c4b12957ac615759e385d0baf02e82f5218049369e60a3e74cbd97f7730a0"}, - {file = "pyobjc_framework_PassKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:78d82720f05df6447579495de6e1cca17a18ce203b670fb67b8d8b7317fe2b46"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-pencilkit" -version = "10.0" -description = "Wrappers for the framework PencilKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PencilKit-10.0.tar.gz", hash = "sha256:68f19a4d9ebab2d002667dce8820bf200d36cc8e1a2351a47f44f3e1f99bb194"}, - {file = "pyobjc_framework_PencilKit-10.0-py2.py3-none-any.whl", hash = "sha256:162bd4797749247e34414ddfb91336b97ff8c31fa79abe27a2885188cbe3fed8"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-phase" -version = "10.0" -description = "Wrappers for the framework PHASE on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PHASE-10.0.tar.gz", hash = "sha256:9141baca910edc8935a5f22b82444e3b5a001c9275562752f13adce034529377"}, - {file = "pyobjc_framework_PHASE-10.0-py2.py3-none-any.whl", hash = "sha256:d16c38d58065d22c9b688f0fa753fc0a32d9a24bcda23830dab7fd34105c5432"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-AVFoundation = ">=10.0" - -[[package]] -name = "pyobjc-framework-photos" -version = "10.0" -description = "Wrappers for the framework Photos on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Photos-10.0.tar.gz", hash = "sha256:b284e2ede913081570f862fde99fe22c5f254a36b53105fedad4ce66d4dd93af"}, - {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5809848be530e5f49fbfbe5c6de6255ebe9127da94eab637a8c4f68cef263c80"}, - {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2058ced6eccf6ffef45f67175d8486d84b07892056338a71aca609f961b807db"}, - {file = "pyobjc_framework_Photos-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:567bbf0287700a32dd3baa0d94da63dd4eece13f622e12ee011a269704880d03"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-photosui" -version = "10.0" -description = "Wrappers for the framework PhotosUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PhotosUI-10.0.tar.gz", hash = "sha256:aa521325e7c86d1c739306cd5a14f3f7f69f5db654dc8884f1630001ad72aa7c"}, - {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a9234c231d6e970fabf1b609933e362bade59d6fd40ebfba0b0bfefec7603308"}, - {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6812342b1588e4675afacff5e6af1376e1569784081699e7c2e865c206f78b27"}, - {file = "pyobjc_framework_PhotosUI-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:794972421c21f541898a05fb3ffc7efc027c15b5f3b19af9cafd424cb5c29613"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-preferencepanes" -version = "10.0" -description = "Wrappers for the framework PreferencePanes on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PreferencePanes-10.0.tar.gz", hash = "sha256:4e25e9f192252e4d76e9c68fbeae6a7bf832f0d3ab8f18561c65689f344b70c8"}, - {file = "pyobjc_framework_PreferencePanes-10.0-py2.py3-none-any.whl", hash = "sha256:992765158f0cae73957178109338bde94bbac5c91ca6e1ada884c3dc43868e18"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-pubsub" -version = "10.0" -description = "Wrappers for the framework PubSub on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PubSub-10.0.tar.gz", hash = "sha256:b5632265d86bb114444ce56923633c45be930d3ff224fc76390d2711742df0f8"}, - {file = "pyobjc_framework_PubSub-10.0-py2.py3-none-any.whl", hash = "sha256:7d04a4594c232650f4caf3dbb7d3e6e9c7ec1e87847c147bb4f1c5d412efe5ce"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-pushkit" -version = "10.0" -description = "Wrappers for the framework PushKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-PushKit-10.0.tar.gz", hash = "sha256:54e0b9f3374ba26bdd2c08993080862e7dfc5ccd5c74ad2d5c1c4f9c4c0caa32"}, - {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8fa158ef13bb6a6e0d5cbb25b60cc7f82ed8f048fccedbe6f38df5d27ae8ff26"}, - {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f50e93124ed0df1c9d3c83f24d877bc286c8a3005fc59b85864c4675cfe078a8"}, - {file = "pyobjc_framework_PushKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:014a293a5d11f4213c222fb10284094eed85a37ce8dc5543a5b5e68ed3fb628d"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-quartz" -version = "10.0" -description = "Wrappers for the Quartz frameworks on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Quartz-10.0.tar.gz", hash = "sha256:ff7c938d9c8adff87d577d63e58f9be6e4bc75274384715fa7a20032a1ce8b0e"}, - {file = "pyobjc_framework_Quartz-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f06be24fdd2112c9f5b96ede54ec48ad7623e107b85ebbd5b4155d0b1da4d45f"}, - {file = "pyobjc_framework_Quartz-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:52848a5e283a508c6895a73cb0c950bd4dca9b1186b70dd73ddc8f436d64fd42"}, - {file = "pyobjc_framework_Quartz-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0cc89890de411a341e90d2c4148831b6d241fca66e734b5470d27869c04e33c"}, - {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc8d6edcdb0bb3dab4dbe6e6a6d420c28aa0caca53715a3e49d7f299601a723f"}, - {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4b03fade2c4aff2682cd5eae8469f3f15e089c7dd09641e24e5b54d015edfae"}, - {file = "pyobjc_framework_Quartz-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6975be7f776ad4c3a41655b90d67e45a9c7fa2d715b189d8599e8d227f790280"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-quicklookthumbnailing" -version = "10.0" -description = "Wrappers for the framework QuickLookThumbnailing on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-QuickLookThumbnailing-10.0.tar.gz", hash = "sha256:13858592b6cd03c26e0020de47721d74ba992f44e9030ef70f47a99d7660b71c"}, - {file = "pyobjc_framework_QuickLookThumbnailing-10.0-py2.py3-none-any.whl", hash = "sha256:7572750f84477bd9ef4bd6d1fbb88dd3fb3b39567b004307b347b97de861163a"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-replaykit" -version = "10.0" -description = "Wrappers for the framework ReplayKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ReplayKit-10.0.tar.gz", hash = "sha256:83a95c5c95d1a1af731fc9fba71e194d13ceded46799422908d8f95376a4a5ac"}, - {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:dea16e14c493a6dc976a4d762fd09b5713dac70f49390df07ac0457dc4fdc759"}, - {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1b87a5400c05eba3734bfdd5110a9ef186b98aae0c36a1de3a6dacf3802f5c4f"}, - {file = "pyobjc_framework_ReplayKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e2edfcdf3140bf111e21471fbfdc8fc105e3475c342b1ecd240a8d3e8b8ac368"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-safariservices" -version = "10.0" -description = "Wrappers for the framework SafariServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SafariServices-10.0.tar.gz", hash = "sha256:7f7a477b77b17161e22bdddc8a16fb3000eeccc430a730cb144e1a84a5f6e4e3"}, - {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:60edbbb667e26654a197f3e72528094f63a1aafb20f73bbd4b182e988275edd2"}, - {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed51d96673f579e3f4379e1130f3e2cde1c427f916e3172332acd948314f3b7f"}, - {file = "pyobjc_framework_SafariServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:91e336dce2622fdf87d5da8de4a43746ca13f3e85410102da067e1bf0dc4eecb"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-safetykit" -version = "10.0" -description = "Wrappers for the framework SafetyKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SafetyKit-10.0.tar.gz", hash = "sha256:8f6408bdd4ba749d1840700e1a7f1719a5068ae15a2dfdab9d533333b2adda20"}, - {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:18d26db21af00838d907527ec1edfcd59217561cc86ed2cfa4fad4788f58ecf7"}, - {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:208285c0460a0ed9459c2c0c636fee941a3f2644d07832533140f22de3cc9f11"}, - {file = "pyobjc_framework_SafetyKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b94d9f17bcaef877dad6024b6990265a9e6d9152bd7f734539bf5da9e95e2a91"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-scenekit" -version = "10.0" -description = "Wrappers for the framework SceneKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SceneKit-10.0.tar.gz", hash = "sha256:205a6706ffe271f3961255f1c55ab60b47d797c7a4154a5c9cc0a3b263c433d6"}, - {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:aabc098a6870b34af54be2aaf0010f1050d3a30e8e86a478b48f7cc2046a5bee"}, - {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b4fd50030066bf71e24c793a3d8200b75051f9b6d6daa5b10eb92663e08f0b64"}, - {file = "pyobjc_framework_SceneKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:326a588c89801f96fc10a7629446336f385f5615d03c0cce10bb18824ac5c021"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-screencapturekit" -version = "10.0" -description = "Wrappers for the framework ScreenCaptureKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ScreenCaptureKit-10.0.tar.gz", hash = "sha256:d6abaccf2620d01af9bcb408fc47713f813839a35899caea8fa0a96a147597b9"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4064835492904889290d450b5f4f7b8147235620be0f2b8c455a8ca03e532779"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3b80a295b2545b0da492f4f5b8df5b62dc3e1b69141fe1b8982901839635d6e1"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d963acbc24f1d2e0bcc3d0a4d5515dc680259ef7c3b6e80159c82a05774c2862"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c9aa29cb9628d8d1afdd7c8d650ccf90c228aabded792058ca82ee72682c44f"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:f69c623e1e11068c1af01c7f2e359941e1287b7e840b4cd93a9de2eddcd608aa"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eefc981b906e80b6b51694472d9b573f547d6633c7e9e2f160ad464fbb2b36ab"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-CoreMedia = ">=10.0" - -[[package]] -name = "pyobjc-framework-screensaver" -version = "10.0" -description = "Wrappers for the framework ScreenSaver on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ScreenSaver-10.0.tar.gz", hash = "sha256:84b658c81469305f29aaad61ac29aaad4db27ef9e9b8a13568ddb3a6bfbb902d"}, - {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d6f0e4a278349997ed1b36ae27ebbbeb18d4a8e766f68c65749e861e4388a5f5"}, - {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cd0d3104140be9ef10becae43d222ff0904e4cb655cbe83441f51898e20164e0"}, - {file = "pyobjc_framework_ScreenSaver-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ad0826d5cb11e2615c66e1e0576a5a23f35b6b83c05625efca5ac4ce31e06b33"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-screentime" -version = "10.0" -description = "Wrappers for the framework ScreenTime on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ScreenTime-10.0.tar.gz", hash = "sha256:77d927c7aec657902ef5bdc1cb4be44bc3cd3d1ea51c70f66b8b891b9f97e8ff"}, - {file = "pyobjc_framework_ScreenTime-10.0-py2.py3-none-any.whl", hash = "sha256:800cbb0f5e1bc2ef04e1328e6263b5ec7585538e16989265a3fa8c33957744ed"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-scriptingbridge" -version = "10.0" -description = "Wrappers for the framework ScriptingBridge on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ScriptingBridge-10.0.tar.gz", hash = "sha256:dc8ee394c84caabef9512eaf784ba91459b9560556da5fd5762aa7a6ef5e4612"}, - {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cc1d6d40280b183b34ca24b92d28dbe9ad14e351a53e60262209e44b7da1c98c"}, - {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d3a236e10ef6cdd6a57954950cde0dd4833e0f041b8807da2e14e44645b256bb"}, - {file = "pyobjc_framework_ScriptingBridge-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:632cbf4fd887e3cfc17c7b12ff68879e75f3930d0c54600ab72b41ed2d828901"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-searchkit" -version = "10.0" -description = "Wrappers for the framework SearchKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SearchKit-10.0.tar.gz", hash = "sha256:953ade5f21aed098db366673885cd2e8a3e94574e0fb6e0ccebb063ffc8559ed"}, - {file = "pyobjc_framework_SearchKit-10.0-py2.py3-none-any.whl", hash = "sha256:21921a722f3f1e3868ae38c4582c6d51bad35b13290e90cca62802a477d7f8d1"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-CoreServices = ">=10.0" - -[[package]] -name = "pyobjc-framework-security" -version = "10.0" -description = "Wrappers for the framework Security on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Security-10.0.tar.gz", hash = "sha256:89837b93aaae053d80430da6a3dbd6430ca9d889aa43c3d53ed4ce81afa99462"}, - {file = "pyobjc_framework_Security-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:257abf4821df4a9824f970df7b27acd05c8b7a544c424ca29c63c1bf963b0011"}, - {file = "pyobjc_framework_Security-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e4917cfeca742b790a8f5053b39051be83a132e85f5ad9af2cd3a31527960143"}, - {file = "pyobjc_framework_Security-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a7d9cae84018bcb6ff2967a9cd158b2298e0c5fd95cf6deef12b4b44464e1797"}, - {file = "pyobjc_framework_Security-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:71522a2adc3b30c28508156a510b5b8796d5f6ad003bd35b4d86c121bf4f7957"}, - {file = "pyobjc_framework_Security-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:be52243da7a143e898b8e726201140f4be0bd5803b90e56b22d2cc6ad1edde0f"}, - {file = "pyobjc_framework_Security-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:ef948582c47593895e27be1a1401d96b19a8edcbed223fa9cf3185345a2bc117"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-securityfoundation" -version = "10.0" -description = "Wrappers for the framework SecurityFoundation on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SecurityFoundation-10.0.tar.gz", hash = "sha256:9871cc1cb7e15b694c7c406d8125acbe990b28c6b15d5833df53a38906836342"}, - {file = "pyobjc_framework_SecurityFoundation-10.0-py2.py3-none-any.whl", hash = "sha256:c7c8bc25d3297eb6c4684ef0c9680b619a1966ddc0cfd33a2122a46cd7963f57"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Security = ">=10.0" - -[[package]] -name = "pyobjc-framework-securityinterface" -version = "10.0" -description = "Wrappers for the framework SecurityInterface on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SecurityInterface-10.0.tar.gz", hash = "sha256:fb3e660b7e1e2054597a87237a885ca62212c9889702bd634d34792d84fcc9ab"}, - {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:997a018d6f550ccb82e33bd33317bc586e2911ce1645533f7d16f27973d1d439"}, - {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:573d31308465ad1842352e982f7a64cfcaf9d599fe0765ce02e66d0c452a172a"}, - {file = "pyobjc_framework_SecurityInterface-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:06567ae02e1757070bdd3dd21bb0ff3b214b6fff4635d7b0b575f304b02386d4"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Security = ">=10.0" - -[[package]] -name = "pyobjc-framework-sensitivecontentanalysis" -version = "10.0" -description = "Wrappers for the framework SensitiveContentAnalysis on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SensitiveContentAnalysis-10.0.tar.gz", hash = "sha256:212ebb393b7e8a7d9eebd9025a0cc96e20edd0934e570cd57fd0a8a7e5e6b860"}, - {file = "pyobjc_framework_SensitiveContentAnalysis-10.0-py2.py3-none-any.whl", hash = "sha256:99262f5d8a049973531a44113e9157874bba274ed8541b8b778878c664472042"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-servicemanagement" -version = "10.0" -description = "Wrappers for the framework ServiceManagement on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ServiceManagement-10.0.tar.gz", hash = "sha256:0a578e879adf126b4997feca02b6aebee8fc92ef96e4f1d5d76b53860f8b14fa"}, - {file = "pyobjc_framework_ServiceManagement-10.0-py2.py3-none-any.whl", hash = "sha256:a27685c393c1c91b42c5701e0e18326b58d50f0b0c2a194190bc3078d53b5df1"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-sharedwithyou" -version = "10.0" -description = "Wrappers for the framework SharedWithYou on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SharedWithYou-10.0.tar.gz", hash = "sha256:2d19cd38d54c3c5e85488e6f6264f83638984810d9d1601916abddd0984e6b8d"}, - {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:706d0c17ad64c22da16eeb1e10a677ea29712164e7f517ac14d866148f2ba437"}, - {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:496c9bd0403e1a9896a3cf21d1ae5f1bbbeaefc94322f1063626d2c489b87b8b"}, - {file = "pyobjc_framework_SharedWithYou-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5fa3394b4cf289c798eebb6ee90295221ef2b02b6bd315ac5bd87d9b0ed8b339"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-SharedWithYouCore = ">=10.0" - -[[package]] -name = "pyobjc-framework-sharedwithyoucore" -version = "10.0" -description = "Wrappers for the framework SharedWithYouCore on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SharedWithYouCore-10.0.tar.gz", hash = "sha256:b07e79716e496270a4a84bd2645c1a1dc48b557ff3faaf268c8d5d4c79de9ede"}, - {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1e13c7b0c057b2467b9a2417066257266570ae6932032aa0eb1e796790ba85d1"}, - {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43e730bd17023c51a0895ec3678856662764eebb13c5a19e9d775fc1ee3e5c6c"}, - {file = "pyobjc_framework_SharedWithYouCore-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a029e5ba6e1123baff788888ffb49a4afd83e95320fdcf377423992415c1f037"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-shazamkit" -version = "10.0" -description = "Wrappers for the framework ShazamKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ShazamKit-10.0.tar.gz", hash = "sha256:f5a84113307bac14460abf522ed2e5fc99c5ac1816e652d2bdb437623ada3429"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:71c2a0927df93276abe299ee49d256a76ce7b32015825085dd7cc572d82cf369"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:428e55cb4115eb38e45994a9f339f7909c2f3d62c40aa37478e772e79e455639"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e8071f802b91d0312cd31cb888bb3de0388f01d7c975111c6cd80e571bd5609d"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:266fdbea9491deb29aa34f08b26a9016d9823585348d4e2714acbb5bf133e4f3"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:ce7a1b842dfe4af9e523ac5635297276810e85fc734be43d5a2ae0237b25acfa"}, - {file = "pyobjc_framework_ShazamKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9d2694a3a242844f324a5983fbb8594a7087722308b3777c7cd6d2435387cdbd"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-social" -version = "10.0" -description = "Wrappers for the framework Social on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Social-10.0.tar.gz", hash = "sha256:29c4d039b25a73d0499ae37d5eba9c30c12e68209cb85f1bdd94b78274421764"}, - {file = "pyobjc_framework_Social-10.0-py2.py3-none-any.whl", hash = "sha256:05d2cc1b62e2c1ffbe9ed8868e70fb846eb0f4d7157b87c8db77cd13bf0f2a92"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-soundanalysis" -version = "10.0" -description = "Wrappers for the framework SoundAnalysis on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SoundAnalysis-10.0.tar.gz", hash = "sha256:9a2db7edfb506aa296968abfa86f67534b1e02c726aa26c516750c04e7b21d12"}, - {file = "pyobjc_framework_SoundAnalysis-10.0-py2.py3-none-any.whl", hash = "sha256:b2de7dc4ee724fc7940a777ee50aa8b96b836aade84a408737bacf8818b9bde5"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-speech" -version = "10.0" -description = "Wrappers for the framework Speech on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Speech-10.0.tar.gz", hash = "sha256:ffcd35855246432f02ebd96e6eb97da319f3ff108d8b62266e83da9c5eec8497"}, - {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f3664cebcb74d48a131fe02bf2716d72378798ed504fad85e72661f2923a8cd9"}, - {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6755395bb80b28b2ccf4f02e7a1d850c80e5bf8e590f1359daa2b55a7ec3d108"}, - {file = "pyobjc_framework_Speech-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0ab33eecad4a053a281c6f71f9c6b70d0ad19706887cee3e30509df75cfdbe8d"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-spritekit" -version = "10.0" -description = "Wrappers for the framework SpriteKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SpriteKit-10.0.tar.gz", hash = "sha256:c9db030232e251426575674bbe61b7bdb1cfc4a587a0a1e0d1a59e704658dc30"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b4dfaa8a541f60a3c56b38029e4da154f2672cc231c70ceeb558c18af423f822"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5582ef597d381fb9113099bbd07065c565d9db966193f4807327cd09363043b4"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:71042fd8986d0a6544588b42198b8840fe9afd335a3329d4d1dfa4b4ae432327"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c83378276161c3ed043fd8fea6d2d8fcfcb74fb30dbb77a13be6bcdd9914496d"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:93c19908a3aaf1cbf68192f3f312885a2f829dee349d015162d301b379f8046a"}, - {file = "pyobjc_framework_SpriteKit-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2884623c261a3ae5f12fcad8c30c15e631e5cd86b7f16581b750b07ee31005f3"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-storekit" -version = "10.0" -description = "Wrappers for the framework StoreKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-StoreKit-10.0.tar.gz", hash = "sha256:5835de40067e2ea4374babb41da4ebc0bbe087b770c352bdababfa6871e9590a"}, - {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e6c607c76edd85444eacf81da5d1823deb5cd1c312f4544d10299f05ae99f87"}, - {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:df9186ce3ccac15050b3bb90738d9d2abf6617c793d738ac55b95908578c468e"}, - {file = "pyobjc_framework_StoreKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c235266a035b9f3ef9575cd71dda0303e85af90b166cd73466fb668e180c72da"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-symbols" -version = "10.0" -description = "Wrappers for the framework Symbols on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Symbols-10.0.tar.gz", hash = "sha256:16aa2273cb28af944de81039df86bdef04df4b3cf3c776d84d2520fb550a1b6d"}, - {file = "pyobjc_framework_Symbols-10.0-py2.py3-none-any.whl", hash = "sha256:fd1bfc2958d860aef26b15994714abcbb6b3340eda2c67df31c12df0740a661f"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-syncservices" -version = "10.0" -description = "Wrappers for the framework SyncServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SyncServices-10.0.tar.gz", hash = "sha256:3060a5b66c42a276b3a5765f7c41fe6a80491685977b0f78b67ef2e8f2325673"}, - {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:398c95d5b306eddc8534fa7411092d39f8d4aeafa68de7349e890ab7f6d8bc3c"}, - {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05cbef4425859dd372545d238cc868d53edc1265be752ebcb73a311d1a2fd9e4"}, - {file = "pyobjc_framework_SyncServices-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3a89a3b4a627fddcda323c8879e969742a99dc0c312ab4bc04c167ca3d19be5b"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreData = ">=10.0" - -[[package]] -name = "pyobjc-framework-systemconfiguration" -version = "10.0" -description = "Wrappers for the framework SystemConfiguration on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SystemConfiguration-10.0.tar.gz", hash = "sha256:f9ab1759933c77688615810f8278519158273a658f11fc3d75a1a2446fd0f774"}, - {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e64f7a0011ad4a0f86302bd243ada159dfbc25525cfd48270d230fadd24f7dfa"}, - {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:106c98eff3552611fa9bf456f162a3c578958e6c8bea3cb5cfc9478f3cc09005"}, - {file = "pyobjc_framework_SystemConfiguration-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:df000aee4b8350fa413d00370309d0626e503d2773a9882b64b521105e795d8f"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-systemextensions" -version = "10.0" -description = "Wrappers for the framework SystemExtensions on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-SystemExtensions-10.0.tar.gz", hash = "sha256:0c71c2d3db048fd55d931137402e9d0550178f65aacc6597538d4c1c9debb729"}, - {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b1908397e50d70abe618383dd4b205fd3d5e8ddd3b9b7ff5d2dd6b330530296a"}, - {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6dcb3ca8c0598e35a6f7332f4ced3b83560d10e01254f0db76beaee68c1211c8"}, - {file = "pyobjc_framework_SystemExtensions-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4967721a4ba3d8d5ea812d31f0494fe2f876a26e4eae929fcb3681e062349623"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-threadnetwork" -version = "10.0" -description = "Wrappers for the framework ThreadNetwork on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ThreadNetwork-10.0.tar.gz", hash = "sha256:8d014eacbd195367f93c24b1cf08690728f42f20b33d5f1fdc38bd6b114b1f13"}, - {file = "pyobjc_framework_ThreadNetwork-10.0-py2.py3-none-any.whl", hash = "sha256:f4f24ad1457e2a89c80f3aa5133e8015e67cbd0e2654d8f08abe0f4690eb7cb3"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-uniformtypeidentifiers" -version = "10.0" -description = "Wrappers for the framework UniformTypeIdentifiers on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-UniformTypeIdentifiers-10.0.tar.gz", hash = "sha256:60254b6d3bce2cc79fee6044ebce828a6c7715b218710e0b5cf3a896bba324ea"}, - {file = "pyobjc_framework_UniformTypeIdentifiers-10.0-py2.py3-none-any.whl", hash = "sha256:04ddee19fcac2cb3f56c69a6a70fe889515d2f03cc2fcecfb5e414c5bf588032"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-usernotifications" -version = "10.0" -description = "Wrappers for the framework UserNotifications on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-UserNotifications-10.0.tar.gz", hash = "sha256:d2646747d4ddbf9abb8e41937364ae074742449e2fd9d33b3138049ad686d555"}, - {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:965d38c993efa23e0bb24b63d64bfbbf396172bd9846f397ad3c5b896645648f"}, - {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0c7a535581b0c72c68b91333dc40c7341a05db666cd57ede812b316ed05534c9"}, - {file = "pyobjc_framework_UserNotifications-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3499b79aa5aa735dfe09a73e72f14313d93675c28769e59847ae98ba31114fc3"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-usernotificationsui" -version = "10.0" -description = "Wrappers for the framework UserNotificationsUI on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-UserNotificationsUI-10.0.tar.gz", hash = "sha256:50ee261a50798e8a9dfe5152f66ed18cf584b8fcb3ef9cb6283b61413d376a3a"}, - {file = "pyobjc_framework_UserNotificationsUI-10.0-py2.py3-none-any.whl", hash = "sha256:3732661248a507a61ec551846b5f03d136d719ee402a434f9e77cee044983d75"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-UserNotifications = ">=10.0" - -[[package]] -name = "pyobjc-framework-videosubscriberaccount" -version = "10.0" -description = "Wrappers for the framework VideoSubscriberAccount on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-VideoSubscriberAccount-10.0.tar.gz", hash = "sha256:14f2d6d644df7634d186ae0a64c68317018f3ef191d9ff78658c2bfd9bad394a"}, - {file = "pyobjc_framework_VideoSubscriberAccount-10.0-py2.py3-none-any.whl", hash = "sha256:d7616cc2302372211a415e5afb83f3b52b9582b2f1381ba83b0cf955180ca2ba"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-videotoolbox" -version = "10.0" -description = "Wrappers for the framework VideoToolbox on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-VideoToolbox-10.0.tar.gz", hash = "sha256:3c1d112ca55b56eee913697f044d69f5de6959a7503fd2fcb0822ebad45f7b6c"}, - {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fa1f8442096aa52f6043a02f4ad5566bf3c8783a66e51fcd6f165de700e4244c"}, - {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ac6279db7a907d98e2e09ed75aafadfc3dc8662d9e3f0120b48d1e371bc9a9f8"}, - {file = "pyobjc_framework_VideoToolbox-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ff43e2138b5e4ae50ed1373ef436a4d0a9e9cc6b1a296e3687549e519fc73364"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreMedia = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-virtualization" -version = "10.0" -description = "Wrappers for the framework Virtualization on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Virtualization-10.0.tar.gz", hash = "sha256:6387103c8285fe1226f1f35583a11c3aa208d0fea994923cfb405413985cac91"}, - {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ffa8d1a1f588f38bf45b8631f6759ad2d8bb74e4c1c0409f33e99a68bf97b676"}, - {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:62592a97e29d6fb2e999ccfa109b03301e8d7bd91f957b1ddff44dd53afb4b94"}, - {file = "pyobjc_framework_Virtualization-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:95da5017b799c1443edf654cc8d3cbae29f71bb7924976a00c721043d8ccb0a6"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyobjc-framework-vision" -version = "10.0" -description = "Wrappers for the framework Vision on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Vision-10.0.tar.gz", hash = "sha256:c78244e68b7601682f0940b3d205ca087db4177e3fcc17ee29ae6f0fa811f492"}, - {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b688e439129d06d7352924e531d5cc49badf499892272fb9e95c99539f941eb7"}, - {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76943a64cbb9cbdf06653e801e11b69ce721edccc76b6b86cddb027303b65244"}, - {file = "pyobjc_framework_Vision-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7fbb163e66a65e382123f7dc0056a525c3711e0650186ac4d05b09f21a403ca5"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-CoreML = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-webkit" -version = "10.0" -description = "Wrappers for the framework WebKit on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-WebKit-10.0.tar.gz", hash = "sha256:847a69aeeb2e743c5ff838628f3a0031e538de4e011e29df52272955ed0b11df"}, - {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98104c829ecc169fe4ffd0fe499bec21e5fec0aec1974b3edd1ffac1fca0db21"}, - {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30850ed65f411bd1d54d15ec4937d36856e1e390ea70878022d45c5a08f33aa0"}, - {file = "pyobjc_framework_WebKit-10.0-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:42936e1af1a4cf328ce05e3dcd56dc937f348e7971642c68d33128550b4cb169"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - -[[package]] -name = "pyperclip" -version = "1.8.2" -description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -optional = false -python-versions = "*" -files = [ - {file = "pyperclip-1.8.2.tar.gz", hash = "sha256:105254a8b04934f0bc84e9c24eb360a591aaf6535c9def5f29d92af107a9bf57"}, -] - -[[package]] -name = "pytest" -version = "7.4.2" -description = "pytest: simple powerful testing with Python" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-7.4.2-py3-none-any.whl", hash = "sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002"}, - {file = "pytest-7.4.2.tar.gz", hash = "sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069"}, -] - -[package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" -pluggy = ">=0.12,<2.0" -tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} - -[package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] - -[[package]] -name = "pytest-cov" -version = "4.1.0" -description = "Pytest plugin for measuring coverage." -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, -] - -[package.dependencies] -coverage = {version = ">=5.2.1", extras = ["toml"]} -pytest = ">=4.6" - -[package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] - -[[package]] -name = "pytest-env" -version = "0.6.2" -description = "py.test plugin that allows you to add environment variables." -optional = false -python-versions = "*" -files = [ - {file = "pytest-env-0.6.2.tar.gz", hash = "sha256:7e94956aef7f2764f3c147d216ce066bf6c42948bb9e293169b1b1c880a580c2"}, -] - -[package.dependencies] -pytest = ">=2.6.0" - -[[package]] -name = "pytest-freezegun" -version = "0.4.2" -description = "Wrap tests with fixtures in freeze_time" -optional = false -python-versions = "*" -files = [ - {file = "pytest-freezegun-0.4.2.zip", hash = "sha256:19c82d5633751bf3ec92caa481fb5cffaac1787bd485f0df6436fd6242176949"}, - {file = "pytest_freezegun-0.4.2-py2.py3-none-any.whl", hash = "sha256:5318a6bfb8ba4b709c8471c94d0033113877b3ee02da5bfcd917c1889cde99a7"}, -] - -[package.dependencies] -freezegun = ">0.3" -pytest = ">=3.0.0" - -[[package]] -name = "pytest-mock" -version = "3.11.1" -description = "Thin-wrapper around the mock package for easier use with pytest" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-mock-3.11.1.tar.gz", hash = "sha256:7f6b125602ac6d743e523ae0bfa71e1a697a2f5534064528c6ff84c2f7c2fc7f"}, - {file = "pytest_mock-3.11.1-py3-none-any.whl", hash = "sha256:21c279fff83d70763b05f8874cc9cfb3fcacd6d354247a976f9529d19f9acf39"}, -] - -[package.dependencies] -pytest = ">=5.0" - -[package.extras] -dev = ["pre-commit", "pytest-asyncio", "tox"] - -[[package]] -name = "pytest-random-order" -version = "1.1.0" -description = "Randomise the order in which pytest tests are run with some control over the randomness" -optional = false -python-versions = ">=3.5.0" -files = [ - {file = "pytest-random-order-1.1.0.tar.gz", hash = "sha256:dbe6debb9353a7af984cc9eddbeb3577dd4dbbcc1529a79e3d21f68ed9b45605"}, - {file = "pytest_random_order-1.1.0-py3-none-any.whl", hash = "sha256:6cb1e59ab0f798bb0c3488c11ae0c70d7d3340306a466d28b28ccd8ef8c20b7e"}, -] - -[package.dependencies] -pytest = ">=3.0.0" - -[[package]] -name = "pytest-responsemock" -version = "1.1.1" -description = "Simplified requests calls mocking for pytest" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pytest-responsemock-1.1.1.tar.gz", hash = "sha256:71abcebaf61f8930bd92bd643bfc9bc2891299e4e819e21fec18c8434d5dc9af"}, - {file = "pytest_responsemock-1.1.1-py2-none-any.whl", hash = "sha256:bb2583f0cf64e8b47183464d43fe30656ddb7318f64ff2fdf935067827c461c0"}, -] - -[package.dependencies] -pytest = "*" -responses = ">=0.18.0" - -[[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" -files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "python-dotenv" -version = "1.0.0" -description = "Read key-value pairs from a .env file and set them as environment variables" -optional = false -python-versions = ">=3.8" -files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, -] - -[package.extras] -cli = ["click (>=5.0)"] - -[[package]] -name = "python-editor" -version = "1.0.4" -description = "Programmatically open an editor, capture the result." -optional = false -python-versions = "*" -files = [ - {file = "python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b"}, - {file = "python_editor-1.0.4-py2-none-any.whl", hash = "sha256:5f98b069316ea1c2ed3f67e7f5df6c0d8f10b689964a4a811ff64f0106819ec8"}, - {file = "python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d"}, -] - -[[package]] -name = "python-jose" -version = "3.3.0" -description = "JOSE implementation in Python" -optional = false -python-versions = "*" -files = [ - {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, - {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, -] - -[package.dependencies] -ecdsa = "!=0.15" -pyasn1 = "*" -rsa = "*" - -[package.extras] -cryptography = ["cryptography (>=3.4.0)"] -pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] -pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] - -[[package]] -name = "python-xlib" -version = "0.33" -description = "Python X Library" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "python-xlib-0.33.tar.gz", hash = "sha256:55af7906a2c75ce6cb280a584776080602444f75815a7aff4d287bb2d7018b32"}, - {file = "python_xlib-0.33-py2.py3-none-any.whl", hash = "sha256:c3534038d42e0df2f1392a1b30a15a4ff5fdc2b86cfa94f072bf11b10a164398"}, + {file = "python-xlib-0.33.tar.gz", hash = "sha256:55af7906a2c75ce6cb280a584776080602444f75815a7aff4d287bb2d7018b32"}, + {file = "python_xlib-0.33-py2.py3-none-any.whl", hash = "sha256:c3534038d42e0df2f1392a1b30a15a4ff5fdc2b86cfa94f072bf11b10a164398"}, ] [package.dependencies] @@ -3959,6 +1196,7 @@ six = ">=1.10.0" name = "pytzdata" version = "2020.1" description = "The Olson timezone database for Python." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3970,6 +1208,7 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4029,6 +1268,7 @@ files = [ name = "readchar" version = "4.0.5" description = "Library to easily read single chars and key strokes" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4043,6 +1283,7 @@ setuptools = ">=41.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4064,6 +1305,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "responses" version = "0.23.3" description = "A utility library for mocking out the `requests` Python library." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4084,6 +1326,7 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy name = "respx" version = "0.20.2" description = "A utility for mocking out the Python HTTPX and HTTP Core libraries." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4098,6 +1341,7 @@ httpx = ">=0.21.0" name = "rich" version = "11.2.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -4117,6 +1361,7 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" +category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -4131,6 +1376,7 @@ pyasn1 = ">=0.1.3" name = "sentry-sdk" version = "1.31.0" description = "Python client for Sentry (https://sentry.io)" +category = "main" optional = false python-versions = "*" files = [ @@ -4176,6 +1422,7 @@ tornado = ["tornado (>=5)"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4192,6 +1439,7 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -4203,6 +1451,7 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4214,6 +1463,7 @@ files = [ name = "time-machine" version = "2.13.0" description = "Travel through time in your tests." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -4282,6 +1532,7 @@ python-dateutil = "*" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4293,6 +1544,7 @@ files = [ name = "typer" version = "0.9.0" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4314,6 +1566,7 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. name = "types-pyyaml" version = "6.0.12.12" description = "Typing stubs for PyYAML" +category = "dev" optional = false python-versions = "*" files = [ @@ -4325,6 +1578,7 @@ files = [ name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4336,6 +1590,7 @@ files = [ name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4353,6 +1608,7 @@ zstd = ["zstandard (>=0.18.0)"] name = "wcwidth" version = "0.2.8" description = "Measures the displayed width of unicode strings in a terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -4364,6 +1620,7 @@ files = [ name = "win32-setctime" version = "1.1.0" description = "A small Python utility to set file creation time on Windows" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4378,6 +1635,7 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4392,4 +1650,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "82e298604b3f5c40de2d5de4748930cab7c6ffa5ac7be9c6a7d35862da804a9d" +content-hash = "7584ca4661e703a9a0b8734ccadc29561025e9a8c966b6f60a7aa0ea48ba61a0" diff --git a/jobbergate-cli/pyproject.toml b/jobbergate-cli/pyproject.toml index 3f5a33fcb..8da02503e 100644 --- a/jobbergate-cli/pyproject.toml +++ b/jobbergate-cli/pyproject.toml @@ -36,7 +36,6 @@ PyYAML = "6.*" rich = "^11.2.0" sentry-sdk = "^1.29.2" typer = "^0.9.0" -keyboard = "^0.13.5" pynput = "^1.7.6" [tool.poetry.scripts] From 286465f365b1c2ba6453fcfc4ed2ac82b5d22a72 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Tue, 24 Oct 2023 21:22:53 -0300 Subject: [PATCH 05/22] Add pagination module --- jobbergate-cli/jobbergate_cli/constants.py | 16 ++++ jobbergate-cli/jobbergate_cli/pagination.py | 95 +++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 jobbergate-cli/jobbergate_cli/pagination.py diff --git a/jobbergate-cli/jobbergate_cli/constants.py b/jobbergate-cli/jobbergate_cli/constants.py index 987d519f5..1b6d50806 100644 --- a/jobbergate-cli/jobbergate_cli/constants.py +++ b/jobbergate-cli/jobbergate_cli/constants.py @@ -49,3 +49,19 @@ class FileType(str, Enum): ENTRYPOINT = "ENTRYPOINT" SUPPORT = "SUPPORT" + + +class PaginationChoices(str, Enum): + """ + Enum describing the type of pagination that is available for list commands. + """ + + PREVIOUS_PAGE = "Previous page" + NEXT_PAGE = "Next page" + EXIT = "Exit" + + def __str__(self) -> str: + """ + Return the string representation of the enum. + """ + return self.value diff --git a/jobbergate-cli/jobbergate_cli/pagination.py b/jobbergate-cli/jobbergate_cli/pagination.py new file mode 100644 index 000000000..ed5aa41c1 --- /dev/null +++ b/jobbergate-cli/jobbergate_cli/pagination.py @@ -0,0 +1,95 @@ +from typing import Any, Dict, List, Optional, cast + +import inquirer + +from jobbergate_cli.constants import PaginationChoices +from jobbergate_cli.render import StyleMapper, render_paginated_list_results +from jobbergate_cli.requests import make_request +from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope + + +def handle_pagination( + jg_ctx: JobbergateContext, + url_path: str, + abort_message: str = "There was an error communicating with the API", + params: Optional[Dict[str, Any]] = None, + title: str = "Results List", + style_mapper: StyleMapper = None, + hidden_fields: Optional[List[str]] = None, +): + assert jg_ctx is not None + assert jg_ctx.client is not None + + current_page = 1 + + while True: + envelope = cast( + ListResponseEnvelope, + make_request( + jg_ctx.client, + url_path + f"?page={current_page}", + "GET", + expected_status=200, + abort_message=abort_message, + support=True, + response_model_cls=ListResponseEnvelope, + params=params, + ), + ) + + render_paginated_list_results( + jg_ctx, + envelope, + title=title, + style_mapper=style_mapper, + hidden_fields=hidden_fields, + ) + + if envelope.pages < 1: + return + + current_page = envelope.page + + message = "Which page would you like to view?" + choices = [PaginationChoices.PREVIOUS_PAGE, PaginationChoices.NEXT_PAGE, PaginationChoices.EXIT] + + if current_page == 1: + answer = inquirer.prompt( + [ + inquirer.List( + "navigation", + message=message, + choices=choices[1:], # remove previous page option + default=PaginationChoices.NEXT_PAGE, + ) + ] + ) + elif current_page == envelope.pages: + answer = inquirer.prompt( + [ + inquirer.List( + "navigation", + message=message, + choices=choices[::2], # remove next page option + default=PaginationChoices.EXIT, + ) + ] + ) + else: + answer = inquirer.prompt( + [ + inquirer.List( + "navigation", + message=message, + choices=choices, + default=PaginationChoices.NEXT_PAGE, + ) + ] + ) + + if answer["navigation"] == PaginationChoices.NEXT_PAGE: + current_page += 1 + elif answer["navigation"] == PaginationChoices.PREVIOUS_PAGE: + current_page -= 1 + else: + return From 2debfe1b08d890608847fab792c5b0a3603d20b9 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Tue, 24 Oct 2023 21:23:08 -0300 Subject: [PATCH 06/22] Add pagination to list all endpoints --- .../subapps/applications/app.py | 100 ++---------------- .../jobbergate_cli/subapps/job_scripts/app.py | 24 ++--- .../subapps/job_submissions/app.py | 26 ++--- 3 files changed, 23 insertions(+), 127 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index 57974584d..da9ea6168 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -7,19 +7,13 @@ from typing import Any, Dict, Optional, cast import typer -from inquirer import List, prompt from jobbergate_cli.constants import OV_CONTACT, SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.render import ( - StyleMapper, - render_list_results, - render_paginated_list_results, - render_single_result, - terminal_message, -) +from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request -from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope +from jobbergate_cli.schemas import JobbergateContext from jobbergate_cli.subapps.applications.tools import fetch_application_data, save_application_files, upload_application @@ -91,94 +85,16 @@ def list_all( if sort_field is not None: params["sort_field"] = sort_field - envelope = cast( - ListResponseEnvelope, - make_request( - jg_ctx.client, - "/jobbergate/job-script-templates", - "GET", - expected_status=200, - abort_message="Couldn't retrieve applications list from API", - support=True, - response_model_cls=ListResponseEnvelope, - params=params, - ), - ) - - render_paginated_list_results( - jg_ctx, - envelope, + handle_pagination( + jg_ctx=jg_ctx, + url_path="/jobbergate/job-script-templates", + abort_message="Couldn't retrieve applications list from API", + params=params, title="Applications List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, ) - current_page = envelope.page - total_pages = envelope.pages - - while True: - if current_page == 1: - answer = prompt( - [ - List( - "navigation", - message="Which page would you like to view?", - choices=["Next page", "Exit"], - default="Next page", - ) - ] - ) - elif current_page == total_pages: - answer = prompt( - [ - List( - "navigation", - message="Which page would you like to view?", - choices=["Previous page", "Exit"], - default="Exit", - ) - ] - ) - else: - answer = prompt( - [ - List( - "navigation", - message="Which page would you like to view?", - choices=["Previous page", "Next page", "Exit"], - default="Next page", - ) - ] - ) - - if answer["navigation"] == "Next page": - current_page += 1 - elif answer["navigation"] == "Previous page": - current_page -= 1 - else: - break - - envelope = cast( - ListResponseEnvelope, - make_request( - jg_ctx.client, - "/jobbergate/job-script-templates?page={}".format(current_page), - "GET", - expected_status=200, - abort_message="Couldn't retrieve applications list from API", - support=True, - response_model_cls=ListResponseEnvelope, - params=params, - ), - ) - render_paginated_list_results( - jg_ctx, - envelope, - title="Applications List", - style_mapper=style_mapper, - hidden_fields=HIDDEN_FIELDS, - ) - @app.command() @handle_abort diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py index 8ca29451f..fea92832c 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py @@ -10,9 +10,10 @@ from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import Abort, handle_abort -from jobbergate_cli.render import StyleMapper, render_list_results, render_single_result, terminal_message +from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request -from jobbergate_cli.schemas import JobbergateContext, JobScriptCreateRequest, JobScriptResponse, ListResponseEnvelope +from jobbergate_cli.schemas import JobbergateContext, JobScriptCreateRequest, JobScriptResponse from jobbergate_cli.subapps.job_scripts.tools import ( download_job_script_files, fetch_job_script_data, @@ -76,22 +77,11 @@ def list_all( if from_application_id is not None: params["from_job_script_template_id"] = from_application_id - envelope = cast( - ListResponseEnvelope, - make_request( - jg_ctx.client, - "/jobbergate/job-scripts", - "GET", - expected_status=200, - abort_message="Couldn't retrieve job scripts list from API", - support=True, - response_model_cls=ListResponseEnvelope, - params=params, - ), - ) - render_list_results( + handle_pagination( jg_ctx, - envelope, + "/jobbergate/job-scripts", + abort_message="Couldn't retrieve job scripts list from API", + params=params, title="Job Scripts List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index efe2444e2..2232424f5 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -4,15 +4,16 @@ from pathlib import Path from textwrap import dedent -from typing import Any, Dict, Optional, cast +from typing import Any, Dict, Optional import typer from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.render import StyleMapper, render_list_results, render_single_result, terminal_message +from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request -from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope +from jobbergate_cli.schemas import JobbergateContext from jobbergate_cli.subapps.job_scripts.tools import download_job_script_files from jobbergate_cli.subapps.job_submissions.tools import create_job_submission, fetch_job_submission_data @@ -149,22 +150,11 @@ def list_all( if from_job_script_id is not None: params["from_job_script_id"] = from_job_script_id - envelope = cast( - ListResponseEnvelope, - make_request( - jg_ctx.client, - "/jobbergate/job-submissions", - "GET", - expected_status=200, - abort_message="Couldn't retrieve job submissions list from API", - support=True, - response_model_cls=ListResponseEnvelope, - params=params, - ), - ) - render_list_results( + handle_pagination( jg_ctx, - envelope, + "/jobbergate/job-submissions", + abort_message="Couldn't retrieve job submissions list from API", + params=params, title="Job Submission List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, From 9c9b428c23639c24d888119e75f6d863fac75fa9 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Wed, 25 Oct 2023 10:25:26 -0300 Subject: [PATCH 07/22] Remove pynput dependency --- jobbergate-cli/poetry.lock | 127 +--------------------------------- jobbergate-cli/pyproject.toml | 1 - 2 files changed, 1 insertion(+), 127 deletions(-) diff --git a/jobbergate-cli/poetry.lock b/jobbergate-cli/poetry.lock index 1aa44681c..99b1ce8e0 100644 --- a/jobbergate-cli/poetry.lock +++ b/jobbergate-cli/poetry.lock @@ -339,17 +339,6 @@ six = ">=1.9.0" gmpy = ["gmpy"] gmpy2 = ["gmpy2"] -[[package]] -name = "evdev" -version = "1.6.1" -description = "Bindings to the Linux input handling subsystem" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "evdev-1.6.1.tar.gz", hash = "sha256:299db8628cc73b237fc1cc57d3c2948faa0756e2a58b6194b5bf81dc2081f1e3"}, -] - [[package]] name = "exceptiongroup" version = "1.1.3" @@ -881,105 +870,6 @@ files = [ [package.extras] plugins = ["importlib-metadata"] -[[package]] -name = "pynput" -version = "1.7.6" -description = "Monitor and control user input devices" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pynput-1.7.6-py2.py3-none-any.whl", hash = "sha256:19861b2a0c430d646489852f89500e0c9332e295f2c020e7c2775e7046aa2e2f"}, - {file = "pynput-1.7.6.tar.gz", hash = "sha256:3a5726546da54116b687785d38b1db56997ce1d28e53e8d22fc656d8b92e533c"}, -] - -[package.dependencies] -evdev = {version = ">=1.3", markers = "sys_platform in \"linux\""} -pyobjc-framework-ApplicationServices = {version = ">=8.0", markers = "sys_platform == \"darwin\""} -pyobjc-framework-Quartz = {version = ">=8.0", markers = "sys_platform == \"darwin\""} -python-xlib = {version = ">=0.17", markers = "sys_platform in \"linux\""} -six = "*" - -[[package]] -name = "pyobjc-core" -version = "10.0" -description = "Python<->ObjC Interoperability Module" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-core-10.0.tar.gz", hash = "sha256:3dd0a7b3acd7e0b8ffd3f5331b29a3aaebe79a03323e61efeece38627a6020b3"}, - {file = "pyobjc_core-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:61ea5112a672d21b5b0ed945778707c655b17c400672aef144705674c4b95499"}, - {file = "pyobjc_core-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:99b72cda4593e0c66037b25a178f2bcc6efffb6d5d9dcd477ecca859a1f9ae8e"}, - {file = "pyobjc_core-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2843ca32e86a01ccee67d7ad82a325ddd72d754929d1f2c0d96bc8741dc9af09"}, - {file = "pyobjc_core-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a886b9d2a93210cab4ae72601ab005ca6f627fa2f0cc62c43c03ef1405067a11"}, - {file = "pyobjc_core-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:166666b5c380a49e8aa1ad1dda978c581e29a00703d82203216f3c65a3f397a4"}, - {file = "pyobjc_core-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:198a0360f64e4c0148eed07b42d1de0545f56c498c356d1d5524422bb3352907"}, -] - -[[package]] -name = "pyobjc-framework-applicationservices" -version = "10.0" -description = "Wrappers for the framework ApplicationServices on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-ApplicationServices-10.0.tar.gz", hash = "sha256:8a667da95c09202def58746c42d5093f90be5762a52e6f5ad8beb334b51dca20"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b1688abb30cfd6607ae70dd07d3118a5f2d3593916342ffb842a208e7ff52f2b"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ebbe656c8b1a8fb3880d47ebef5cb7c95b9a646c84bc369cf132347dc4754143"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9cf969781616261ec7a2c427120a9fb4ac861e62bc2854de6cabdd2e4ea47141"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:49c4b3e6399572552ba8167bff16ef6cd2eeba6e417547a67d26316acb80f612"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b26b16077fbd3e32f4216b05798a9fe79b4c00c498581adf15c4f47db13ed270"}, - {file = "pyobjc_framework_ApplicationServices-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b20d97f6aa63c4935363f4d9bad736d92b67f46ccd9c8c8c84d08e03b2583691"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" -pyobjc-framework-Quartz = ">=10.0" - -[[package]] -name = "pyobjc-framework-cocoa" -version = "10.0" -description = "Wrappers for the Cocoa frameworks on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Cocoa-10.0.tar.gz", hash = "sha256:723421eff4f59e4ca9a9bb8ec6dafbc0f778141236fa85a49fdd86732d58a74c"}, - {file = "pyobjc_framework_Cocoa-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:80c22a8fc7f085746d9cd222adeca8fe6790e3e6ad7eed5fc70b32aa87c10adb"}, - {file = "pyobjc_framework_Cocoa-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0187cba228976a45f41116c74aab079b64bacb3ffc3c886a4bd8e472bf9be581"}, - {file = "pyobjc_framework_Cocoa-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a81dabdc40268591e3196087388e680c6570fed1b521df9b04733cb3ece0414e"}, - {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0a23db9ab99e338e1d8a268d873cc15408f78cec9946308393ca2241820c18b8"}, - {file = "pyobjc_framework_Cocoa-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a3c66fe56a5156a818fbf056c589f8140a5fdb1dcb1f1075cb34d3755474d900"}, - {file = "pyobjc_framework_Cocoa-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bf9020e85ead569021b15272dcd90207aab6c754093f520b11d4210a2efbdd06"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" - -[[package]] -name = "pyobjc-framework-quartz" -version = "10.0" -description = "Wrappers for the Quartz frameworks on macOS" -category = "main" -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyobjc-framework-Quartz-10.0.tar.gz", hash = "sha256:ff7c938d9c8adff87d577d63e58f9be6e4bc75274384715fa7a20032a1ce8b0e"}, - {file = "pyobjc_framework_Quartz-10.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f06be24fdd2112c9f5b96ede54ec48ad7623e107b85ebbd5b4155d0b1da4d45f"}, - {file = "pyobjc_framework_Quartz-10.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:52848a5e283a508c6895a73cb0c950bd4dca9b1186b70dd73ddc8f436d64fd42"}, - {file = "pyobjc_framework_Quartz-10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0cc89890de411a341e90d2c4148831b6d241fca66e734b5470d27869c04e33c"}, - {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:dc8d6edcdb0bb3dab4dbe6e6a6d420c28aa0caca53715a3e49d7f299601a723f"}, - {file = "pyobjc_framework_Quartz-10.0-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c4b03fade2c4aff2682cd5eae8469f3f15e089c7dd09641e24e5b54d015edfae"}, - {file = "pyobjc_framework_Quartz-10.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6975be7f776ad4c3a41655b90d67e45a9c7fa2d715b189d8599e8d227f790280"}, -] - -[package.dependencies] -pyobjc-core = ">=10.0" -pyobjc-framework-Cocoa = ">=10.0" - [[package]] name = "pyperclip" version = "1.8.2" @@ -1177,21 +1067,6 @@ cryptography = ["cryptography (>=3.4.0)"] pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] -[[package]] -name = "python-xlib" -version = "0.33" -description = "Python X Library" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "python-xlib-0.33.tar.gz", hash = "sha256:55af7906a2c75ce6cb280a584776080602444f75815a7aff4d287bb2d7018b32"}, - {file = "python_xlib-0.33-py2.py3-none-any.whl", hash = "sha256:c3534038d42e0df2f1392a1b30a15a4ff5fdc2b86cfa94f072bf11b10a164398"}, -] - -[package.dependencies] -six = ">=1.10.0" - [[package]] name = "pytzdata" version = "2020.1" @@ -1650,4 +1525,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "7584ca4661e703a9a0b8734ccadc29561025e9a8c966b6f60a7aa0ea48ba61a0" +content-hash = "07b7a76e581e9851e7032bad851e0dc9ef574b6aaabfb2700dccba1a30e4b1b8" diff --git a/jobbergate-cli/pyproject.toml b/jobbergate-cli/pyproject.toml index 8da02503e..d6bbb6f31 100644 --- a/jobbergate-cli/pyproject.toml +++ b/jobbergate-cli/pyproject.toml @@ -36,7 +36,6 @@ PyYAML = "6.*" rich = "^11.2.0" sentry-sdk = "^1.29.2" typer = "^0.9.0" -pynput = "^1.7.6" [tool.poetry.scripts] jobbergate = "jobbergate_cli.main:app" From 20b3a5f4867d000a3d930562f92b3d9bbf12da17 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:03:39 -0300 Subject: [PATCH 08/22] ASP-3966 Move pagination module to subapps folder --- jobbergate-cli/jobbergate_cli/{ => subapps}/pagination.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename jobbergate-cli/jobbergate_cli/{ => subapps}/pagination.py (100%) diff --git a/jobbergate-cli/jobbergate_cli/pagination.py b/jobbergate-cli/jobbergate_cli/subapps/pagination.py similarity index 100% rename from jobbergate-cli/jobbergate_cli/pagination.py rename to jobbergate-cli/jobbergate_cli/subapps/pagination.py From 25147bb9debffe384ea73dfb7ba1b6cb0768ea9e Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:04:20 -0300 Subject: [PATCH 09/22] ASP-3966 Add named params to pagination calls --- jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py | 4 ++-- jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py index fea92832c..772421be4 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py @@ -78,8 +78,8 @@ def list_all( params["from_job_script_template_id"] = from_application_id handle_pagination( - jg_ctx, - "/jobbergate/job-scripts", + jg_ctx=jg_ctx, + url_path="/jobbergate/job-scripts", abort_message="Couldn't retrieve job scripts list from API", params=params, title="Job Scripts List", diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index 2232424f5..585eb472e 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -151,8 +151,8 @@ def list_all( params["from_job_script_id"] = from_job_script_id handle_pagination( - jg_ctx, - "/jobbergate/job-submissions", + jg_ctx=jg_ctx, + url_path="/jobbergate/job-submissions", abort_message="Couldn't retrieve job submissions list from API", params=params, title="Job Submission List", From 39d146420e2dab01da064f4b2c8694f02e44602b Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:04:56 -0300 Subject: [PATCH 10/22] ASP-3966 Add fixtures for pagination tests --- jobbergate-cli/tests/subapps/conftest.py | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/jobbergate-cli/tests/subapps/conftest.py b/jobbergate-cli/tests/subapps/conftest.py index 05b8ebf31..830d0e49f 100644 --- a/jobbergate-cli/tests/subapps/conftest.py +++ b/jobbergate-cli/tests/subapps/conftest.py @@ -347,3 +347,34 @@ def render(self, question, answers=None): return value return DummyRender + + +@pytest.fixture +def dummy_one_page_results(): + return { + "items": [{"id": 1, "name": "Item 1"}], + "total": 1, + "page": 1, + "size": 50, + "pages": 1, + } + + +@pytest.fixture +def dummy_two_pages_results(): + return [ + { + "items": [{"id": i + 1, "name": f"Item {i + 1}"} for i in range(50)], + "total": 80, + "page": 1, + "size": 50, + "pages": 2, + }, + { + "items": [{"id": i + 1, "name": f"Item {i + 1}"} for i in range(30)], + "total": 30, + "page": 2, + "size": 50, + "pages": 2, + }, + ] From d88e929f021324b10843d7dd5537eb8b02cd07a4 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:11:19 -0300 Subject: [PATCH 11/22] ASP-3966 Update unit tests --- .../tests/subapps/applications/test_app.py | 33 ++++--------------- .../tests/subapps/job_scripts/test_app.py | 33 ++++--------------- .../tests/subapps/job_submissions/test_app.py | 33 ++++--------------- 3 files changed, 21 insertions(+), 78 deletions(-) diff --git a/jobbergate-cli/tests/subapps/applications/test_app.py b/jobbergate-cli/tests/subapps/applications/test_app.py index 8dc76403b..b915011f5 100644 --- a/jobbergate-cli/tests/subapps/applications/test_app.py +++ b/jobbergate-cli/tests/subapps/applications/test_app.py @@ -19,40 +19,21 @@ from jobbergate_cli.text_tools import unwrap -def test_list_all__makes_request_and_renders_results( - respx_mock, +def test_list_all__renders_paginated_results( make_test_app, dummy_context, - dummy_application_data, - dummy_domain, cli_runner, mocker, ): - respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates").mock( - return_value=httpx.Response( - httpx.codes.OK, - json=dict( - items=dummy_application_data, - total=len(dummy_application_data), - page=1, - size=len(dummy_application_data), - pages=1, - ), - ), - ) test_app = make_test_app("list-all", list_all) - mocked_render = mocker.patch("jobbergate_cli.subapps.applications.app.render_list_results") + mocked_pagination = mocker.patch("jobbergate_cli.subapps.applications.app.handle_pagination") result = cli_runner.invoke(test_app, ["list-all"]) assert result.exit_code == 0, f"list-all failed: {result.stdout}" - mocked_render.assert_called_once_with( - dummy_context, - ListResponseEnvelope( - items=dummy_application_data, - total=len(dummy_application_data), - page=1, - size=len(dummy_application_data), - pages=1, - ), + mocked_pagination.assert_called_once_with( + jg_ctx=dummy_context, + url_path="/jobbergate/job-script-templates", + abort_message="Couldn't retrieve applications list from API", + params={"include_null_identifier": False, "user_only": False}, title="Applications List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, diff --git a/jobbergate-cli/tests/subapps/job_scripts/test_app.py b/jobbergate-cli/tests/subapps/job_scripts/test_app.py index 5b0d3ee70..c9e291fad 100644 --- a/jobbergate-cli/tests/subapps/job_scripts/test_app.py +++ b/jobbergate-cli/tests/subapps/job_scripts/test_app.py @@ -31,40 +31,21 @@ from jobbergate_cli.text_tools import unwrap -def test_list_all__makes_request_and_renders_results( - respx_mock, +def test_list_all__renders_paginated_results( make_test_app, dummy_context, - dummy_job_script_data, - dummy_domain, cli_runner, mocker, ): - respx_mock.get(f"{dummy_domain}/jobbergate/job-scripts?user_only=true").mock( - return_value=httpx.Response( - httpx.codes.OK, - json=dict( - items=dummy_job_script_data, - total=len(dummy_job_script_data), - page=1, - size=len(dummy_job_script_data), - pages=1, - ), - ), - ) test_app = make_test_app("list-all", list_all) - mocked_render = mocker.patch("jobbergate_cli.subapps.job_scripts.app.render_list_results") + mocked_pagination = mocker.patch("jobbergate_cli.subapps.job_scripts.app.handle_pagination") result = cli_runner.invoke(test_app, ["list-all"]) assert result.exit_code == 0, f"list-all failed: {result.stdout}" - mocked_render.assert_called_once_with( - dummy_context, - ListResponseEnvelope( - items=dummy_job_script_data, - total=len(dummy_job_script_data), - page=1, - size=len(dummy_job_script_data), - pages=1, - ), + mocked_pagination.assert_called_once_with( + jg_ctx=dummy_context, + url_path="/jobbergate/job-scripts", + abort_message="Couldn't retrieve job scripts list from API", + params={"user_only": True}, title="Job Scripts List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, diff --git a/jobbergate-cli/tests/subapps/job_submissions/test_app.py b/jobbergate-cli/tests/subapps/job_submissions/test_app.py index c3a1db455..bef448660 100644 --- a/jobbergate-cli/tests/subapps/job_submissions/test_app.py +++ b/jobbergate-cli/tests/subapps/job_submissions/test_app.py @@ -70,40 +70,21 @@ def test_create( mocked_download_job_script.assert_called_once_with(job_script_id, dummy_context) -def test_list_all__makes_request_and_renders_results( - respx_mock, +def test_list_all__renders_paginated_results( make_test_app, dummy_context, - dummy_job_submission_data, - dummy_domain, cli_runner, mocker, ): - respx_mock.get(f"{dummy_domain}/jobbergate/job-submissions?user_only=true").mock( - return_value=httpx.Response( - httpx.codes.OK, - json=dict( - items=dummy_job_submission_data, - total=len(dummy_job_submission_data), - page=1, - size=len(dummy_job_submission_data), - pages=1, - ), - ), - ) test_app = make_test_app("list-all", list_all) - mocked_render = mocker.patch("jobbergate_cli.subapps.job_submissions.app.render_list_results") + mocked_pagination = mocker.patch("jobbergate_cli.subapps.job_submissions.app.handle_pagination") result = cli_runner.invoke(test_app, ["list-all"]) assert result.exit_code == 0, f"list-all failed: {result.stdout}" - mocked_render.assert_called_once_with( - dummy_context, - ListResponseEnvelope( - items=dummy_job_submission_data, - total=len(dummy_job_submission_data), - page=1, - size=len(dummy_job_submission_data), - pages=1, - ), + mocked_pagination.assert_called_once_with( + jg_ctx=dummy_context, + url_path="/jobbergate/job-submissions", + abort_message="Couldn't retrieve job submissions list from API", + params={"user_only": True}, title="Job Submission List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, From 556d1d3bd9e32143ba88c3fe6106c33a1cb97938 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:11:35 -0300 Subject: [PATCH 12/22] ASP-3966 Update imports for handle_pagination --- jobbergate-cli/jobbergate_cli/subapps/applications/app.py | 2 +- jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py | 2 +- jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index da9ea6168..158557348 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -10,7 +10,7 @@ from jobbergate_cli.constants import OV_CONTACT, SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py index 772421be4..b79be3df8 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py @@ -10,7 +10,7 @@ from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import Abort, handle_abort -from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext, JobScriptCreateRequest, JobScriptResponse diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index 585eb472e..9edcc3a14 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -10,7 +10,7 @@ from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.pagination import handle_pagination +from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext From 429d2c4f88c6b73d7248a83124a2de8323a0b591 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:15:24 -0300 Subject: [PATCH 13/22] ASP-3966 Fix issue with one page results --- jobbergate-cli/jobbergate_cli/render.py | 3 --- jobbergate-cli/jobbergate_cli/subapps/pagination.py | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/render.py b/jobbergate-cli/jobbergate_cli/render.py index 9c36a72a9..b5c56232b 100644 --- a/jobbergate-cli/jobbergate_cli/render.py +++ b/jobbergate-cli/jobbergate_cli/render.py @@ -242,6 +242,3 @@ def render_paginated_list_results( console = Console() console.print() console.print(table) - - page_controls = f"Page {current_page} of {total_pages}" - console.print(page_controls) diff --git a/jobbergate-cli/jobbergate_cli/subapps/pagination.py b/jobbergate-cli/jobbergate_cli/subapps/pagination.py index ed5aa41c1..1f3c9382a 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/pagination.py +++ b/jobbergate-cli/jobbergate_cli/subapps/pagination.py @@ -45,7 +45,7 @@ def handle_pagination( hidden_fields=hidden_fields, ) - if envelope.pages < 1: + if envelope.pages <= 1: return current_page = envelope.page From 9df237bb18d8c78c8e195a18b1f67b430767793e Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:24:41 -0300 Subject: [PATCH 14/22] ASP-3966 Sort imports --- jobbergate-cli/jobbergate_cli/subapps/applications/app.py | 2 +- jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py | 2 +- jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index 158557348..a0ecf80c4 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -10,11 +10,11 @@ from jobbergate_cli.constants import OV_CONTACT, SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext from jobbergate_cli.subapps.applications.tools import fetch_application_data, save_application_files, upload_application +from jobbergate_cli.subapps.pagination import handle_pagination # TODO: move hidden field logic to the API diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py index b79be3df8..0c09ee5b5 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py @@ -10,7 +10,6 @@ from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import Abort, handle_abort -from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext, JobScriptCreateRequest, JobScriptResponse @@ -24,6 +23,7 @@ ) from jobbergate_cli.subapps.job_submissions.app import HIDDEN_FIELDS as JOB_SUBMISSION_HIDDEN_FIELDS from jobbergate_cli.subapps.job_submissions.tools import create_job_submission +from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.text_tools import dedent diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index 9edcc3a14..06d00190b 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -10,12 +10,12 @@ from jobbergate_cli.constants import SortOrder from jobbergate_cli.exceptions import handle_abort -from jobbergate_cli.subapps.pagination import handle_pagination from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext from jobbergate_cli.subapps.job_scripts.tools import download_job_script_files from jobbergate_cli.subapps.job_submissions.tools import create_job_submission, fetch_job_submission_data +from jobbergate_cli.subapps.pagination import handle_pagination # move hidden field logic to the API From 9d0ff12b155b8765ceb022166f6425169a5f15c8 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:25:39 -0300 Subject: [PATCH 15/22] ASP-3966 Add pagination unit tests --- .../tests/subapps/test_pagination.py | 138 ++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 jobbergate-cli/tests/subapps/test_pagination.py diff --git a/jobbergate-cli/tests/subapps/test_pagination.py b/jobbergate-cli/tests/subapps/test_pagination.py new file mode 100644 index 000000000..92c311548 --- /dev/null +++ b/jobbergate-cli/tests/subapps/test_pagination.py @@ -0,0 +1,138 @@ +import httpx +import pytest + +from jobbergate_cli.constants import PaginationChoices +from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope +from jobbergate_cli.subapps.pagination import handle_pagination + + +def test_handle_pagination__one_page(respx_mock, dummy_domain, dummy_context, dummy_one_page_results, mocker): + respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates?page=1").mock( + return_value=httpx.Response( + httpx.codes.OK, + json=dummy_one_page_results, + ), + ) + + mock_inquirer = mocker.patch("jobbergate_cli.subapps.pagination.inquirer.prompt") + mock_render_paginated = mocker.patch("jobbergate_cli.subapps.pagination.render_paginated_list_results") + + handle_pagination( + jg_ctx=dummy_context, + url_path="/jobbergate/job-script-templates", + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + + mock_inquirer.assert_not_called() + mock_render_paginated.assert_called_once_with( + dummy_context, + ListResponseEnvelope(**dummy_one_page_results), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + + +def test_handle_pagination__show_next_page(respx_mock, dummy_domain, dummy_context, dummy_two_pages_results, mocker): + respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates?page=1").mock( + return_value=httpx.Response( + httpx.codes.OK, + json=dummy_two_pages_results[0], + ) + ) + respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates?page=2").mock( + return_value=httpx.Response( + httpx.codes.OK, + json=dummy_two_pages_results[1], + ) + ) + + mock_inquirer = mocker.patch("jobbergate_cli.subapps.pagination.inquirer.prompt") + mock_inquirer.side_effect = [{"navigation": PaginationChoices.NEXT_PAGE}, {"navigation": PaginationChoices.EXIT}] + mock_render_paginated = mocker.patch("jobbergate_cli.subapps.pagination.render_paginated_list_results") + + handle_pagination( + jg_ctx=dummy_context, + url_path="/jobbergate/job-script-templates", + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + + assert mock_inquirer.call_count == 2 + assert mock_render_paginated.call_count == 2 + + assert mock_render_paginated.call_args_list[0] == mocker.call( + dummy_context, + ListResponseEnvelope(**dummy_two_pages_results[0]), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + assert mock_render_paginated.call_args_list[1] == mocker.call( + dummy_context, + ListResponseEnvelope(**dummy_two_pages_results[1]), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + + +def test_handle_pagination__show_previous_page( + respx_mock, dummy_domain, dummy_context, dummy_two_pages_results, mocker +): + respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates?page=1").mock( + return_value=httpx.Response( + httpx.codes.OK, + json=dummy_two_pages_results[0], + ) + ) + respx_mock.get(f"{dummy_domain}/jobbergate/job-script-templates?page=2").mock( + return_value=httpx.Response( + httpx.codes.OK, + json=dummy_two_pages_results[1], + ) + ) + + mock_inquirer = mocker.patch("jobbergate_cli.subapps.pagination.inquirer.prompt") + mock_inquirer.side_effect = [ + {"navigation": PaginationChoices.NEXT_PAGE}, + {"navigation": PaginationChoices.PREVIOUS_PAGE}, + {"navigation": PaginationChoices.EXIT}, + ] + mock_render_paginated = mocker.patch("jobbergate_cli.subapps.pagination.render_paginated_list_results") + + handle_pagination( + jg_ctx=dummy_context, + url_path="/jobbergate/job-script-templates", + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + + assert mock_inquirer.call_count == 3 + assert mock_render_paginated.call_count == 3 + + assert mock_render_paginated.call_args_list[0] == mocker.call( + dummy_context, + ListResponseEnvelope(**dummy_two_pages_results[0]), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + assert mock_render_paginated.call_args_list[1] == mocker.call( + dummy_context, + ListResponseEnvelope(**dummy_two_pages_results[1]), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) + assert mock_render_paginated.call_args_list[2] == mocker.call( + dummy_context, + ListResponseEnvelope(**dummy_two_pages_results[0]), + title="Applications List", + style_mapper=None, + hidden_fields=None, + ) From 63bca1db1a60442f8ad75cfa134cdc30c35ea976 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:27:37 -0300 Subject: [PATCH 16/22] ASP-3966 Lint code --- jobbergate-cli/tests/subapps/applications/test_app.py | 2 +- jobbergate-cli/tests/subapps/job_scripts/test_app.py | 8 +------- jobbergate-cli/tests/subapps/job_submissions/test_app.py | 2 +- jobbergate-cli/tests/subapps/test_pagination.py | 3 +-- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/jobbergate-cli/tests/subapps/applications/test_app.py b/jobbergate-cli/tests/subapps/applications/test_app.py index b915011f5..503be3bb8 100644 --- a/jobbergate-cli/tests/subapps/applications/test_app.py +++ b/jobbergate-cli/tests/subapps/applications/test_app.py @@ -4,7 +4,7 @@ import httpx import pytest -from jobbergate_cli.schemas import ApplicationResponse, ListResponseEnvelope +from jobbergate_cli.schemas import ApplicationResponse from jobbergate_cli.subapps.applications.app import ( HIDDEN_FIELDS, create, diff --git a/jobbergate-cli/tests/subapps/job_scripts/test_app.py b/jobbergate-cli/tests/subapps/job_scripts/test_app.py index c9e291fad..a08f7a17a 100644 --- a/jobbergate-cli/tests/subapps/job_scripts/test_app.py +++ b/jobbergate-cli/tests/subapps/job_scripts/test_app.py @@ -7,13 +7,7 @@ import pytest from jobbergate_cli.config import settings -from jobbergate_cli.schemas import ( - ApplicationResponse, - JobScriptFiles, - JobScriptResponse, - JobSubmissionResponse, - ListResponseEnvelope, -) +from jobbergate_cli.schemas import ApplicationResponse, JobScriptFiles, JobScriptResponse, JobSubmissionResponse from jobbergate_cli.subapps.job_scripts.app import ( HIDDEN_FIELDS, JOB_SUBMISSION_HIDDEN_FIELDS, diff --git a/jobbergate-cli/tests/subapps/job_submissions/test_app.py b/jobbergate-cli/tests/subapps/job_submissions/test_app.py index bef448660..a7fb0fcb4 100644 --- a/jobbergate-cli/tests/subapps/job_submissions/test_app.py +++ b/jobbergate-cli/tests/subapps/job_submissions/test_app.py @@ -4,7 +4,7 @@ import httpx import pytest -from jobbergate_cli.schemas import JobSubmissionResponse, ListResponseEnvelope +from jobbergate_cli.schemas import JobSubmissionResponse from jobbergate_cli.subapps.job_submissions.app import HIDDEN_FIELDS, create, delete, get_one, list_all, style_mapper from jobbergate_cli.text_tools import unwrap diff --git a/jobbergate-cli/tests/subapps/test_pagination.py b/jobbergate-cli/tests/subapps/test_pagination.py index 92c311548..5bf854f6e 100644 --- a/jobbergate-cli/tests/subapps/test_pagination.py +++ b/jobbergate-cli/tests/subapps/test_pagination.py @@ -1,8 +1,7 @@ import httpx -import pytest from jobbergate_cli.constants import PaginationChoices -from jobbergate_cli.schemas import JobbergateContext, ListResponseEnvelope +from jobbergate_cli.schemas import ListResponseEnvelope from jobbergate_cli.subapps.pagination import handle_pagination From e69febf4419f5529bca306fe7f1be52894e7cc28 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Mon, 4 Dec 2023 16:46:09 -0300 Subject: [PATCH 17/22] ASP-3966 Fix merge conflict leftover --- jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py | 1 - jobbergate-cli/tests/subapps/job_scripts/test_app.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index 32f1dc8f3..cc30e252a 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -13,7 +13,6 @@ from jobbergate_cli.render import StyleMapper, render_single_result, terminal_message from jobbergate_cli.requests import make_request from jobbergate_cli.schemas import JobbergateContext -from jobbergate_cli.subapps.job_scripts.tools import download_job_script_files from jobbergate_cli.subapps.job_submissions.tools import create_job_submission, fetch_job_submission_data from jobbergate_cli.subapps.pagination import handle_pagination diff --git a/jobbergate-cli/tests/subapps/job_scripts/test_app.py b/jobbergate-cli/tests/subapps/job_scripts/test_app.py index 3036274e0..405376ce0 100644 --- a/jobbergate-cli/tests/subapps/job_scripts/test_app.py +++ b/jobbergate-cli/tests/subapps/job_scripts/test_app.py @@ -7,7 +7,7 @@ import pytest from jobbergate_cli.config import settings -from jobbergate_cli.schemas import ApplicationResponse, JobScriptFiles, JobScriptResponse, JobSubmissionResponse +from jobbergate_cli.schemas import ApplicationResponse, JobScriptFile, JobScriptResponse, JobSubmissionResponse from jobbergate_cli.subapps.job_scripts.app import ( HIDDEN_FIELDS, JOB_SUBMISSION_HIDDEN_FIELDS, From 1ac809de97de3e0f7b52f1eb993b7c9429e1dd69 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Thu, 7 Dec 2023 20:12:52 -0300 Subject: [PATCH 18/22] ASP-3966 Address code review requested changes --- jobbergate-cli/jobbergate_cli/render.py | 46 ++++++++++--------- .../jobbergate_cli/subapps/pagination.py | 6 ++- .../tests/subapps/test_pagination.py | 3 ++ 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/render.py b/jobbergate-cli/jobbergate_cli/render.py index b5c56232b..4e83ca5ff 100644 --- a/jobbergate-cli/jobbergate_cli/render.py +++ b/jobbergate-cli/jobbergate_cli/render.py @@ -211,34 +211,38 @@ def render_paginated_list_results( style_mapper: StyleMapper = None, hidden_fields: List[str] = None, ): + if envelope.total == 0: + terminal_message("There are no results to display", subject="Nothing here...") + return + if ctx.raw_output: serialized = envelope.json() deserialized = json.loads(serialized) render_json(deserialized["items"]) - else: - if envelope.total == 0: - terminal_message("There are no results to display", subject="Nothing here...") - return + return - current_page = envelope.page - total_pages = envelope.pages + current_page = envelope.page + total_pages = envelope.pages - if ctx.full_output or hidden_fields is None: - filtered_results = envelope.items - else: - filtered_results = [{k: v for (k, v) in d.items() if k not in hidden_fields} for d in envelope.items] + if ctx.full_output or hidden_fields is None: + filtered_results = envelope.items + else: + filtered_results = [{k: v for (k, v) in d.items() if k not in hidden_fields} for d in envelope.items] - first_row = filtered_results[0] + first_row = filtered_results[0] - table = Table(title=title, caption=f"Page {current_page} of {total_pages} - Total items: {envelope.total}") - if style_mapper is None: - style_mapper = StyleMapper() - for key in first_row.keys(): - table.add_column(key, **style_mapper.map_style(key)) + table = Table( + title=title, + caption=f"Page: {current_page} of {total_pages} - Items: {len(filtered_results)} of {envelope.total}", + ) + if style_mapper is None: + style_mapper = StyleMapper() + for key in first_row.keys(): + table.add_column(key, **style_mapper.map_style(key)) - for row in filtered_results: - table.add_row(*[str(v) for v in row.values()]) + for row in filtered_results: + table.add_row(*[str(v) for v in row.values()]) - console = Console() - console.print() - console.print(table) + console = Console() + console.print() + console.print(table) diff --git a/jobbergate-cli/jobbergate_cli/subapps/pagination.py b/jobbergate-cli/jobbergate_cli/subapps/pagination.py index 1f3c9382a..2f1f3508e 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/pagination.py +++ b/jobbergate-cli/jobbergate_cli/subapps/pagination.py @@ -23,11 +23,15 @@ def handle_pagination( current_page = 1 while True: + if params is None: + params = {} + params["page"] = current_page + envelope = cast( ListResponseEnvelope, make_request( jg_ctx.client, - url_path + f"?page={current_page}", + url_path, "GET", expected_status=200, abort_message=abort_message, diff --git a/jobbergate-cli/tests/subapps/test_pagination.py b/jobbergate-cli/tests/subapps/test_pagination.py index 5bf854f6e..9780535ac 100644 --- a/jobbergate-cli/tests/subapps/test_pagination.py +++ b/jobbergate-cli/tests/subapps/test_pagination.py @@ -19,6 +19,7 @@ def test_handle_pagination__one_page(respx_mock, dummy_domain, dummy_context, du handle_pagination( jg_ctx=dummy_context, url_path="/jobbergate/job-script-templates", + params={}, title="Applications List", style_mapper=None, hidden_fields=None, @@ -55,6 +56,7 @@ def test_handle_pagination__show_next_page(respx_mock, dummy_domain, dummy_conte handle_pagination( jg_ctx=dummy_context, url_path="/jobbergate/job-script-templates", + params={}, title="Applications List", style_mapper=None, hidden_fields=None, @@ -106,6 +108,7 @@ def test_handle_pagination__show_previous_page( handle_pagination( jg_ctx=dummy_context, url_path="/jobbergate/job-script-templates", + params={}, title="Applications List", style_mapper=None, hidden_fields=None, From fabca65f31cee390b095f8121b116dd03f2e1dd5 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Thu, 7 Dec 2023 20:25:32 -0300 Subject: [PATCH 19/22] ASP-3966 Revert changes in poetry.lock --- jobbergate-cli/poetry.lock | 83 +++----------------------------------- 1 file changed, 5 insertions(+), 78 deletions(-) diff --git a/jobbergate-cli/poetry.lock b/jobbergate-cli/poetry.lock index 99b1ce8e0..aca2702b8 100644 --- a/jobbergate-cli/poetry.lock +++ b/jobbergate-cli/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "ansicon" version = "1.89.0" description = "Python wrapper for loading Jason Hood's ANSICON" -category = "main" optional = false python-versions = "*" files = [ @@ -16,7 +15,6 @@ files = [ name = "anyio" version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -38,7 +36,6 @@ trio = ["trio (>=0.22)"] name = "black" version = "23.9.1" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -85,7 +82,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "blessed" version = "1.20.0" description = "Easy, practical library for making terminal apps, by providing an elegant, well-documented interface to Colors, Keyboard input, and screen Positioning capabilities." -category = "main" optional = false python-versions = ">=2.7" files = [ @@ -102,7 +98,6 @@ wcwidth = ">=0.1.4" name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -114,7 +109,6 @@ files = [ name = "charset-normalizer" version = "3.3.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -214,7 +208,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -229,7 +222,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -241,7 +233,6 @@ files = [ name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" -category = "main" optional = false python-versions = "*" files = [ @@ -256,7 +247,6 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] name = "coverage" version = "7.3.2" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -324,7 +314,6 @@ toml = ["tomli"] name = "ecdsa" version = "0.18.0" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -343,7 +332,6 @@ gmpy2 = ["gmpy2"] name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -358,7 +346,6 @@ test = ["pytest (>=6)"] name = "flake8" version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -375,7 +362,6 @@ pyflakes = ">=3.1.0,<3.2.0" name = "flake8-pyproject" version = "1.2.3" description = "Flake8 plug-in loading the configuration from pyproject.toml" -category = "dev" optional = false python-versions = ">= 3.6" files = [ @@ -393,7 +379,6 @@ dev = ["pyTest", "pyTest-cov"] name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -408,7 +393,6 @@ python-dateutil = ">=2.7" name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -420,7 +404,6 @@ files = [ name = "httpcore" version = "0.17.3" description = "A minimal low-level HTTP client." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -432,17 +415,16 @@ files = [ anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = ">=1.0.0,<2.0.0" +sniffio = "==1.*" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"] [[package]] name = "httpx" version = "0.24.1" description = "The next generation HTTP client." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -458,15 +440,14 @@ sniffio = "*" [package.extras] brotli = ["brotli", "brotlicffi"] -cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<14)"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (>=1.0.0,<2.0.0)"] +socks = ["socksio (==1.*)"] [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -478,7 +459,6 @@ files = [ name = "importlib-metadata" version = "4.13.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -498,7 +478,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -510,7 +489,6 @@ files = [ name = "inquirer" version = "3.1.3" description = "Collection of common interactive command line user interfaces, based on Inquirer.js" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -527,7 +505,6 @@ readchar = ">=3.0.6" name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -545,7 +522,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "jinxed" version = "1.2.0" description = "Jinxed Terminal Library" -category = "main" optional = false python-versions = "*" files = [ @@ -560,7 +536,6 @@ ansicon = {version = "*", markers = "platform_system == \"Windows\""} name = "loguru" version = "0.6.0" description = "Python logging made (stupidly) simple" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -579,7 +554,6 @@ dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -591,7 +565,6 @@ files = [ name = "mypy" version = "0.982" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -635,7 +608,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -647,7 +619,6 @@ files = [ name = "packaging" version = "23.2" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -659,7 +630,6 @@ files = [ name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -671,7 +641,6 @@ files = [ name = "pendulum" version = "2.1.2" description = "Python datetimes made easy" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -706,7 +675,6 @@ pytzdata = ">=2020.1" name = "platformdirs" version = "3.11.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -722,7 +690,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -738,7 +705,6 @@ testing = ["pytest", "pytest-benchmark"] name = "plummet" version = "1.2.1" description = "Utilities for testing with pendulum timestamps" -category = "dev" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -758,7 +724,6 @@ time-machine = ["time-machine (>=2)"] name = "py-buzz" version = "4.1.0" description = "\"That's not flying, it's falling with style\": Exceptions with extras" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -770,7 +735,6 @@ files = [ name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -782,7 +746,6 @@ files = [ name = "pycodestyle" version = "2.11.0" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -794,7 +757,6 @@ files = [ name = "pydantic" version = "1.10.13" description = "Data validation and settings management using python type hints" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -847,7 +809,6 @@ email = ["email-validator (>=1.0.3)"] name = "pyflakes" version = "3.1.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -859,7 +820,6 @@ files = [ name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -874,7 +834,6 @@ plugins = ["importlib-metadata"] name = "pyperclip" version = "1.8.2" description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)" -category = "main" optional = false python-versions = "*" files = [ @@ -885,7 +844,6 @@ files = [ name = "pytest" version = "7.4.2" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -908,7 +866,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -927,7 +884,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-env" version = "0.6.2" description = "py.test plugin that allows you to add environment variables." -category = "dev" optional = false python-versions = "*" files = [ @@ -941,7 +897,6 @@ pytest = ">=2.6.0" name = "pytest-freezegun" version = "0.4.2" description = "Wrap tests with fixtures in freeze_time" -category = "dev" optional = false python-versions = "*" files = [ @@ -957,7 +912,6 @@ pytest = ">=3.0.0" name = "pytest-mock" version = "3.11.1" description = "Thin-wrapper around the mock package for easier use with pytest" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -975,7 +929,6 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] name = "pytest-random-order" version = "1.1.0" description = "Randomise the order in which pytest tests are run with some control over the randomness" -category = "dev" optional = false python-versions = ">=3.5.0" files = [ @@ -990,7 +943,6 @@ pytest = ">=3.0.0" name = "pytest-responsemock" version = "1.1.1" description = "Simplified requests calls mocking for pytest" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1006,7 +958,6 @@ responses = ">=0.18.0" name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1021,7 +972,6 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1036,7 +986,6 @@ cli = ["click (>=5.0)"] name = "python-editor" version = "1.0.4" description = "Programmatically open an editor, capture the result." -category = "main" optional = false python-versions = "*" files = [ @@ -1049,7 +998,6 @@ files = [ name = "python-jose" version = "3.3.0" description = "JOSE implementation in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -1071,7 +1019,6 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] name = "pytzdata" version = "2020.1" description = "The Olson timezone database for Python." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1083,7 +1030,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1143,7 +1089,6 @@ files = [ name = "readchar" version = "4.0.5" description = "Library to easily read single chars and key strokes" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1158,7 +1103,6 @@ setuptools = ">=41.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1180,7 +1124,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "responses" version = "0.23.3" description = "A utility library for mocking out the `requests` Python library." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1201,7 +1144,6 @@ tests = ["coverage (>=6.0.0)", "flake8", "mypy", "pytest (>=7.0.0)", "pytest-asy name = "respx" version = "0.20.2" description = "A utility for mocking out the Python HTTPX and HTTP Core libraries." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1216,7 +1158,6 @@ httpx = ">=0.21.0" name = "rich" version = "11.2.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -category = "main" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -1236,7 +1177,6 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -1251,7 +1191,6 @@ pyasn1 = ">=0.1.3" name = "sentry-sdk" version = "1.31.0" description = "Python client for Sentry (https://sentry.io)" -category = "main" optional = false python-versions = "*" files = [ @@ -1297,7 +1236,6 @@ tornado = ["tornado (>=5)"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1314,7 +1252,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1326,7 +1263,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1338,7 +1274,6 @@ files = [ name = "time-machine" version = "2.13.0" description = "Travel through time in your tests." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1407,7 +1342,6 @@ python-dateutil = "*" name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1419,7 +1353,6 @@ files = [ name = "typer" version = "0.9.0" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1441,7 +1374,6 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. name = "types-pyyaml" version = "6.0.12.12" description = "Typing stubs for PyYAML" -category = "dev" optional = false python-versions = "*" files = [ @@ -1453,7 +1385,6 @@ files = [ name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1465,7 +1396,6 @@ files = [ name = "urllib3" version = "2.0.7" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1483,7 +1413,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "wcwidth" version = "0.2.8" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -1495,7 +1424,6 @@ files = [ name = "win32-setctime" version = "1.1.0" description = "A small Python utility to set file creation time on Windows" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1510,7 +1438,6 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ From 0a6c3b3234b6ff047a8b5ba6148b97ea5d400825 Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 8 Dec 2023 15:44:18 -0300 Subject: [PATCH 20/22] ASP-3966 Add validation when answer is None --- jobbergate-cli/jobbergate_cli/subapps/pagination.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jobbergate-cli/jobbergate_cli/subapps/pagination.py b/jobbergate-cli/jobbergate_cli/subapps/pagination.py index 2f1f3508e..b9f602819 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/pagination.py +++ b/jobbergate-cli/jobbergate_cli/subapps/pagination.py @@ -91,6 +91,9 @@ def handle_pagination( ] ) + if not answer: + return + if answer["navigation"] == PaginationChoices.NEXT_PAGE: current_page += 1 elif answer["navigation"] == PaginationChoices.PREVIOUS_PAGE: From a084991a0948be3aee3074f3afd1eb4501421d7b Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 8 Dec 2023 15:54:48 -0300 Subject: [PATCH 21/22] ASP-3966 Add sorting by descending id as default --- jobbergate-cli/jobbergate_cli/subapps/applications/app.py | 4 ++-- jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py | 4 ++-- jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py | 4 ++-- jobbergate-cli/tests/subapps/applications/test_app.py | 2 +- jobbergate-cli/tests/subapps/job_scripts/test_app.py | 2 +- jobbergate-cli/tests/subapps/job_submissions/test_app.py | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py index a0ecf80c4..31130ff01 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/applications/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/applications/app.py @@ -62,8 +62,8 @@ def list_all( show_all: bool = typer.Option(False, "--all", help="Show all applications, even the ones without identifier"), user_only: bool = typer.Option(False, "--user", help="Show only applications owned by the current user"), search: Optional[str] = typer.Option(None, help="Apply a search term to results"), - sort_order: SortOrder = typer.Option(SortOrder.UNSORTED, help="Specify sort order"), - sort_field: Optional[str] = typer.Option(None, help="The field by which results should be sorted"), + sort_order: SortOrder = typer.Option(SortOrder.DESCENDING, help="Specify sort order"), + sort_field: Optional[str] = typer.Option("id", help="The field by which results should be sorted"), ): """ Show available applications diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py index 8bcdb9c71..d97d6a4b1 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_scripts/app.py @@ -51,8 +51,8 @@ def list_all( ctx: typer.Context, show_all: bool = typer.Option(False, "--all", help="Show all job scripts, even the ones owned by others"), search: Optional[str] = typer.Option(None, help="Apply a search term to results"), - sort_order: SortOrder = typer.Option(SortOrder.UNSORTED, help="Specify sort order"), - sort_field: Optional[str] = typer.Option(None, help="The field by which results should be sorted"), + sort_order: SortOrder = typer.Option(SortOrder.DESCENDING, help="Specify sort order"), + sort_field: Optional[str] = typer.Option("id", help="The field by which results should be sorted"), from_application_id: Optional[int] = typer.Option( None, help="Filter job-scripts by the application-id they were created from.", diff --git a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py index cc30e252a..8edb3e448 100644 --- a/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py +++ b/jobbergate-cli/jobbergate_cli/subapps/job_submissions/app.py @@ -121,8 +121,8 @@ def list_all( help="Show all job submissions, even the ones owned by others", ), search: Optional[str] = typer.Option(None, help="Apply a search term to results"), - sort_order: SortOrder = typer.Option(SortOrder.UNSORTED, help="Specify sort order"), - sort_field: Optional[str] = typer.Option(None, help="The field by which results should be sorted"), + sort_order: SortOrder = typer.Option(SortOrder.DESCENDING, help="Specify sort order"), + sort_field: Optional[str] = typer.Option("id", help="The field by which results should be sorted"), from_job_script_id: Optional[int] = typer.Option( None, help="Filter job-submissions by the job-script-id they were created from.", diff --git a/jobbergate-cli/tests/subapps/applications/test_app.py b/jobbergate-cli/tests/subapps/applications/test_app.py index 503be3bb8..16d047b57 100644 --- a/jobbergate-cli/tests/subapps/applications/test_app.py +++ b/jobbergate-cli/tests/subapps/applications/test_app.py @@ -33,7 +33,7 @@ def test_list_all__renders_paginated_results( jg_ctx=dummy_context, url_path="/jobbergate/job-script-templates", abort_message="Couldn't retrieve applications list from API", - params={"include_null_identifier": False, "user_only": False}, + params={"include_null_identifier": False, "user_only": False, "sort_ascending": False, "sort_field": "id"}, title="Applications List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, diff --git a/jobbergate-cli/tests/subapps/job_scripts/test_app.py b/jobbergate-cli/tests/subapps/job_scripts/test_app.py index 405376ce0..48ca7a150 100644 --- a/jobbergate-cli/tests/subapps/job_scripts/test_app.py +++ b/jobbergate-cli/tests/subapps/job_scripts/test_app.py @@ -39,7 +39,7 @@ def test_list_all__renders_paginated_results( jg_ctx=dummy_context, url_path="/jobbergate/job-scripts", abort_message="Couldn't retrieve job scripts list from API", - params={"user_only": True}, + params={"user_only": True, "sort_ascending": False, "sort_field": "id"}, title="Job Scripts List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, diff --git a/jobbergate-cli/tests/subapps/job_submissions/test_app.py b/jobbergate-cli/tests/subapps/job_submissions/test_app.py index ae1d8a301..9bf3cab12 100644 --- a/jobbergate-cli/tests/subapps/job_submissions/test_app.py +++ b/jobbergate-cli/tests/subapps/job_submissions/test_app.py @@ -80,7 +80,7 @@ def test_list_all__renders_paginated_results( jg_ctx=dummy_context, url_path="/jobbergate/job-submissions", abort_message="Couldn't retrieve job submissions list from API", - params={"user_only": True}, + params={"user_only": True, "sort_ascending": False, "sort_field": "id"}, title="Job Submission List", style_mapper=style_mapper, hidden_fields=HIDDEN_FIELDS, From 6f0e52d520ed3715ce19e8defe30728ff3eb35bf Mon Sep 17 00:00:00 2001 From: Juliana Karoline Date: Fri, 8 Dec 2023 18:00:25 -0300 Subject: [PATCH 22/22] ASP-3966 Add entry to CHANGELOG --- jobbergate-cli/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jobbergate-cli/CHANGELOG.md b/jobbergate-cli/CHANGELOG.md index 9e0cfe649..1f3123259 100644 --- a/jobbergate-cli/CHANGELOG.md +++ b/jobbergate-cli/CHANGELOG.md @@ -3,7 +3,7 @@ This file keeps track of all notable changes to jobbergate-cli ## Unreleased - +- Added pagination support for `list`` commands [ASP-3966] ## 4.2.0a3 -- 2023-11-30 - Added support for on-site job submissions using the `sbatch` command [ASP-4238]