pyobjc-framework-AVKit 12.2.2__tar.gz → 13.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/AVKit/_metadata.py +10 -4
  2. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/pyobjc_framework_AVKit.egg-info/PKG-INFO +6 -6
  3. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/pyobjc_framework_AVKit.egg-info/SOURCES.txt +2 -3
  4. pyobjc_framework_avkit-13.0/Lib/pyobjc_framework_AVKit.egg-info/pyobjc-build-info.txt +3 -0
  5. pyobjc_framework_avkit-13.0/Lib/pyobjc_framework_AVKit.egg-info/requires.txt +3 -0
  6. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Modules/_AVKit.m +10 -2
  7. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Modules/_AVKit_protocols.m +9 -5
  8. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Modules/pyobjc-api.h +18 -4
  9. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Modules/pyobjc-compat.h +0 -18
  10. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PKG-INFO +6 -6
  11. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avcaptureview.py +12 -15
  12. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avkittypes.py +1 -1
  13. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avlegiblemediaoptionsmenucontroller.py +6 -6
  14. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avpictureinpicturecontroller.py +11 -10
  15. pyobjc_framework_avkit-12.2.2/PyObjCTest/test_avpictureInpicturecontroller_avsamplebufferdisplayLayersupport.py → pyobjc_framework_avkit-13.0/PyObjCTest/test_avpictureinpicturecontroller_avsamplebufferdisplaylayersupport.py +5 -3
  16. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avplayerview.py +34 -41
  17. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avroutepickerview.py +2 -2
  18. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/metadata/AVKit.fwinfo +1 -11
  19. pyobjc_framework_avkit-12.2.2/metadata/raw/arm64-26.5.fwinfo → pyobjc_framework_avkit-13.0/metadata/raw/arm64-27.fwinfo +2 -15
  20. pyobjc_framework_avkit-12.2.2/metadata/raw/x86_64-26.5.fwinfo → pyobjc_framework_avkit-13.0/metadata/raw/x86_64-27.fwinfo +2 -15
  21. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/pyobjc_setup.py +7 -7
  22. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/setup.py +1 -1
  23. pyobjc_framework_avkit-12.2.2/Lib/pyobjc_framework_AVKit.egg-info/pyobjc-build-info.txt +0 -3
  24. pyobjc_framework_avkit-12.2.2/Lib/pyobjc_framework_AVKit.egg-info/requires.txt +0 -3
  25. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/AVKit/__init__.py +0 -0
  26. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/pyobjc_framework_AVKit.egg-info/dependency_links.txt +0 -0
  27. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/pyobjc_framework_AVKit.egg-info/not-zip-safe +0 -0
  28. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/Lib/pyobjc_framework_AVKit.egg-info/top_level.txt +0 -0
  29. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/License.txt +0 -0
  30. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/MANIFEST.in +0 -0
  31. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/__init__.py +0 -0
  32. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avkit.py +0 -0
  33. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/PyObjCTest/test_avkitdefines.py +0 -0
  34. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/metadata/metadata.ini +0 -0
  35. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/pyproject.toml +0 -0
  36. {pyobjc_framework_avkit-12.2.2 → pyobjc_framework_avkit-13.0}/setup.cfg +0 -0
@@ -1,7 +1,5 @@
1
1
  # This file is generated by objective.metadata
2
2
  #
3
- # Last update: Tue May 26 19:33:41 2026
4
- #
5
3
  # flake8: noqa
6
4
 
7
5
  import objc, sys
@@ -40,7 +38,7 @@ misc.update(
40
38
  }
41
39
  )
42
40
  constants = """$$"""
43
- enums = """$AVCaptureViewControlsStyleDefault@0$AVCaptureViewControlsStyleFloating@1$AVCaptureViewControlsStyleInline@0$AVCaptureViewControlsStyleInlineDeviceSelection@2$AVDisplayDynamicRangeAutomatic@0$AVDisplayDynamicRangeConstrainedHigh@2$AVDisplayDynamicRangeHigh@3$AVDisplayDynamicRangeStandard@1$AVLegibleMediaOptionsMenuContentsAll@3$AVLegibleMediaOptionsMenuContentsCaptionAppearance@2$AVLegibleMediaOptionsMenuContentsLegible@1$AVLegibleMediaOptionsMenuStateChangeReasonLanguageMismatch@1$AVLegibleMediaOptionsMenuStateChangeReasonNone@0$AVLegibleMediaOptionsMenuTypeCaptionAppearance@1$AVLegibleMediaOptionsMenuTypeDefault@0$AVPlayerViewControlsStyleDefault@1$AVPlayerViewControlsStyleFloating@2$AVPlayerViewControlsStyleInline@1$AVPlayerViewControlsStyleMinimal@3$AVPlayerViewControlsStyleNone@0$AVPlayerViewTrimCancelButton@1$AVPlayerViewTrimOKButton@0$AVRoutePickerViewButtonStateActive@2$AVRoutePickerViewButtonStateActiveHighlighted@3$AVRoutePickerViewButtonStateNormal@0$AVRoutePickerViewButtonStateNormalHighlighted@1$AVRoutePickerViewButtonStyleCustom@2$AVRoutePickerViewButtonStylePlain@1$AVRoutePickerViewButtonStyleSystem@0$AVVideoFrameAnalysisTypeDefault@1$AVVideoFrameAnalysisTypeMachineReadableCode@16$AVVideoFrameAnalysisTypeNone@0$AVVideoFrameAnalysisTypeSubject@4$AVVideoFrameAnalysisTypeText@2$AVVideoFrameAnalysisTypeVisualSearch@8$"""
41
+ enums = """$AVCaptureViewControlsStyleDefault@0$AVCaptureViewControlsStyleFloating@1$AVCaptureViewControlsStyleInline@0$AVCaptureViewControlsStyleInlineDeviceSelection@2$AVDisplayDynamicRangeAutomatic@0$AVDisplayDynamicRangeConstrainedHigh@2$AVDisplayDynamicRangeHigh@3$AVDisplayDynamicRangeStandard@1$AVLegibleMediaOptionsMenuContentsAll@3$AVLegibleMediaOptionsMenuContentsCaptionAppearance@2$AVLegibleMediaOptionsMenuContentsLegible@1$AVLegibleMediaOptionsMenuStateChangeReasonLanguageMismatch@1$AVLegibleMediaOptionsMenuStateChangeReasonNone@0$AVPlayerViewControlsStyleDefault@1$AVPlayerViewControlsStyleFloating@2$AVPlayerViewControlsStyleInline@1$AVPlayerViewControlsStyleMinimal@3$AVPlayerViewControlsStyleNone@0$AVPlayerViewTrimCancelButton@1$AVPlayerViewTrimOKButton@0$AVRoutePickerViewButtonStateActive@2$AVRoutePickerViewButtonStateActiveHighlighted@3$AVRoutePickerViewButtonStateNormal@0$AVRoutePickerViewButtonStateNormalHighlighted@1$AVRoutePickerViewButtonStyleCustom@2$AVRoutePickerViewButtonStylePlain@1$AVRoutePickerViewButtonStyleSystem@0$AVVideoFrameAnalysisTypeDefault@1$AVVideoFrameAnalysisTypeMachineReadableCode@16$AVVideoFrameAnalysisTypeNone@0$AVVideoFrameAnalysisTypeSubject@4$AVVideoFrameAnalysisTypeText@2$AVVideoFrameAnalysisTypeVisualSearch@8$"""
44
42
  misc.update(
45
43
  {
46
44
  "AVCaptureViewControlsStyle": NewType("AVCaptureViewControlsStyle", int),
@@ -50,7 +48,6 @@ misc.update(
50
48
  "AVLegibleMediaOptionsMenuContents", int
51
49
  ),
52
50
  "AVRoutePickerViewButtonState": NewType("AVRoutePickerViewButtonState", int),
53
- "AVLegibleMediaOptionsMenuType": NewType("AVLegibleMediaOptionsMenuType", int),
54
51
  "AVLegibleMediaOptionsMenuStateChangeReason": NewType(
55
52
  "AVLegibleMediaOptionsMenuStateChangeReason", int
56
53
  ),
@@ -476,5 +473,14 @@ objc.registerNewKeywordsFromSelector(
476
473
  objc.registerNewKeywordsFromSelector("AVPlaybackSpeed", b"init")
477
474
  objc.registerNewKeywordsFromSelector("AVPlaybackSpeed", b"initWithRate:localizedName:")
478
475
  expressions = {}
476
+ formal_protocols = {
477
+ "AVCaptureViewDelegate": "AVCaptureViewDelegate",
478
+ "AVLegibleMediaOptionsMenuControllerDelegate": "AVLegibleMediaOptionsMenuControllerDelegate",
479
+ "AVPictureInPictureControllerDelegate": "AVPictureInPictureControllerDelegate",
480
+ "AVPictureInPictureSampleBufferPlaybackDelegate": "AVPictureInPictureSampleBufferPlaybackDelegate",
481
+ "AVPlayerViewDelegate": "AVPlayerViewDelegate",
482
+ "AVPlayerViewPictureInPictureDelegate": "AVPlayerViewPictureInPictureDelegate",
483
+ "AVRoutePickerViewDelegate": "AVRoutePickerViewDelegate",
484
+ }
479
485
 
480
486
  # END OF FILE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-AVKit
3
- Version: 12.2.2
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework AVKit on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,22 +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.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
24
23
  Classifier: Programming Language :: Python :: 3.14
25
24
  Classifier: Programming Language :: Python :: 3.15
25
+ Classifier: Programming Language :: Python :: 3.16
26
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
27
  Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
28
28
  Classifier: Programming Language :: Objective C
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Classifier: Topic :: Software Development :: User Interfaces
31
- Requires-Python: >=3.10
31
+ Requires-Python: >=3.11
32
32
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=12.2.2
34
- Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
35
- Requires-Dist: pyobjc-framework-Quartz>=12.2.2
33
+ Requires-Dist: pyobjc-core>=13.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=13.0
35
+ Requires-Dist: pyobjc-framework-Quartz>=13.0
36
36
  Dynamic: author
37
37
  Dynamic: author-email
38
38
  Dynamic: classifier
@@ -22,12 +22,11 @@ PyObjCTest/test_avkit.py
22
22
  PyObjCTest/test_avkitdefines.py
23
23
  PyObjCTest/test_avkittypes.py
24
24
  PyObjCTest/test_avlegiblemediaoptionsmenucontroller.py
25
- PyObjCTest/test_avpictureInpicturecontroller_avsamplebufferdisplayLayersupport.py
26
25
  PyObjCTest/test_avpictureinpicturecontroller.py
27
26
  PyObjCTest/test_avpictureinpicturecontroller_avsamplebufferdisplaylayersupport.py
28
27
  PyObjCTest/test_avplayerview.py
29
28
  PyObjCTest/test_avroutepickerview.py
30
29
  metadata/AVKit.fwinfo
31
30
  metadata/metadata.ini
32
- metadata/raw/arm64-26.5.fwinfo
33
- metadata/raw/x86_64-26.5.fwinfo
31
+ metadata/raw/arm64-27.fwinfo
32
+ metadata/raw/x86_64-27.fwinfo
@@ -0,0 +1,3 @@
1
+ macOS 27.2 (26B123)
2
+ Apple clang version 21.0.0 (clang-2100.4.1.1)
3
+ SDK: macOS 27.2
@@ -0,0 +1,3 @@
1
+ pyobjc-core>=13.0
2
+ pyobjc-framework-Cocoa>=13.0
3
+ pyobjc-framework-Quartz>=13.0
@@ -2,6 +2,10 @@
2
2
  #include "Python.h"
3
3
  #include "pyobjc-api.h"
4
4
 
5
+ #ifdef USE_STATIC_ANALYZER
6
+ #include "../../pyobjc-core/Modules/objc/python-api-used.h"
7
+ #endif
8
+
5
9
  #import <AVKit/AVKit.h>
6
10
 
7
11
  /* We include the source code here instead of
@@ -9,6 +13,8 @@
9
13
  */
10
14
  #include "_AVKit_protocols.m"
11
15
 
16
+ NS_ASSUME_NONNULL_BEGIN
17
+
12
18
  static int
13
19
  mod_exec_module(PyObject* m)
14
20
  {
@@ -54,10 +60,12 @@ static struct PyModuleDef mod_module = {
54
60
  .m_free = NULL,
55
61
  };
56
62
 
57
- PyObject* PyInit__AVKit(void);
63
+ PyObject* _Nullable PyInit__AVKit(void);
58
64
 
59
- PyObject* __attribute__((__visibility__("default")))
65
+ PyObject* _Nullable __attribute__((__visibility__("default")))
60
66
  PyInit__AVKit(void)
61
67
  {
62
68
  return PyModuleDef_Init(&mod_module);
63
69
  }
70
+
71
+ NS_ASSUME_NONNULL_END
@@ -1,8 +1,8 @@
1
- /*
2
- * This file is generated by objective.metadata
3
- *
4
- * Last update: Sun Aug 10 20:41:47 2014
5
- */
1
+ // LCOV_EXCL_START
2
+ // This function is only present to ensure protocols are
3
+ // available at runtime.
4
+
5
+ NS_ASSUME_NONNULL_BEGIN
6
6
 
7
7
  static void __attribute__((__used__))
8
8
  use_protocols(void)
@@ -31,3 +31,7 @@ use_protocols(void)
31
31
  Py_XDECREF(p);
32
32
  #endif
33
33
  }
34
+
35
+ NS_ASSUME_NONNULL_END
36
+
37
+ // LCOV_EXCL_STOP
@@ -60,6 +60,11 @@ typedef int(RegisterMethodMappingFunctionType)(
60
60
  PyObject* _Nonnull const* _Nonnull, size_t),
61
61
  IMP _Nullable (*_Nonnull)(PyObject* _Nonnull, PyObject* _Nonnull));
62
62
 
63
+ #ifndef PyObjC_FUNCTION_CALL_H
64
+ typedef PyObject* _Nullable (*PyObjC_FunctionCallFunc)(
65
+ PyObject* meth, PyObject* _Nonnull const* _Nonnull args, size_t nargs);
66
+ #endif
67
+
63
68
  struct pyobjc_api {
64
69
  int api_version; /* API version */
65
70
  size_t struct_len; /* Length of this struct */
@@ -117,6 +122,9 @@ struct pyobjc_api {
117
122
 
118
123
  PyObject* _Nullable (*_Nonnull createopaquepointertype)(const char*, const char*,
119
124
  const char*);
125
+ int (*_Nonnull register_functioncaller)(void*, PyObjC_FunctionCallFunc);
126
+ PyObject* _Nullable (*_Nonnull create_registered_struct)(
127
+ const char*, Py_ssize_t, const char* _Nonnull* _Nullable, Py_ssize_t*);
120
128
  };
121
129
 
122
130
  #ifndef PYOBJC_BUILD
@@ -159,6 +167,8 @@ static struct pyobjc_api* PyObjC_API;
159
167
  #define PyObjC_CheckArgCount (PyObjC_API->checkargcount)
160
168
  #define PyObjC_CheckNoKwnames (PyObjC_API->checknokwnames)
161
169
  #define PyObjCCreateOpaquePointerType (PyObjC_API->createopaquepointertype)
170
+ #define PyObjCRegister_FunctionCaller (PyObjC_API->register_functioncaller)
171
+ #define PyObjC_CreateRegisteredStruct (PyObjC_API->create_registered_struct)
162
172
 
163
173
  typedef void (*PyObjC_Function_Pointer)(void);
164
174
  typedef struct PyObjC_function_map {
@@ -178,21 +188,25 @@ static inline int
178
188
  PyObjC_ImportAPI(PyObject* calling_module)
179
189
  {
180
190
  PyObjC_API = (struct pyobjc_api*)PyCapsule_Import("objc." PYOBJC_API_NAME, 0);
181
- if (PyObjC_API == NULL) {
182
- return -1;
191
+ if (PyObjC_API == NULL) { // LCOV_BR_EXCL_LINE
192
+ return -1; // LCOV_EXCL_LINE
183
193
  }
184
- if (PyObjC_API->api_version != PYOBJC_API_VERSION) {
194
+ if (PyObjC_API->api_version != PYOBJC_API_VERSION) { // LCOV_BR_EXCL_LINE
195
+ // LCOV_EXCL_START
185
196
  PyErr_Format(PyExc_RuntimeError,
186
197
  "Wrong version of PyObjC C API (got %d, expected %d)",
187
198
  (int)PyObjC_API->api_version, (int)PYOBJC_API_VERSION);
188
199
  return -1;
200
+ // LCOV_EXCL_STOP
189
201
  }
190
202
 
191
- if (PyObjC_API->struct_len < PyObjC_EXPECTED_STRUCT_SIZE) {
203
+ if (PyObjC_API->struct_len < PyObjC_EXPECTED_STRUCT_SIZE) { // LCOV_EXCL_LINE
204
+ // LCOV_EXCL_START
192
205
  PyErr_Format(PyExc_RuntimeError,
193
206
  "Wrong struct-size of PyObjC C API (got %d, expected %d)",
194
207
  (int)PyObjC_API->struct_len, (int)sizeof(struct pyobjc_api));
195
208
  return -1;
209
+ // LCOV_EXCL_STOP
196
210
  }
197
211
 
198
212
  /* Current pyobjc implementation doesn't allow deregistering
@@ -167,24 +167,6 @@ _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
167
167
  PyGILState_Release(_GILState); \
168
168
  } while (0)
169
169
 
170
- #if PY_VERSION_HEX < 0x030a0000
171
-
172
- static inline PyObject*
173
- Py_NewRef(PyObject* o)
174
- {
175
- Py_INCREF(o);
176
- return o;
177
- }
178
-
179
- static inline PyObject*
180
- Py_XNewRef(PyObject* o)
181
- {
182
- Py_XINCREF(o);
183
- return o;
184
- }
185
-
186
- #endif /* PY_VERSION_HEX < 0x030a0000 */
187
-
188
170
  #if PY_VERSION_HEX < 0x030d0000
189
171
  #define Py_BEGIN_CRITICAL_SECTION(value) \
190
172
  { \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-AVKit
3
- Version: 12.2.2
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework AVKit on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,22 +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.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
21
  Classifier: Programming Language :: Python :: 3.12
23
22
  Classifier: Programming Language :: Python :: 3.13
24
23
  Classifier: Programming Language :: Python :: 3.14
25
24
  Classifier: Programming Language :: Python :: 3.15
25
+ Classifier: Programming Language :: Python :: 3.16
26
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
27
27
  Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
28
28
  Classifier: Programming Language :: Objective C
29
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Classifier: Topic :: Software Development :: User Interfaces
31
- Requires-Python: >=3.10
31
+ Requires-Python: >=3.11
32
32
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=12.2.2
34
- Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
35
- Requires-Dist: pyobjc-framework-Quartz>=12.2.2
33
+ Requires-Dist: pyobjc-core>=13.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=13.0
35
+ Requires-Dist: pyobjc-framework-Quartz>=13.0
36
36
  Dynamic: author
37
37
  Dynamic: author-email
38
38
  Dynamic: classifier
@@ -4,19 +4,22 @@ import objc
4
4
 
5
5
 
6
6
  class TestAVCaptureView(TestCase):
7
- def test_enum_types(self):
7
+ def test_enums(self):
8
8
  self.assertIsEnumType(AVKit.AVCaptureViewControlsStyle)
9
+ self.assertEqual(AVKit.AVCaptureViewControlsStyleInline, 0)
10
+ self.assertEqual(AVKit.AVCaptureViewControlsStyleFloating, 1)
11
+ self.assertEqual(AVKit.AVCaptureViewControlsStyleInlineDeviceSelection, 2)
12
+ self.assertEqual(
13
+ AVKit.AVCaptureViewControlsStyleDefault,
14
+ AVKit.AVCaptureViewControlsStyleInline,
15
+ )
9
16
 
10
17
  @min_os_level("10.10")
11
- def testClasses(self):
18
+ def test_classes(self):
12
19
  self.assertIsInstance(AVKit.AVCaptureView, objc.objc_class)
13
20
 
14
21
  @min_os_level("10.10")
15
- def testProtocols(self):
16
- self.assertProtocolExists("AVCaptureViewDelegate")
17
-
18
- @min_os_level("10.10")
19
- def testMethods(self):
22
+ def test_methods(self):
20
23
  self.assertArgIsBOOL(
21
24
  AVKit.AVCaptureView.setSession_showVideoPreview_showAudioPreview_, 1
22
25
  )
@@ -25,11 +28,5 @@ class TestAVCaptureView(TestCase):
25
28
  )
26
29
 
27
30
  @min_os_level("10.10")
28
- def test_constants(self):
29
- self.assertEqual(AVKit.AVCaptureViewControlsStyleInline, 0)
30
- self.assertEqual(AVKit.AVCaptureViewControlsStyleFloating, 1)
31
- self.assertEqual(AVKit.AVCaptureViewControlsStyleInlineDeviceSelection, 2)
32
- self.assertEqual(
33
- AVKit.AVCaptureViewControlsStyleDefault,
34
- AVKit.AVCaptureViewControlsStyleInline,
35
- )
31
+ def test_protocols(self):
32
+ self.assertProtocolExists("AVCaptureViewDelegate", AVKit)
@@ -4,7 +4,7 @@ import AVKit
4
4
 
5
5
 
6
6
  class TestAVKitTypes(TestCase):
7
- def test_constants(self):
7
+ def test_enums(self):
8
8
  self.assertIsEnumType(AVKit.AVVideoFrameAnalysisType)
9
9
  self.assertEqual(AVKit.AVVideoFrameAnalysisTypeNone, 0)
10
10
  self.assertEqual(AVKit.AVVideoFrameAnalysisTypeDefault, 1 << 0)
@@ -1,4 +1,4 @@
1
- from PyObjCTools.TestSupport import TestCase
1
+ from PyObjCTools.TestSupport import TestCase, min_sdk_level
2
2
  import AVKit
3
3
 
4
4
 
@@ -8,11 +8,7 @@ class TestAVLegibleMediaOptionsMenuControllerHelper(AVKit.NSObject):
8
8
 
9
9
 
10
10
  class TestAVLegibleMediaOptionsMenuController(TestCase):
11
- def test_enum(self):
12
- self.assertIsEnumType(AVKit.AVLegibleMediaOptionsMenuType)
13
- self.assertEqual(AVKit.AVLegibleMediaOptionsMenuTypeDefault, 0)
14
- self.assertEqual(AVKit.AVLegibleMediaOptionsMenuTypeCaptionAppearance, 1)
15
-
11
+ def test_enums(self):
16
12
  self.assertIsEnumType(AVKit.AVLegibleMediaOptionsMenuStateChangeReason)
17
13
  self.assertEqual(AVKit.AVLegibleMediaOptionsMenuStateChangeReasonNone, 0)
18
14
  self.assertEqual(
@@ -35,6 +31,10 @@ class TestAVLegibleMediaOptionsMenuController(TestCase):
35
31
  self.assertIs(v.enabled, False)
36
32
  self.assertEqual(v.reason, 0)
37
33
 
34
+ @min_sdk_level("26.4")
35
+ def test_protocols(self):
36
+ self.assertProtocolExists("AVLegibleMediaOptionsMenuControllerDelegate", AVKit)
37
+
38
38
  def test_protocol_methods(self):
39
39
  self.assertArgHasType(
40
40
  TestAVLegibleMediaOptionsMenuControllerHelper.legibleMenuController_didChangeMenuState_,
@@ -10,10 +10,6 @@ class TestAVPictureInPictureControllerHelper(AVKit.NSObject):
10
10
 
11
11
 
12
12
  class TestAVPictureInPictureController(TestCase):
13
- @min_sdk_level("10.15")
14
- def testProtocols(self):
15
- self.assertProtocolExists("AVPictureInPictureControllerDelegate")
16
-
17
13
  @min_os_level("10.15")
18
14
  def test_methods(self):
19
15
  self.assertResultIsBOOL(
@@ -29,12 +25,6 @@ class TestAVPictureInPictureController(TestCase):
29
25
  AVKit.AVPictureInPictureController.isPictureInPictureSuspended
30
26
  )
31
27
 
32
- self.assertArgIsBlock(
33
- TestAVPictureInPictureControllerHelper.pictureInPictureController_restoreUserInterfaceForPictureInPictureStopWithCompletionHandler_, # noqa: B950
34
- 1,
35
- b"vZ",
36
- )
37
-
38
28
  @min_os_level("11.0")
39
29
  def test_methods11_0(self):
40
30
  self.assertResultIsBOOL(
@@ -57,3 +47,14 @@ class TestAVPictureInPictureController(TestCase):
57
47
  AVKit.AVPictureInPictureController.setCanStartPictureInPictureAutomaticallyFromInline_,
58
48
  0,
59
49
  )
50
+
51
+ @min_sdk_level("10.15")
52
+ def test_protocols(self):
53
+ self.assertProtocolExists("AVPictureInPictureControllerDelegate", AVKit)
54
+
55
+ def test_protocol_methods(self):
56
+ self.assertArgIsBlock(
57
+ TestAVPictureInPictureControllerHelper.pictureInPictureController_restoreUserInterfaceForPictureInPictureStopWithCompletionHandler_, # noqa: B950
58
+ 1,
59
+ b"vZ",
60
+ )
@@ -26,10 +26,12 @@ class TestAVPictureInPictureController_AVSampleBufferDisplayLayerSupportHelper(
26
26
 
27
27
  class TestAVPictureInPictureController_AVSampleBufferDisplayLayerSupport(TestCase):
28
28
  @min_sdk_level("12.0")
29
- def testProtocols12_0(self):
30
- self.assertProtocolExists("AVPictureInPictureSampleBufferPlaybackDelegate")
29
+ def test_protocols12_0(self):
30
+ self.assertProtocolExists(
31
+ "AVPictureInPictureSampleBufferPlaybackDelegate", AVKit
32
+ )
31
33
 
32
- def test_methods(self):
34
+ def test_protocol_methods(self):
33
35
  self.assertArgIsBOOL(
34
36
  TestAVPictureInPictureController_AVSampleBufferDisplayLayerSupportHelper.pictureInPictureController_setPlaying_,
35
37
  1,
@@ -19,20 +19,23 @@ class TestAVPlayerViewHelper(AVKit.NSObject):
19
19
 
20
20
 
21
21
  class TestAVPlayerView(TestCase):
22
- def test_enum_types(self):
22
+ def test_enums(self):
23
23
  self.assertIsEnumType(AVKit.AVPlayerViewControlsStyle)
24
- self.assertIsEnumType(AVKit.AVPlayerViewTrimResult)
25
-
26
- @min_sdk_level("12.0")
27
- def test_protocols12_0(self):
28
- self.assertProtocolExists("AVPlayerViewDelegate")
24
+ self.assertEqual(AVKit.AVPlayerViewControlsStyleNone, 0)
25
+ self.assertEqual(AVKit.AVPlayerViewControlsStyleInline, 1)
26
+ self.assertEqual(AVKit.AVPlayerViewControlsStyleFloating, 2)
27
+ self.assertEqual(AVKit.AVPlayerViewControlsStyleMinimal, 3)
28
+ self.assertEqual(
29
+ AVKit.AVPlayerViewControlsStyleDefault,
30
+ AVKit.AVPlayerViewControlsStyleInline,
31
+ 4,
32
+ )
29
33
 
30
- @min_os_level("10.9")
31
- def testClasses(self):
32
- self.assertIsInstance(AVKit.AVPlayerView, objc.objc_class)
34
+ self.assertIsEnumType(AVKit.AVPlayerViewTrimResult)
35
+ self.assertEqual(AVKit.AVPlayerViewTrimOKButton, 0)
36
+ self.assertEqual(AVKit.AVPlayerViewTrimCancelButton, 1)
33
37
 
34
- @min_os_level("10.9")
35
- def testMethods10_9(self):
38
+ def test_methods(self):
36
39
  self.assertArgIsBOOL(AVKit.AVPlayerView.setShowsFrameSteppingButtons_, 0)
37
40
  self.assertResultIsBOOL(AVKit.AVPlayerView.showsFrameSteppingButtons)
38
41
  self.assertArgIsBOOL(AVKit.AVPlayerView.setShowsSharingServiceButton_, 0)
@@ -48,22 +51,39 @@ class TestAVPlayerView(TestCase):
48
51
  )
49
52
 
50
53
  @min_os_level("10.10")
51
- def testMethods10_10(self):
54
+ def test_methods10_10(self):
52
55
  self.assertResultIsBOOL(AVKit.AVPlayerView.isReadyForDisplay)
53
56
 
54
57
  @min_os_level("10.13")
55
- def testMethods10_13(self):
58
+ def test_methods10_13(self):
56
59
  self.assertArgIsBOOL(AVKit.AVPlayerView.setUpdatesNowPlayingInfoCenter_, 0)
57
60
  self.assertResultIsBOOL(AVKit.AVPlayerView.updatesNowPlayingInfoCenter)
58
61
 
59
62
  @min_os_level("10.15")
60
- def testMethods10_15(self):
63
+ def test_methods10_15(self):
61
64
  self.assertArgIsBOOL(AVKit.AVPlayerView.setShowsTimecodes_, 0)
62
65
  self.assertResultIsBOOL(AVKit.AVPlayerView.showsTimecodes)
63
66
 
64
67
  self.assertResultIsBOOL(AVKit.AVPlayerView.allowsPictureInPicturePlayback)
65
68
  self.assertArgIsBOOL(AVKit.AVPlayerView.setAllowsPictureInPicturePlayback_, 0)
66
69
 
70
+ @min_os_level("13.0")
71
+ def test_methods13_0(self):
72
+ self.assertResultIsBOOL(AVKit.AVPlayerView.allowsVideoFrameAnalysis)
73
+ self.assertArgIsBOOL(AVKit.AVPlayerView.setAllowsVideoFrameAnalysis_, 0)
74
+
75
+ self.assertResultIsBOOL(AVKit.AVPlayerView.allowsMagnification)
76
+ self.assertArgIsBOOL(AVKit.AVPlayerView.setAllowsMagnification_, 0)
77
+
78
+ @min_sdk_level("10.15")
79
+ def test_protocols(self):
80
+ self.assertProtocolExists("AVPlayerViewPictureInPictureDelegate", AVKit)
81
+
82
+ @min_sdk_level("12.0")
83
+ def test_protocols12_0(self):
84
+ self.assertProtocolExists("AVPlayerViewDelegate", AVKit)
85
+
86
+ def test_protocol_methods(self):
67
87
  self.assertArgIsBlock(
68
88
  TestAVPlayerViewHelper.playerView_restoreUserInterfaceForPictureInPictureStopWithCompletionHandler_, # noqa: B950
69
89
  1,
@@ -78,30 +98,3 @@ class TestAVPlayerView(TestCase):
78
98
  1,
79
99
  b"vZ",
80
100
  )
81
-
82
- @min_os_level("13.0")
83
- def testMethods13_0(self):
84
- self.assertResultIsBOOL(AVKit.AVPlayerView.allowsVideoFrameAnalysis)
85
- self.assertArgIsBOOL(AVKit.AVPlayerView.setAllowsVideoFrameAnalysis_, 0)
86
-
87
- self.assertResultIsBOOL(AVKit.AVPlayerView.allowsMagnification)
88
- self.assertArgIsBOOL(AVKit.AVPlayerView.setAllowsMagnification_, 0)
89
-
90
- @min_os_level("10.9")
91
- def test_constants(self):
92
- self.assertEqual(AVKit.AVPlayerViewControlsStyleNone, 0)
93
- self.assertEqual(AVKit.AVPlayerViewControlsStyleInline, 1)
94
- self.assertEqual(AVKit.AVPlayerViewControlsStyleFloating, 2)
95
- self.assertEqual(AVKit.AVPlayerViewControlsStyleMinimal, 3)
96
- self.assertEqual(
97
- AVKit.AVPlayerViewControlsStyleDefault,
98
- AVKit.AVPlayerViewControlsStyleInline,
99
- 4,
100
- )
101
-
102
- self.assertEqual(AVKit.AVPlayerViewTrimOKButton, 0)
103
- self.assertEqual(AVKit.AVPlayerViewTrimCancelButton, 1)
104
-
105
- @min_sdk_level("10.15")
106
- def test_protocols(self):
107
- self.assertProtocolExists("AVPlayerViewPictureInPictureDelegate")
@@ -3,7 +3,7 @@ import AVKit
3
3
 
4
4
 
5
5
  class TestAVRoutePickerView(TestCase):
6
- def test_constants(self):
6
+ def test_enums(self):
7
7
  self.assertIsEnumType(AVKit.AVRoutePickerViewButtonState)
8
8
  self.assertEqual(AVKit.AVRoutePickerViewButtonStateNormal, 0)
9
9
  self.assertEqual(AVKit.AVRoutePickerViewButtonStateNormalHighlighted, 1)
@@ -17,4 +17,4 @@ class TestAVRoutePickerView(TestCase):
17
17
 
18
18
  @min_sdk_level("10.15")
19
19
  def test_protocols(self):
20
- self.assertProtocolExists("AVRoutePickerViewDelegate")
20
+ self.assertProtocolExists("AVRoutePickerViewDelegate", AVKit)
@@ -2,13 +2,6 @@
2
2
  // for information on how to update this file.
3
3
  {
4
4
  "definitions": {
5
- "enum": {
6
- "AVRoutePickerViewButtonStateNormal": { "value": 0 },
7
- "AVRoutePickerViewButtonStateNormalHighlighted": { "value": 1 },
8
- "AVRoutePickerViewButtonStateActive": { "value": 2 },
9
- "AVRoutePickerViewButtonStateActiveHighlighted": { "value": 3 }
10
-
11
- },
12
5
  "classes": {
13
6
  "NSObject": {
14
7
  "methods": [
@@ -116,9 +109,6 @@
116
109
  }
117
110
  ]
118
111
  }
119
- },
120
- "formal_protocols": {},
121
- "functions": {},
122
- "informal_protocols": {}
112
+ }
123
113
  }
124
114
  }
@@ -1,7 +1,6 @@
1
1
  // GENERATED FILE DO NOT EDIT
2
2
  //
3
3
  // This file was generated by objective.metadata
4
- // Last update: Sun May 24 11:41:21 2026
5
4
  {
6
5
  "arch": "arm64",
7
6
  "definitions": {
@@ -2465,14 +2464,6 @@
2465
2464
  "enum": "AVLegibleMediaOptionsMenuStateChangeReason",
2466
2465
  "value": 0
2467
2466
  },
2468
- "AVLegibleMediaOptionsMenuTypeCaptionAppearance": {
2469
- "enum": "AVLegibleMediaOptionsMenuType",
2470
- "value": 1
2471
- },
2472
- "AVLegibleMediaOptionsMenuTypeDefault": {
2473
- "enum": "AVLegibleMediaOptionsMenuType",
2474
- "value": 0
2475
- },
2476
2467
  "AVPlayerViewControlsStyleDefault": {
2477
2468
  "enum": "AVPlayerViewControlsStyle",
2478
2469
  "value": 1
@@ -2567,9 +2558,6 @@
2567
2558
  "AVLegibleMediaOptionsMenuStateChangeReason": {
2568
2559
  "type": "q"
2569
2560
  },
2570
- "AVLegibleMediaOptionsMenuType": {
2571
- "type": "q"
2572
- },
2573
2561
  "AVPlayerViewControlsStyle": {
2574
2562
  "type": "q"
2575
2563
  },
@@ -3428,7 +3416,6 @@
3428
3416
  "AVLegibleMediaOptionsMenuContents": "enum AVLegibleMediaOptionsMenuContents",
3429
3417
  "AVLegibleMediaOptionsMenuState": "struct AVLegibleMediaOptionsMenuState",
3430
3418
  "AVLegibleMediaOptionsMenuStateChangeReason": "enum AVLegibleMediaOptionsMenuStateChangeReason",
3431
- "AVLegibleMediaOptionsMenuType": "enum AVLegibleMediaOptionsMenuType",
3432
3419
  "AVPlayerViewControlsStyle": "enum AVPlayerViewControlsStyle",
3433
3420
  "AVPlayerViewTrimResult": "enum AVPlayerViewTrimResult",
3434
3421
  "AVRoutePickerViewButtonState": "enum AVRoutePickerViewButtonState",
@@ -3449,6 +3436,6 @@
3449
3436
  "AVPlayerView.h",
3450
3437
  "AVRoutePickerView.h"
3451
3438
  ],
3452
- "release": "26.5",
3453
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
3439
+ "release": "macOS 27.2",
3440
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
3454
3441
  }
@@ -1,7 +1,6 @@
1
1
  // GENERATED FILE DO NOT EDIT
2
2
  //
3
3
  // This file was generated by objective.metadata
4
- // Last update: Sun May 24 11:41:17 2026
5
4
  {
6
5
  "arch": "x86_64",
7
6
  "definitions": {
@@ -2465,14 +2464,6 @@
2465
2464
  "enum": "AVLegibleMediaOptionsMenuStateChangeReason",
2466
2465
  "value": 0
2467
2466
  },
2468
- "AVLegibleMediaOptionsMenuTypeCaptionAppearance": {
2469
- "enum": "AVLegibleMediaOptionsMenuType",
2470
- "value": 1
2471
- },
2472
- "AVLegibleMediaOptionsMenuTypeDefault": {
2473
- "enum": "AVLegibleMediaOptionsMenuType",
2474
- "value": 0
2475
- },
2476
2467
  "AVPlayerViewControlsStyleDefault": {
2477
2468
  "enum": "AVPlayerViewControlsStyle",
2478
2469
  "value": 1
@@ -2567,9 +2558,6 @@
2567
2558
  "AVLegibleMediaOptionsMenuStateChangeReason": {
2568
2559
  "type": "q"
2569
2560
  },
2570
- "AVLegibleMediaOptionsMenuType": {
2571
- "type": "q"
2572
- },
2573
2561
  "AVPlayerViewControlsStyle": {
2574
2562
  "type": "q"
2575
2563
  },
@@ -3428,7 +3416,6 @@
3428
3416
  "AVLegibleMediaOptionsMenuContents": "enum AVLegibleMediaOptionsMenuContents",
3429
3417
  "AVLegibleMediaOptionsMenuState": "struct AVLegibleMediaOptionsMenuState",
3430
3418
  "AVLegibleMediaOptionsMenuStateChangeReason": "enum AVLegibleMediaOptionsMenuStateChangeReason",
3431
- "AVLegibleMediaOptionsMenuType": "enum AVLegibleMediaOptionsMenuType",
3432
3419
  "AVPlayerViewControlsStyle": "enum AVPlayerViewControlsStyle",
3433
3420
  "AVPlayerViewTrimResult": "enum AVPlayerViewTrimResult",
3434
3421
  "AVRoutePickerViewButtonState": "enum AVRoutePickerViewButtonState",
@@ -3449,6 +3436,6 @@
3449
3436
  "AVPlayerView.h",
3450
3437
  "AVRoutePickerView.h"
3451
3438
  ],
3452
- "release": "26.5",
3453
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
3439
+ "release": "macOS 27.2",
3440
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
3454
3441
  }
@@ -110,13 +110,11 @@ class oc_egg_info(egg_info.egg_info):
110
110
  else:
111
111
  sdk_version = os.path.basename(sdk_root)
112
112
 
113
- build_info = textwrap.dedent(
114
- f"""\
113
+ build_info = textwrap.dedent(f"""\
115
114
  macOS {macos_version} ({macos_build})
116
115
  {clang_version}
117
116
  SDK: {sdk_version}
118
- """
119
- )
117
+ """)
120
118
 
121
119
  self.write_file(
122
120
  "pyobjc-build-info.txt",
@@ -204,7 +202,7 @@ class oc_test(Command):
204
202
  "errors": len(result.errors),
205
203
  "xfails": len(getattr(result, "expectedFailures", [])),
206
204
  "xpass": len(getattr(result, "unexpectedSuccesses", [])),
207
- "skip=": len(getattr(result, "skipped", [])),
205
+ "skip": len(getattr(result, "skipped", [])),
208
206
  "testSeconds": (time_after - time_before),
209
207
  }
210
208
  print(f"SUMMARY: {summary}")
@@ -228,12 +226,12 @@ Operating System :: MacOS :: MacOS X
228
226
  Programming Language :: Python
229
227
  Programming Language :: Python :: 3
230
228
  Programming Language :: Python :: 3 :: Only
231
- Programming Language :: Python :: 3.10
232
229
  Programming Language :: Python :: 3.11
233
230
  Programming Language :: Python :: 3.12
234
231
  Programming Language :: Python :: 3.13
235
232
  Programming Language :: Python :: 3.14
236
233
  Programming Language :: Python :: 3.15
234
+ Programming Language :: Python :: 3.16
237
235
  Programming Language :: Python :: Implementation :: CPython
238
236
  Programming Language :: Python :: Free Threading :: 3 - Stable
239
237
  Programming Language :: Objective C
@@ -499,6 +497,8 @@ def Extension(*args, **kwds):
499
497
  "-DPyObjC_BUILD_RELEASE=%02d%02d"
500
498
  % (tuple(map(int, version.split(".")[:2])))
501
499
  )
500
+ ldflags.append("-isysroot")
501
+ ldflags.append(data)
502
502
  else:
503
503
  cflags.append(
504
504
  "-DPyObjC_BUILD_RELEASE=%02d%02d"
@@ -677,7 +677,7 @@ def setup(
677
677
  zip_safe=False,
678
678
  license="MIT",
679
679
  classifiers=CLASSIFIERS,
680
- python_requires=">=3.10",
680
+ python_requires=">=3.11",
681
681
  keywords=["PyObjC"] + [p for p in k["packages"] if p not in ("PyObjCTools",)],
682
682
  options=options,
683
683
  **k,
@@ -16,7 +16,7 @@ sys.path.insert(0, os.path.dirname(__file__))
16
16
 
17
17
  from pyobjc_setup import Extension, setup # noqa: E402
18
18
 
19
- VERSION = "12.2.2"
19
+ VERSION = "13.0"
20
20
 
21
21
  setup(
22
22
  name="pyobjc-framework-AVKit",
@@ -1,3 +0,0 @@
1
- macOS 26.6 (25G70)
2
- Apple clang version 21.0.0 (clang-2100.1.1.101)
3
- SDK: macOS 26.5
@@ -1,3 +0,0 @@
1
- pyobjc-core>=12.2.2
2
- pyobjc-framework-Cocoa>=12.2.2
3
- pyobjc-framework-Quartz>=12.2.2