pyobjc-framework-ScreenCaptureKit 11.1__tar.gz → 12.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/ScreenCaptureKit/_metadata.py +78 -9
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/PKG-INFO +7 -6
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/SOURCES.txt +2 -10
- pyobjc_framework_screencapturekit-12.2.2/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/pyobjc-build-info.txt +3 -0
- pyobjc_framework_screencapturekit-12.2.2/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/requires.txt +3 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Modules/_ScreenCaptureKit.m +18 -21
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Modules/_ScreenCaptureKit_protocols.m +2 -1
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Modules/pyobjc-api.h +6 -3
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Modules/pyobjc-compat.h +56 -98
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PKG-INFO +7 -6
- pyobjc_framework_screencapturekit-12.2.2/PyObjCTest/test_scscreenshotmanager.py +75 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_scstream.py +4 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/metadata/ScreenCaptureKit.fwinfo +4 -28
- pyobjc_framework_screencapturekit-11.1/metadata/raw/arm64-15.2.fwinfo → pyobjc_framework_screencapturekit-12.2.2/metadata/raw/arm64-26.5.fwinfo +1833 -89
- pyobjc_framework_screencapturekit-11.1/metadata/raw/x86_64-15.2.fwinfo → pyobjc_framework_screencapturekit-12.2.2/metadata/raw/x86_64-26.5.fwinfo +1833 -89
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/pyobjc_setup.py +5 -4
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/setup.py +1 -1
- pyobjc_framework_screencapturekit-11.1/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/pyobjc-build-info.txt +0 -3
- pyobjc_framework_screencapturekit-11.1/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/requires.txt +0 -3
- pyobjc_framework_screencapturekit-11.1/PyObjCTest/test_scscreenshotmanager.py +0 -26
- pyobjc_framework_screencapturekit-11.1/metadata/raw/arm64-12.3.fwinfo +0 -1475
- pyobjc_framework_screencapturekit-11.1/metadata/raw/arm64-13.1.fwinfo +0 -1650
- pyobjc_framework_screencapturekit-11.1/metadata/raw/arm64-14.5.fwinfo +0 -2914
- pyobjc_framework_screencapturekit-11.1/metadata/raw/arm64-15.0.fwinfo +0 -3385
- pyobjc_framework_screencapturekit-11.1/metadata/raw/x86_64-12.3.fwinfo +0 -1475
- pyobjc_framework_screencapturekit-11.1/metadata/raw/x86_64-13.1.fwinfo +0 -1650
- pyobjc_framework_screencapturekit-11.1/metadata/raw/x86_64-14.5.fwinfo +0 -2914
- pyobjc_framework_screencapturekit-11.1/metadata/raw/x86_64-15.0.fwinfo +0 -3385
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/ScreenCaptureKit/__init__.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/dependency_links.txt +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/not-zip-safe +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/Lib/pyobjc_framework_ScreenCaptureKit.egg-info/top_level.txt +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/License.txt +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/MANIFEST.in +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/__init__.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_sccontentsharingpicker.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_scerror.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_screcordingoutput.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_screencaputurekit.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PyObjCTest/test_scshareablecontent.py +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/metadata/metadata.ini +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/pyproject.toml +0 -0
- {pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is generated by objective.metadata
|
|
2
2
|
#
|
|
3
|
-
# Last update:
|
|
3
|
+
# Last update: Sun May 24 11:57:33 2026
|
|
4
4
|
#
|
|
5
5
|
# flake8: noqa
|
|
6
6
|
|
|
@@ -31,7 +31,7 @@ else:
|
|
|
31
31
|
|
|
32
32
|
misc = {}
|
|
33
33
|
constants = """$SCStreamErrorDomain$SCStreamFrameInfoBoundingRect$SCStreamFrameInfoContentRect$SCStreamFrameInfoContentScale$SCStreamFrameInfoDirtyRects$SCStreamFrameInfoDisplayTime$SCStreamFrameInfoPresenterOverlayContentRect$SCStreamFrameInfoScaleFactor$SCStreamFrameInfoScreenRect$SCStreamFrameInfoStatus$"""
|
|
34
|
-
enums = """$RP_REPORTING_END_REASON_SUMMARY_EVENT@2$RP_REPORTING_SCREENSHOT_EVENT@3$RP_REPORTING_SUMMARY_EVENT@1$SCCaptureDynamicRangeHDRCanonicalDisplay@2$SCCaptureDynamicRangeHDRLocalDisplay@1$SCCaptureDynamicRangeSDR@0$SCCaptureResolutionAutomatic@0$SCCaptureResolutionBest@1$SCCaptureResolutionNominal@2$SCContentSharingPickerModeMultipleApplications@8$SCContentSharingPickerModeMultipleWindows@2$SCContentSharingPickerModeSingleApplication@4$SCContentSharingPickerModeSingleDisplay@16$SCContentSharingPickerModeSingleWindow@1$SCFrameStatusBlank@2$SCFrameStatusComplete@0$SCFrameStatusIdle@1$SCFrameStatusStarted@4$SCFrameStatusStopped@5$SCFrameStatusSuspended@3$SCPresenterOverlayAlertSettingAlways@2$SCPresenterOverlayAlertSettingNever@1$SCPresenterOverlayAlertSettingSystem@0$SCShareableContentStyleApplication@3$SCShareableContentStyleDisplay@2$SCShareableContentStyleNone@0$SCShareableContentStyleWindow@1$SCStreamConfigurationPresetCaptureHDRScreenshotCanonicalDisplay@3$SCStreamConfigurationPresetCaptureHDRScreenshotLocalDisplay@2$SCStreamConfigurationPresetCaptureHDRStreamCanonicalDisplay@1$SCStreamConfigurationPresetCaptureHDRStreamLocalDisplay@0$SCStreamErrorAttemptToConfigState@-3810$SCStreamErrorAttemptToStartStreamState@-3807$SCStreamErrorAttemptToStopStreamState@-3808$SCStreamErrorAttemptToUpdateFilterState@-3809$SCStreamErrorFailedApplicationConnectionInterrupted@-3805$SCStreamErrorFailedApplicationConnectionInvalid@-3804$SCStreamErrorFailedNoMatchingApplicationContext@-3806$SCStreamErrorFailedToStart@-3802$SCStreamErrorFailedToStartAudioCapture@-3818$SCStreamErrorFailedToStartMicrophoneCapture@-3820$SCStreamErrorFailedToStopAudioCapture@-3819$SCStreamErrorInternalError@-3811$SCStreamErrorInvalidParameter@-3812$SCStreamErrorMissingEntitlements@-3803$SCStreamErrorNoCaptureSource@-3815$SCStreamErrorNoDisplayList@-3814$SCStreamErrorNoWindowList@-3813$SCStreamErrorRemovingStream@-3816$SCStreamErrorSystemStoppedStream@-3821$SCStreamErrorUserDeclined@-3801$SCStreamErrorUserStopped@-3817$SCStreamOutputTypeAudio@1$SCStreamOutputTypeMicrophone@2$SCStreamOutputTypeScreen@0$SCStreamTypeDisplay@1$SCStreamTypeWindow@0$"""
|
|
34
|
+
enums = """$RP_REPORTING_END_REASON_SUMMARY_EVENT@2$RP_REPORTING_SCREENSHOT_EVENT@3$RP_REPORTING_SUMMARY_EVENT@1$SCCaptureDynamicRangeHDRCanonicalDisplay@2$SCCaptureDynamicRangeHDRLocalDisplay@1$SCCaptureDynamicRangeSDR@0$SCCaptureResolutionAutomatic@0$SCCaptureResolutionBest@1$SCCaptureResolutionNominal@2$SCContentSharingPickerModeMultipleApplications@8$SCContentSharingPickerModeMultipleWindows@2$SCContentSharingPickerModeSingleApplication@4$SCContentSharingPickerModeSingleDisplay@16$SCContentSharingPickerModeSingleWindow@1$SCFrameStatusBlank@2$SCFrameStatusComplete@0$SCFrameStatusIdle@1$SCFrameStatusStarted@4$SCFrameStatusStopped@5$SCFrameStatusSuspended@3$SCPresenterOverlayAlertSettingAlways@2$SCPresenterOverlayAlertSettingNever@1$SCPresenterOverlayAlertSettingSystem@0$SCScreenshotDisplayIntentCanonical@0$SCScreenshotDisplayIntentLocal@1$SCScreenshotDynamicRangeHDR@1$SCScreenshotDynamicRangeSDR@0$SCScreenshotDynamicRangeSDRAndHDR@2$SCShareableContentStyleApplication@3$SCShareableContentStyleDisplay@2$SCShareableContentStyleNone@0$SCShareableContentStyleWindow@1$SCStreamConfigurationPresetCaptureHDRRecordingPreservedSDRHDR10@4$SCStreamConfigurationPresetCaptureHDRScreenshotCanonicalDisplay@3$SCStreamConfigurationPresetCaptureHDRScreenshotLocalDisplay@2$SCStreamConfigurationPresetCaptureHDRStreamCanonicalDisplay@1$SCStreamConfigurationPresetCaptureHDRStreamLocalDisplay@0$SCStreamErrorAttemptToConfigState@-3810$SCStreamErrorAttemptToStartStreamState@-3807$SCStreamErrorAttemptToStopStreamState@-3808$SCStreamErrorAttemptToUpdateFilterState@-3809$SCStreamErrorFailedApplicationConnectionInterrupted@-3805$SCStreamErrorFailedApplicationConnectionInvalid@-3804$SCStreamErrorFailedNoMatchingApplicationContext@-3806$SCStreamErrorFailedToStart@-3802$SCStreamErrorFailedToStartAudioCapture@-3818$SCStreamErrorFailedToStartMicrophoneCapture@-3820$SCStreamErrorFailedToStopAudioCapture@-3819$SCStreamErrorInternalError@-3811$SCStreamErrorInvalidParameter@-3812$SCStreamErrorMissingEntitlements@-3803$SCStreamErrorNoCaptureSource@-3815$SCStreamErrorNoDisplayList@-3814$SCStreamErrorNoWindowList@-3813$SCStreamErrorRemovingStream@-3816$SCStreamErrorSystemStoppedStream@-3821$SCStreamErrorUserDeclined@-3801$SCStreamErrorUserStopped@-3817$SCStreamOutputTypeAudio@1$SCStreamOutputTypeMicrophone@2$SCStreamOutputTypeScreen@0$SCStreamTypeDisplay@1$SCStreamTypeWindow@0$"""
|
|
35
35
|
misc.update(
|
|
36
36
|
{
|
|
37
37
|
"SCStreamConfigurationPreset": NewType("SCStreamConfigurationPreset", int),
|
|
@@ -45,6 +45,8 @@ misc.update(
|
|
|
45
45
|
"SCStreamType": NewType("SCStreamType", int),
|
|
46
46
|
"SCStreamOutputType": NewType("SCStreamOutputType", int),
|
|
47
47
|
"SCShareableContentStyle": NewType("SCShareableContentStyle", int),
|
|
48
|
+
"SCScreenshotDisplayIntent": NewType("SCScreenshotDisplayIntent", int),
|
|
49
|
+
"SCScreenshotDynamicRange": NewType("SCScreenshotDynamicRange", int),
|
|
48
50
|
"SCFrameStatus": NewType("SCFrameStatus", int),
|
|
49
51
|
}
|
|
50
52
|
)
|
|
@@ -137,11 +139,6 @@ try:
|
|
|
137
139
|
b"streamDidBecomeInactive:",
|
|
138
140
|
{"required": False, "retval": {"type": b"v"}, "arguments": {2: {"type": b"@"}}},
|
|
139
141
|
)
|
|
140
|
-
r(
|
|
141
|
-
b"NSObject",
|
|
142
|
-
b"userDidStopStream:",
|
|
143
|
-
{"required": False, "retval": {"type": b"v"}, "arguments": {2: {"type": b"@"}}},
|
|
144
|
-
)
|
|
145
142
|
r(b"SCContentFilter", b"includeMenuBar", {"retval": {"type": b"Z"}})
|
|
146
143
|
r(b"SCContentFilter", b"setIncludeMenuBar:", {"arguments": {2: {"type": b"Z"}}})
|
|
147
144
|
r(b"SCContentSharingPicker", b"isActive", {"retval": {"type": b"Z"}})
|
|
@@ -156,6 +153,31 @@ try:
|
|
|
156
153
|
b"setAllowsChangingSelectedContent:",
|
|
157
154
|
{"arguments": {2: {"type": b"Z"}}},
|
|
158
155
|
)
|
|
156
|
+
r(b"SCRecordingOutput", b"recordedDuration", {"retval": {"type": b"{CMTime=qiIq}"}})
|
|
157
|
+
r(b"SCScreenshotConfiguration", b"ignoreClipping", {"retval": {"type": b"Z"}})
|
|
158
|
+
r(b"SCScreenshotConfiguration", b"ignoreShadows", {"retval": {"type": b"Z"}})
|
|
159
|
+
r(b"SCScreenshotConfiguration", b"includeChildWindows", {"retval": {"type": b"Z"}})
|
|
160
|
+
r(
|
|
161
|
+
b"SCScreenshotConfiguration",
|
|
162
|
+
b"setIgnoreClipping:",
|
|
163
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
164
|
+
)
|
|
165
|
+
r(
|
|
166
|
+
b"SCScreenshotConfiguration",
|
|
167
|
+
b"setIgnoreShadows:",
|
|
168
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
169
|
+
)
|
|
170
|
+
r(
|
|
171
|
+
b"SCScreenshotConfiguration",
|
|
172
|
+
b"setIncludeChildWindows:",
|
|
173
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
174
|
+
)
|
|
175
|
+
r(
|
|
176
|
+
b"SCScreenshotConfiguration",
|
|
177
|
+
b"setShowsCursor:",
|
|
178
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
179
|
+
)
|
|
180
|
+
r(b"SCScreenshotConfiguration", b"showsCursor", {"retval": {"type": b"Z"}})
|
|
159
181
|
r(
|
|
160
182
|
b"SCScreenshotManager",
|
|
161
183
|
b"captureImageInRect:completionHandler:",
|
|
@@ -210,6 +232,42 @@ try:
|
|
|
210
232
|
}
|
|
211
233
|
},
|
|
212
234
|
)
|
|
235
|
+
r(
|
|
236
|
+
b"SCScreenshotManager",
|
|
237
|
+
b"captureScreenshotWithFilter:configuration:completionHandler:",
|
|
238
|
+
{
|
|
239
|
+
"arguments": {
|
|
240
|
+
4: {
|
|
241
|
+
"callable": {
|
|
242
|
+
"retval": {"type": b"v"},
|
|
243
|
+
"arguments": {
|
|
244
|
+
0: {"type": b"^v"},
|
|
245
|
+
1: {"type": b"@"},
|
|
246
|
+
2: {"type": b"@"},
|
|
247
|
+
},
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
)
|
|
253
|
+
r(
|
|
254
|
+
b"SCScreenshotManager",
|
|
255
|
+
b"captureScreenshotWithRect:configuration:completionHandler:",
|
|
256
|
+
{
|
|
257
|
+
"arguments": {
|
|
258
|
+
4: {
|
|
259
|
+
"callable": {
|
|
260
|
+
"retval": {"type": b"v"},
|
|
261
|
+
"arguments": {
|
|
262
|
+
0: {"type": b"^v"},
|
|
263
|
+
1: {"type": b"@"},
|
|
264
|
+
2: {"type": b"@"},
|
|
265
|
+
},
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
)
|
|
213
271
|
r(
|
|
214
272
|
b"SCShareableContent",
|
|
215
273
|
b"getCurrentProcessShareableContentWithCompletionHandler:",
|
|
@@ -404,7 +462,7 @@ try:
|
|
|
404
462
|
r(
|
|
405
463
|
b"SCStreamConfiguration",
|
|
406
464
|
b"minimumFrameInterval",
|
|
407
|
-
{"retval": {"type":
|
|
465
|
+
{"retval": {"type": "{CMTime=qiIq}"}},
|
|
408
466
|
)
|
|
409
467
|
r(b"SCStreamConfiguration", b"preservesAspectRatio", {"retval": {"type": b"Z"}})
|
|
410
468
|
r(b"SCStreamConfiguration", b"scalesToFit", {"retval": {"type": b"Z"}})
|
|
@@ -456,7 +514,7 @@ try:
|
|
|
456
514
|
r(
|
|
457
515
|
b"SCStreamConfiguration",
|
|
458
516
|
b"setMinimumFrameInterval:",
|
|
459
|
-
{"arguments": {2: {"type":
|
|
517
|
+
{"arguments": {2: {"type": "{CMTime=qiIq}"}}},
|
|
460
518
|
)
|
|
461
519
|
r(
|
|
462
520
|
b"SCStreamConfiguration",
|
|
@@ -498,12 +556,23 @@ objc.registerNewKeywordsFromSelector(
|
|
|
498
556
|
objc.registerNewKeywordsFromSelector(
|
|
499
557
|
"SCContentFilter", b"initWithDisplay:includingWindows:"
|
|
500
558
|
)
|
|
559
|
+
objc.registerNewKeywordsFromSelector("SCContentSharingPicker", b"init")
|
|
560
|
+
objc.registerNewKeywordsFromSelector("SCDisplay", b"init")
|
|
501
561
|
objc.registerNewKeywordsFromSelector(
|
|
502
562
|
"SCRecordingOutput", b"initWithConfiguration:delegate:"
|
|
503
563
|
)
|
|
564
|
+
objc.registerNewKeywordsFromSelector("SCRunningApplication", b"init")
|
|
565
|
+
objc.registerNewKeywordsFromSelector("SCScreenshotManager", b"init")
|
|
566
|
+
objc.registerNewKeywordsFromSelector("SCShareableContent", b"init")
|
|
567
|
+
objc.registerNewKeywordsFromSelector("SCStream", b"init")
|
|
504
568
|
objc.registerNewKeywordsFromSelector(
|
|
505
569
|
"SCStream", b"initWithFilter:configuration:delegate:"
|
|
506
570
|
)
|
|
571
|
+
objc.registerNewKeywordsFromSelector("SCWindow", b"init")
|
|
572
|
+
|
|
573
|
+
objc.registerNewKeywords(
|
|
574
|
+
"SCStreamConfiguration", ("preset",), "streamConfigurationWithPreset_"
|
|
575
|
+
)
|
|
507
576
|
expressions = {}
|
|
508
577
|
|
|
509
578
|
# END OF FILE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyobjc-framework-ScreenCaptureKit
|
|
3
|
-
Version:
|
|
3
|
+
Version: 12.2.2
|
|
4
4
|
Summary: Wrappers for the framework ScreenCaptureKit on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -17,21 +17,22 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
19
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
26
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
|
+
Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
|
|
27
28
|
Classifier: Programming Language :: Objective C
|
|
28
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
30
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
30
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.10
|
|
31
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
32
|
-
Requires-Dist: pyobjc-core>=
|
|
33
|
-
Requires-Dist: pyobjc-framework-CoreMedia>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
33
|
+
Requires-Dist: pyobjc-core>=12.2.2
|
|
34
|
+
Requires-Dist: pyobjc-framework-CoreMedia>=12.2.2
|
|
35
|
+
Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
|
|
35
36
|
Dynamic: author
|
|
36
37
|
Dynamic: author-email
|
|
37
38
|
Dynamic: classifier
|
|
@@ -26,13 +26,5 @@ PyObjCTest/test_scshareablecontent.py
|
|
|
26
26
|
PyObjCTest/test_scstream.py
|
|
27
27
|
metadata/ScreenCaptureKit.fwinfo
|
|
28
28
|
metadata/metadata.ini
|
|
29
|
-
metadata/raw/arm64-
|
|
30
|
-
metadata/raw/
|
|
31
|
-
metadata/raw/arm64-14.5.fwinfo
|
|
32
|
-
metadata/raw/arm64-15.0.fwinfo
|
|
33
|
-
metadata/raw/arm64-15.2.fwinfo
|
|
34
|
-
metadata/raw/x86_64-12.3.fwinfo
|
|
35
|
-
metadata/raw/x86_64-13.1.fwinfo
|
|
36
|
-
metadata/raw/x86_64-14.5.fwinfo
|
|
37
|
-
metadata/raw/x86_64-15.0.fwinfo
|
|
38
|
-
metadata/raw/x86_64-15.2.fwinfo
|
|
29
|
+
metadata/raw/arm64-26.5.fwinfo
|
|
30
|
+
metadata/raw/x86_64-26.5.fwinfo
|
|
@@ -14,54 +14,51 @@ static PyMethodDef mod_methods[] = {
|
|
|
14
14
|
{0, 0, 0, 0} /* sentinel */
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
static int
|
|
17
|
+
static int
|
|
18
|
+
mod_exec_module(PyObject* m)
|
|
18
19
|
{
|
|
19
20
|
return 0;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
static struct PyModuleDef_Slot mod_slots[] = {
|
|
23
|
-
{
|
|
24
|
-
.slot = Py_mod_exec,
|
|
25
|
-
.value = (void*)mod_exec_module
|
|
26
|
-
},
|
|
24
|
+
{.slot = Py_mod_exec, .value = (void*)mod_exec_module},
|
|
27
25
|
#if PY_VERSION_HEX >= 0x030c0000
|
|
28
26
|
{
|
|
29
27
|
/* This extension does not use the CPython API other than initializing
|
|
30
28
|
* the module, hence is safe with subinterpreters and per-interpreter
|
|
31
29
|
* GILs
|
|
32
30
|
*/
|
|
33
|
-
.slot
|
|
31
|
+
.slot = Py_mod_multiple_interpreters,
|
|
34
32
|
.value = Py_MOD_PER_INTERPRETER_GIL_SUPPORTED,
|
|
35
33
|
},
|
|
36
34
|
#endif
|
|
37
35
|
#if PY_VERSION_HEX >= 0x030d0000
|
|
38
36
|
{
|
|
39
37
|
/* The code in this extension should be safe to use without the GIL */
|
|
40
|
-
.slot
|
|
38
|
+
.slot = Py_mod_gil,
|
|
41
39
|
.value = Py_MOD_GIL_NOT_USED,
|
|
42
40
|
},
|
|
43
41
|
#endif
|
|
44
|
-
{
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
};
|
|
42
|
+
{/* Sentinel */
|
|
43
|
+
.slot = 0,
|
|
44
|
+
.value = 0}};
|
|
49
45
|
|
|
50
46
|
static struct PyModuleDef mod_module = {
|
|
51
|
-
.m_base
|
|
52
|
-
.m_name
|
|
53
|
-
.m_doc
|
|
54
|
-
.m_size
|
|
55
|
-
.m_methods
|
|
56
|
-
.m_slots
|
|
47
|
+
.m_base = PyModuleDef_HEAD_INIT,
|
|
48
|
+
.m_name = "_ScreenCaptureKit",
|
|
49
|
+
.m_doc = NULL,
|
|
50
|
+
.m_size = 0,
|
|
51
|
+
.m_methods = mod_methods,
|
|
52
|
+
.m_slots = mod_slots,
|
|
57
53
|
.m_traverse = NULL,
|
|
58
|
-
.m_clear
|
|
59
|
-
.m_free
|
|
54
|
+
.m_clear = NULL,
|
|
55
|
+
.m_free = NULL,
|
|
60
56
|
};
|
|
61
57
|
|
|
62
58
|
PyObject* PyInit__ScreenCaptureKit(void);
|
|
63
59
|
|
|
64
|
-
PyObject* __attribute__((__visibility__("default")))
|
|
60
|
+
PyObject* __attribute__((__visibility__("default")))
|
|
61
|
+
PyInit__ScreenCaptureKit(void)
|
|
65
62
|
{
|
|
66
63
|
return PyModuleDef_Init(&mod_module);
|
|
67
64
|
}
|
|
@@ -53,8 +53,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
53
53
|
/*
|
|
54
54
|
* Only add items to the end of this list!
|
|
55
55
|
*/
|
|
56
|
+
|
|
56
57
|
typedef int(RegisterMethodMappingFunctionType)(
|
|
57
|
-
Class, SEL,
|
|
58
|
+
Class _Nullable, SEL,
|
|
58
59
|
PyObject* _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull,
|
|
59
60
|
PyObject* _Nonnull const* _Nonnull, size_t),
|
|
60
61
|
IMP _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull));
|
|
@@ -83,7 +84,8 @@ struct pyobjc_api {
|
|
|
83
84
|
PyObject* _Nullable (*_Nonnull unsupported_method_caller)(
|
|
84
85
|
PyObject* _Nonnull, PyObject* _Nonnull, PyObject* _Nonnull const* _Nonnull,
|
|
85
86
|
size_t);
|
|
86
|
-
void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state)
|
|
87
|
+
void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state)
|
|
88
|
+
__attribute__((__noreturn__));
|
|
87
89
|
int (*_Nonnull simplify_sig)(const char* signature, char* buf, size_t buflen);
|
|
88
90
|
void (*_Nonnull free_c_array)(int, Py_buffer*);
|
|
89
91
|
int (*_Nonnull py_to_c_array)(BOOL, BOOL, const char* _Nonnull, PyObject* _Nonnull,
|
|
@@ -113,7 +115,8 @@ struct pyobjc_api {
|
|
|
113
115
|
int (*_Nonnull checknokwnames)(PyObject* _Nonnull callable,
|
|
114
116
|
PyObject* _Nullable kwnames);
|
|
115
117
|
|
|
116
|
-
PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*,
|
|
118
|
+
PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*,
|
|
119
|
+
const char*);
|
|
117
120
|
};
|
|
118
121
|
|
|
119
122
|
#ifndef PYOBJC_BUILD
|
|
@@ -22,12 +22,14 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
22
22
|
* Start of compiler definitions
|
|
23
23
|
*
|
|
24
24
|
*/
|
|
25
|
+
#if 0
|
|
25
26
|
#ifndef __has_feature
|
|
26
27
|
#define __has_feature(x) 0
|
|
27
28
|
#endif
|
|
28
29
|
#ifndef __has_extension
|
|
29
30
|
#define __has_extension(x) __has_feature(x)
|
|
30
31
|
#endif
|
|
32
|
+
#endif
|
|
31
33
|
|
|
32
34
|
#if __has_extension(c_static_assert)
|
|
33
35
|
#define STATIC_ASSERT(test, message) _Static_assert(test, message)
|
|
@@ -55,46 +57,10 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
55
57
|
/*
|
|
56
58
|
*
|
|
57
59
|
* Start of compiler support helpers
|
|
58
|
-
*
|
|
59
|
-
* XXX: Are these needed?
|
|
60
60
|
*/
|
|
61
61
|
|
|
62
|
-
#ifdef __GNUC__
|
|
63
62
|
#define unlikely(x) __builtin_expect(!!(x), 0)
|
|
64
63
|
#define likely(x) __builtin_expect(!!(x), 1)
|
|
65
|
-
#else
|
|
66
|
-
#define likely(x) x
|
|
67
|
-
#define likely(x) x
|
|
68
|
-
#endif
|
|
69
|
-
|
|
70
|
-
/* On some versions of GCC <limits.h> defines LONG_LONG_MAX but not LLONG_MAX, compensate.
|
|
71
|
-
*/
|
|
72
|
-
#ifndef LLONG_MIN
|
|
73
|
-
#ifdef LONG_LONG_MIN
|
|
74
|
-
#define LLONG_MIN LONG_LONG_MIN
|
|
75
|
-
#define LLONG_MAX LONG_LONG_MAX
|
|
76
|
-
#define ULLONG_MAX ULONG_LONG_MAX
|
|
77
|
-
#endif
|
|
78
|
-
#endif
|
|
79
|
-
|
|
80
|
-
/*
|
|
81
|
-
*
|
|
82
|
-
* End of compiler support helpers
|
|
83
|
-
*
|
|
84
|
-
* XXX: These two are no longer needed, all supported platforms
|
|
85
|
-
* are 64-bit
|
|
86
|
-
*/
|
|
87
|
-
|
|
88
|
-
#if __LP64__
|
|
89
|
-
#define Py_ARG_NSInteger "l"
|
|
90
|
-
#define Py_ARG_NSUInteger "k"
|
|
91
|
-
#else
|
|
92
|
-
#define Py_ARG_NSInteger "i"
|
|
93
|
-
#define Py_ARG_NSUInteger "I"
|
|
94
|
-
#endif
|
|
95
|
-
|
|
96
|
-
#define PyObjC__STR(x) #x
|
|
97
|
-
#define PyObjC_STR(x) PyObjC__STR(x)
|
|
98
64
|
|
|
99
65
|
/*
|
|
100
66
|
*
|
|
@@ -123,34 +89,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
123
89
|
} while (0)
|
|
124
90
|
#endif
|
|
125
91
|
|
|
126
|
-
#if PY_VERSION_HEX < 0x03090000
|
|
127
|
-
|
|
128
|
-
/* For use on Python 3.8 and earlier. PyObjC doesn't use the
|
|
129
|
-
* "flag" bit internally.
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
#ifndef PY_VECTORCALL_ARGUMENTS_OFFSET
|
|
133
|
-
#define PY_VECTORCALL_ARGUMENTS_OFFSET ((size_t)1 << (8 * sizeof(size_t) - 1))
|
|
134
|
-
#endif
|
|
135
|
-
|
|
136
|
-
#define PyVectorcall_NARGS(nargsf) ((nargsf) & ~PY_VECTORCALL_ARGUMENTS_OFFSET)
|
|
137
|
-
|
|
138
|
-
#ifdef OBJC_VERSION
|
|
139
|
-
/* Don't use PyObject prefixed symbols in our binaries */
|
|
140
|
-
#define PyObject_Vectorcall PyObjC_Vectorcall
|
|
141
|
-
#define PyObject_VectorcallMethod PyObjC_VectorcallMethod
|
|
142
|
-
|
|
143
|
-
extern PyObject* _Nullable PyObject_Vectorcall(PyObject* callable,
|
|
144
|
-
PyObject* _Nonnull const* _Nonnull args,
|
|
145
|
-
size_t nargsf,
|
|
146
|
-
PyObject* _Nullable kwnames);
|
|
147
|
-
extern PyObject* _Nullable PyObject_VectorcallMethod(
|
|
148
|
-
PyObject* name, PyObject* _Nonnull const* _Nonnull args, size_t nargsf,
|
|
149
|
-
PyObject* _Nullable kwnames);
|
|
150
|
-
#endif
|
|
151
|
-
|
|
152
|
-
#endif /* Python < 3.9 */
|
|
153
|
-
|
|
154
92
|
/* Use CLINIC_SEP between the prototype and
|
|
155
93
|
* description in doc strings, to get clean
|
|
156
94
|
* docstrings.
|
|
@@ -159,20 +97,6 @@ extern PyObject* _Nullable PyObject_VectorcallMethod(
|
|
|
159
97
|
|
|
160
98
|
extern int PyObjC_Cmp(PyObject* o1, PyObject* o2, int* result);
|
|
161
99
|
|
|
162
|
-
/*
|
|
163
|
-
* A micro optimization: when using Python 3.3 or later it
|
|
164
|
-
* is possible to access a 'char*' with an ASCII representation
|
|
165
|
-
* of a unicode object without first converting it to a bytes
|
|
166
|
-
* string (if the string can be encoded as ASCII in the first
|
|
167
|
-
* place.
|
|
168
|
-
*
|
|
169
|
-
* This slightly reduces the object allocation rate during
|
|
170
|
-
* attribute access.
|
|
171
|
-
*
|
|
172
|
-
* XXX: Use PyUnicode_AsUTF8 instead.
|
|
173
|
-
*/
|
|
174
|
-
extern const char* _Nullable PyObjC_Unicode_Fast_Bytes(PyObject* object);
|
|
175
|
-
|
|
176
100
|
#ifdef __clang__
|
|
177
101
|
|
|
178
102
|
#ifndef Py_LIMITED_API
|
|
@@ -198,7 +122,10 @@ _PyObjCTuple_SetItem(PyObject* tuple, Py_ssize_t idx, PyObject* _Nullable value)
|
|
|
198
122
|
static inline PyObject*
|
|
199
123
|
_PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
|
|
200
124
|
{
|
|
201
|
-
|
|
125
|
+
/* The protocol for tuples is that they are full initialized
|
|
126
|
+
* before handing them over to other code.
|
|
127
|
+
*/
|
|
128
|
+
return (PyObject* _Nonnull)PyTuple_GET_ITEM(tuple, idx); // LCOV_BR_EXCL_LINE
|
|
202
129
|
}
|
|
203
130
|
#undef PyTuple_GET_ITEM
|
|
204
131
|
#define PyTuple_GET_ITEM(a, b) _PyObjCTuple_GetItem(a, b)
|
|
@@ -242,13 +169,15 @@ _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
|
|
|
242
169
|
|
|
243
170
|
#if PY_VERSION_HEX < 0x030a0000
|
|
244
171
|
|
|
245
|
-
static inline PyObject*
|
|
172
|
+
static inline PyObject*
|
|
173
|
+
Py_NewRef(PyObject* o)
|
|
246
174
|
{
|
|
247
175
|
Py_INCREF(o);
|
|
248
176
|
return o;
|
|
249
177
|
}
|
|
250
178
|
|
|
251
|
-
static inline PyObject*
|
|
179
|
+
static inline PyObject*
|
|
180
|
+
Py_XNewRef(PyObject* o)
|
|
252
181
|
{
|
|
253
182
|
Py_XINCREF(o);
|
|
254
183
|
return o;
|
|
@@ -257,11 +186,16 @@ static inline PyObject* Py_XNewRef(PyObject* o)
|
|
|
257
186
|
#endif /* PY_VERSION_HEX < 0x030a0000 */
|
|
258
187
|
|
|
259
188
|
#if PY_VERSION_HEX < 0x030d0000
|
|
260
|
-
#define Py_BEGIN_CRITICAL_SECTION(value)
|
|
189
|
+
#define Py_BEGIN_CRITICAL_SECTION(value) \
|
|
190
|
+
{ \
|
|
191
|
+
(void)(value);
|
|
261
192
|
#define Py_END_CRITICAL_SECTION() }
|
|
262
193
|
#define Py_EXIT_CRITICAL_SECTION() ((void)0)
|
|
263
194
|
|
|
264
|
-
#define Py_BEGIN_CRITICAL_SECTION2(value1, value2)
|
|
195
|
+
#define Py_BEGIN_CRITICAL_SECTION2(value1, value2) \
|
|
196
|
+
{ \
|
|
197
|
+
(void)(value1); \
|
|
198
|
+
(void)(value2);
|
|
265
199
|
#define Py_END_CRITICAL_SECTION2() }
|
|
266
200
|
#define Py_EXIT_CRITICAL_SECTION2() ((void)0)
|
|
267
201
|
|
|
@@ -282,7 +216,8 @@ static inline PyObject* Py_XNewRef(PyObject* o)
|
|
|
282
216
|
#endif
|
|
283
217
|
|
|
284
218
|
#if PY_VERSION_HEX < 0x030d0000
|
|
285
|
-
static inline int
|
|
219
|
+
static inline int
|
|
220
|
+
PyDict_GetItemRef(PyObject* p, PyObject* key, PyObject* _Nonnull* _Nullable result)
|
|
286
221
|
{
|
|
287
222
|
*result = PyDict_GetItemWithError(p, key);
|
|
288
223
|
if (*result == NULL) {
|
|
@@ -303,10 +238,28 @@ static inline PyObject* _Nullable PyList_GetItemRef(PyObject* l, Py_ssize_t i)
|
|
|
303
238
|
Py_XINCREF(result);
|
|
304
239
|
return result;
|
|
305
240
|
}
|
|
241
|
+
|
|
242
|
+
static inline int
|
|
243
|
+
PyDict_SetDefaultRef(PyObject* p, PyObject* key, PyObject* default_value,
|
|
244
|
+
PyObject* _Nonnull* _Nullable result)
|
|
245
|
+
{
|
|
246
|
+
*result = PyDict_SetDefault(p, key, default_value);
|
|
247
|
+
if (*result == NULL) {
|
|
248
|
+
return -1;
|
|
249
|
+
}
|
|
250
|
+
Py_INCREF(*result);
|
|
251
|
+
|
|
252
|
+
/* This does not follow the spec, should return 1 when the key was already
|
|
253
|
+
* in the dict. That part of the API is not used in PyObjC though.
|
|
254
|
+
*/
|
|
255
|
+
return 0;
|
|
256
|
+
}
|
|
257
|
+
|
|
306
258
|
#endif
|
|
307
259
|
|
|
308
260
|
#if PY_VERSION_HEX < 0x030c0000
|
|
309
|
-
static inline PyObject*
|
|
261
|
+
static inline PyObject*
|
|
262
|
+
PyType_GetDict(PyTypeObject* type)
|
|
310
263
|
{
|
|
311
264
|
PyObject* result = type->tp_dict;
|
|
312
265
|
Py_INCREF(result);
|
|
@@ -319,12 +272,13 @@ static inline PyObject* PyType_GetDict(PyTypeObject* type)
|
|
|
319
272
|
* These are available in 3.14 and above, the definitions below
|
|
320
273
|
* mirror the private implementation in 3.13.
|
|
321
274
|
*/
|
|
322
|
-
static inline int
|
|
275
|
+
static inline int
|
|
276
|
+
PyUnstable_Object_IsUniquelyReferenced(PyObject* ob)
|
|
323
277
|
{
|
|
324
278
|
#ifdef Py_GIL_DISABLED
|
|
325
|
-
return (_Py_IsOwnedByCurrentThread(ob)
|
|
326
|
-
_Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1
|
|
327
|
-
_Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
|
|
279
|
+
return (_Py_IsOwnedByCurrentThread(ob)
|
|
280
|
+
&& _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1
|
|
281
|
+
&& _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
|
|
328
282
|
#else
|
|
329
283
|
return Py_REFCNT(ob) == 1;
|
|
330
284
|
#endif
|
|
@@ -340,8 +294,8 @@ PyUnstable_EnableTryIncRef(PyObject* op __attribute__((__unused__)))
|
|
|
340
294
|
// Nothing to do if it's in WEAKREFS, QUEUED, or MERGED states.
|
|
341
295
|
return;
|
|
342
296
|
}
|
|
343
|
-
if (_Py_atomic_compare_exchange_ssize(
|
|
344
|
-
|
|
297
|
+
if (_Py_atomic_compare_exchange_ssize(&op->ob_ref_shared, &shared,
|
|
298
|
+
shared | _Py_REF_MAYBE_WEAKREF)) {
|
|
345
299
|
return;
|
|
346
300
|
}
|
|
347
301
|
}
|
|
@@ -350,7 +304,8 @@ PyUnstable_EnableTryIncRef(PyObject* op __attribute__((__unused__)))
|
|
|
350
304
|
|
|
351
305
|
#ifdef Py_GIL_DISABLED
|
|
352
306
|
static inline int
|
|
353
|
-
_Py_TryIncrefFast(PyObject
|
|
307
|
+
_Py_TryIncrefFast(PyObject* op)
|
|
308
|
+
{
|
|
354
309
|
uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
|
|
355
310
|
local += 1;
|
|
356
311
|
if (local == 0) {
|
|
@@ -369,7 +324,7 @@ _Py_TryIncrefFast(PyObject *op) {
|
|
|
369
324
|
}
|
|
370
325
|
|
|
371
326
|
static inline int
|
|
372
|
-
_Py_TryIncRefShared(PyObject
|
|
327
|
+
_Py_TryIncRefShared(PyObject* op)
|
|
373
328
|
{
|
|
374
329
|
Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared);
|
|
375
330
|
for (;;) {
|
|
@@ -379,10 +334,8 @@ _Py_TryIncRefShared(PyObject *op)
|
|
|
379
334
|
return 0;
|
|
380
335
|
}
|
|
381
336
|
|
|
382
|
-
if (_Py_atomic_compare_exchange_ssize(
|
|
383
|
-
|
|
384
|
-
&shared,
|
|
385
|
-
shared + (1 << _Py_REF_SHARED_SHIFT))) {
|
|
337
|
+
if (_Py_atomic_compare_exchange_ssize(&op->ob_ref_shared, &shared,
|
|
338
|
+
shared + (1 << _Py_REF_SHARED_SHIFT))) {
|
|
386
339
|
#ifdef Py_REF_DEBUG
|
|
387
340
|
_Py_IncRefTotal(_PyThreadState_GET());
|
|
388
341
|
#endif
|
|
@@ -394,7 +347,7 @@ _Py_TryIncRefShared(PyObject *op)
|
|
|
394
347
|
#endif
|
|
395
348
|
|
|
396
349
|
static inline int
|
|
397
|
-
PyUnstable_TryIncRef(PyObject
|
|
350
|
+
PyUnstable_TryIncRef(PyObject* op __attribute__((__unused__)))
|
|
398
351
|
{
|
|
399
352
|
#ifdef Py_GIL_DISABLED
|
|
400
353
|
return _Py_TryIncrefFast(op) || _Py_TryIncRefShared(op);
|
|
@@ -408,6 +361,11 @@ PyUnstable_TryIncRef(PyObject *op __attribute__((__unused__)))
|
|
|
408
361
|
}
|
|
409
362
|
#endif
|
|
410
363
|
|
|
364
|
+
#if PY_VERSION_HEX < 0x030f00a7
|
|
365
|
+
#define PyAnyDict_CheckExact PyDict_CheckExact
|
|
366
|
+
#define PyAnyDict_Check PyDict_Check
|
|
367
|
+
#endif
|
|
368
|
+
|
|
411
369
|
NS_ASSUME_NONNULL_END
|
|
412
370
|
|
|
413
371
|
#endif /* PyObjC_COMPAT_H */
|
{pyobjc_framework_screencapturekit-11.1 → pyobjc_framework_screencapturekit-12.2.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyobjc-framework-ScreenCaptureKit
|
|
3
|
-
Version:
|
|
3
|
+
Version: 12.2.2
|
|
4
4
|
Summary: Wrappers for the framework ScreenCaptureKit on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -17,21 +17,22 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
19
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.13
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.14
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
26
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
|
+
Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
|
|
27
28
|
Classifier: Programming Language :: Objective C
|
|
28
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
29
30
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
30
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.10
|
|
31
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
32
|
-
Requires-Dist: pyobjc-core>=
|
|
33
|
-
Requires-Dist: pyobjc-framework-CoreMedia>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
33
|
+
Requires-Dist: pyobjc-core>=12.2.2
|
|
34
|
+
Requires-Dist: pyobjc-framework-CoreMedia>=12.2.2
|
|
35
|
+
Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
|
|
35
36
|
Dynamic: author
|
|
36
37
|
Dynamic: author-email
|
|
37
38
|
Dynamic: classifier
|