pyobjc-framework-AudioVideoBridging 12.2.1__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 (38) hide show
  1. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/AudioVideoBridging/_metadata.py +5 -2
  2. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/pyobjc_framework_AudioVideoBridging.egg-info/PKG-INFO +5 -5
  3. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/pyobjc_framework_AudioVideoBridging.egg-info/SOURCES.txt +2 -2
  4. pyobjc_framework_audiovideobridging-13.0/Lib/pyobjc_framework_AudioVideoBridging.egg-info/pyobjc-build-info.txt +3 -0
  5. pyobjc_framework_audiovideobridging-13.0/Lib/pyobjc_framework_AudioVideoBridging.egg-info/requires.txt +2 -0
  6. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Modules/_AudioVideoBridging.m +10 -2
  7. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Modules/_AudioVideoBridging_protocols.m +6 -6
  8. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Modules/pyobjc-api.h +18 -4
  9. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Modules/pyobjc-compat.h +0 -18
  10. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PKG-INFO +5 -5
  11. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avb17221acmpinterface.py +3 -7
  12. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avb17221aecpinterface.py +11 -12
  13. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avb17221entity.py +2 -3
  14. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avb17221entitydiscovery.py +2 -3
  15. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avb17221entitydiscoverydelegate.py +3 -5
  16. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avbconstants.py +15 -16
  17. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/metadata/AudioVideoBridging.fwinfo +1 -57
  18. pyobjc_framework_audiovideobridging-12.2.1/metadata/raw/arm64-26.5.fwinfo → pyobjc_framework_audiovideobridging-13.0/metadata/raw/arm64-27.fwinfo +2 -3
  19. pyobjc_framework_audiovideobridging-12.2.1/metadata/raw/x86_64-26.5.fwinfo → pyobjc_framework_audiovideobridging-13.0/metadata/raw/x86_64-27.fwinfo +2 -3
  20. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/pyobjc_setup.py +7 -7
  21. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/setup.py +1 -1
  22. pyobjc_framework_audiovideobridging-12.2.1/Lib/pyobjc_framework_AudioVideoBridging.egg-info/pyobjc-build-info.txt +0 -3
  23. pyobjc_framework_audiovideobridging-12.2.1/Lib/pyobjc_framework_AudioVideoBridging.egg-info/requires.txt +0 -2
  24. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/AudioVideoBridging/__init__.py +0 -0
  25. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/pyobjc_framework_AudioVideoBridging.egg-info/dependency_links.txt +0 -0
  26. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/pyobjc_framework_AudioVideoBridging.egg-info/not-zip-safe +0 -0
  27. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/Lib/pyobjc_framework_AudioVideoBridging.egg-info/top_level.txt +0 -0
  28. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/License.txt +0 -0
  29. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/MANIFEST.in +0 -0
  30. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/__init__.py +0 -0
  31. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_audiovideobridging.py +0 -0
  32. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avbcentralmanager.py +0 -0
  33. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avbinterface.py +0 -0
  34. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avbipaddress.py +0 -0
  35. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/PyObjCTest/test_avbmacaddress.py +0 -0
  36. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/metadata/metadata.ini +0 -0
  37. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/pyproject.toml +0 -0
  38. {pyobjc_framework_audiovideobridging-12.2.1 → pyobjc_framework_audiovideobridging-13.0}/setup.cfg +0 -0
@@ -1,7 +1,5 @@
1
1
  # This file is generated by objective.metadata
2
2
  #
3
- # Last update: Sun May 24 11:42:30 2026
4
- #
5
3
  # flake8: noqa
6
4
 
7
5
  import objc, sys
@@ -321,5 +319,10 @@ expressions = {
321
319
  "kAVB17221EntityPropertyChangedShouldntChangeMask": "(AVB17221EntityPropertyChangedEntityID | AVB17221EntityPropertyChangedVendorID | AVB17221EntityPropertyChangedModelID | AVB17221EntityPropertyChangedTalkerStreamSources | AVB17221EntityPropertyChangedTalkerCapabilities | AVB17221EntityPropertyChangedListenerStreamSinks | AVB17221EntityPropertyChangedListenerCapabilities | AVB17221EntityPropertyChangedControllerCapabilities | AVB17221EntityPropertyChangedMACAddress | AVB17221EntityPropertyChangedAssociationID | AVB17221EntityPropertyChangedEntityType | AVB17221EntityPropertyChangedIdentifyControlIndex | AVB17221EntityPropertyChangedInterfaceIndex)",
322
320
  "kAVB17221EntityPropertyChangedCanChangeMask": "(AVB17221EntityPropertyChangedTimeToLive | AVB17221EntityPropertyChangedAvailableIndex | AVB17221EntityPropertyChangedGPTPGrandmasterID | AVB17221EntityPropertyChangedGPTPDomainNumber | AVB17221EntityPropertyChangedEntityCapabilities )",
323
321
  }
322
+ formal_protocols = {
323
+ "AVB17221ACMPClient": "AVB17221ACMPClient",
324
+ "AVB17221AECPClient": "AVB17221AECPClient",
325
+ "AVB17221EntityDiscoveryDelegate": "AVB17221EntityDiscoveryDelegate",
326
+ }
324
327
 
325
328
  # END OF FILE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-AudioVideoBridging
3
- Version: 12.2.1
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework AudioVideoBridging on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,21 +17,21 @@ 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.1
34
- Requires-Dist: pyobjc-framework-Cocoa>=12.2.1
33
+ Requires-Dist: pyobjc-core>=13.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=13.0
35
35
  Dynamic: author
36
36
  Dynamic: author-email
37
37
  Dynamic: classifier
@@ -30,5 +30,5 @@ PyObjCTest/test_avbipaddress.py
30
30
  PyObjCTest/test_avbmacaddress.py
31
31
  metadata/AudioVideoBridging.fwinfo
32
32
  metadata/metadata.ini
33
- metadata/raw/arm64-26.5.fwinfo
34
- metadata/raw/x86_64-26.5.fwinfo
33
+ metadata/raw/arm64-27.fwinfo
34
+ 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,2 @@
1
+ pyobjc-core>=13.0
2
+ pyobjc-framework-Cocoa>=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 <AudioVideoBridging/AudioVideoBridging.h>
6
10
  #import <Foundation/Foundation.h>
7
11
 
@@ -10,6 +14,8 @@
10
14
  */
11
15
  #include "_AudioVideoBridging_protocols.m"
12
16
 
17
+ NS_ASSUME_NONNULL_BEGIN
18
+
13
19
  static PyMethodDef mod_methods[] = {
14
20
  {0, 0, 0, 0} /* sentinel */
15
21
  };
@@ -55,10 +61,12 @@ static struct PyModuleDef mod_module = {
55
61
  .m_free = NULL,
56
62
  };
57
63
 
58
- PyObject* PyInit__AudioVideoBridging(void);
64
+ PyObject* _Nullable PyInit__AudioVideoBridging(void);
59
65
 
60
- PyObject* __attribute__((__visibility__("default")))
66
+ PyObject* _Nullable __attribute__((__visibility__("default")))
61
67
  PyInit__AudioVideoBridging(void)
62
68
  {
63
69
  return PyModuleDef_Init(&mod_module);
64
70
  }
71
+
72
+ NS_ASSUME_NONNULL_END
@@ -1,9 +1,7 @@
1
- /*
2
- * This file is generated by objective.metadata
3
- *
4
- * Last update: Wed Jan 16 13:10:52 2013
5
- */
6
-
1
+ // LCOV_EXCL_START
2
+ // This function is only present to ensure protocols are
3
+ // available at runtime.
4
+ NS_ASSUME_NONNULL_BEGIN
7
5
  static void __attribute__((__used__))
8
6
  use_protocols(void)
9
7
  {
@@ -13,3 +11,5 @@ use_protocols(void)
13
11
  p = PyObjC_IdToPython(@protocol(AVB17221EntityDiscoveryDelegate));
14
12
  Py_XDECREF(p);
15
13
  }
14
+ NS_ASSUME_NONNULL_END
15
+ // 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-AudioVideoBridging
3
- Version: 12.2.1
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework AudioVideoBridging on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,21 +17,21 @@ 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.1
34
- Requires-Dist: pyobjc-framework-Cocoa>=12.2.1
33
+ Requires-Dist: pyobjc-core>=13.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=13.0
35
35
  Dynamic: author
36
36
  Dynamic: author-email
37
37
  Dynamic: classifier
@@ -1,4 +1,4 @@
1
- from PyObjCTools.TestSupport import TestCase, min_os_level
1
+ from PyObjCTools.TestSupport import TestCase
2
2
  import AudioVideoBridging
3
3
 
4
4
  AVB17221ACMPInterfaceCompletion = b"v@@"
@@ -14,9 +14,9 @@ class TestAVB17221ACMPInterfaceHelper(AudioVideoBridging.NSObject):
14
14
 
15
15
  class TestAVB17221ACMPInterface(TestCase):
16
16
  def test_protocols(self):
17
- self.assertProtocolExists("AVB17221ACMPClient")
17
+ self.assertProtocolExists("AVB17221ACMPClient", AudioVideoBridging)
18
18
 
19
- def test_methods(self):
19
+ def test_protocol_methods(self):
20
20
  self.assertResultIsBOOL(
21
21
  TestAVB17221ACMPInterfaceHelper.ACMPDidReceiveCommand_onInterface_
22
22
  )
@@ -24,8 +24,6 @@ class TestAVB17221ACMPInterface(TestCase):
24
24
  TestAVB17221ACMPInterfaceHelper.ACMPDidReceiveResponse_onInterface_
25
25
  )
26
26
 
27
- @min_os_level("10.8")
28
- def test_methods10_8(self):
29
27
  self.assertResultIsBOOL(
30
28
  AudioVideoBridging.AVB17221ACMPInterface.sendACMPResponseMessage_error_
31
29
  )
@@ -42,8 +40,6 @@ class TestAVB17221ACMPInterface(TestCase):
42
40
  AVB17221ACMPInterfaceCompletion,
43
41
  )
44
42
 
45
- @min_os_level("10.9")
46
- def test_methods10_9(self):
47
43
  self.assertResultIsBOOL(
48
44
  AudioVideoBridging.AVB17221ACMPInterface.setHandler_forEntityID_
49
45
  )
@@ -13,19 +13,7 @@ class TestAVB17221AECPInterfaceHelper(AudioVideoBridging.NSObject):
13
13
 
14
14
 
15
15
  class TestAVB17221AECPInterface(TestCase):
16
- def test_protocols(self):
17
- self.assertProtocolExists("AVB17221AECPClient")
18
-
19
16
  def test_methods(self):
20
- self.assertResultIsBOOL(
21
- TestAVB17221AECPInterfaceHelper.AECPDidReceiveCommand_onInterface_
22
- )
23
- self.assertResultIsBOOL(
24
- TestAVB17221AECPInterfaceHelper.AECPDidReceiveResponse_onInterface_
25
- )
26
-
27
- @min_os_level("10.8")
28
- def test_methods10_8(self):
29
17
  self.assertResultIsBOOL(
30
18
  AudioVideoBridging.AVB17221AECPInterface.sendCommand_toMACAddress_completionHandler_
31
19
  )
@@ -64,3 +52,14 @@ class TestAVB17221AECPInterface(TestCase):
64
52
  3,
65
53
  AVB17221AECPInterfaceCompletion,
66
54
  )
55
+
56
+ def test_protocols(self):
57
+ self.assertProtocolExists("AVB17221AECPClient", AudioVideoBridging)
58
+
59
+ def test_protocol_methods(self):
60
+ self.assertResultIsBOOL(
61
+ TestAVB17221AECPInterfaceHelper.AECPDidReceiveCommand_onInterface_
62
+ )
63
+ self.assertResultIsBOOL(
64
+ TestAVB17221AECPInterfaceHelper.AECPDidReceiveResponse_onInterface_
65
+ )
@@ -1,9 +1,8 @@
1
- from PyObjCTools.TestSupport import TestCase, min_os_level
1
+ from PyObjCTools.TestSupport import TestCase
2
2
  import AudioVideoBridging
3
3
 
4
4
 
5
5
  class TestAVB17221Entity(TestCase):
6
- @min_os_level("10.8")
7
- def test_methods10_8(self):
6
+ def test_methods(self):
8
7
  self.assertResultIsBOOL(AudioVideoBridging.AVB17221Entity.isLocalEntity)
9
8
  self.assertArgIsBOOL(AudioVideoBridging.AVB17221Entity.setLocalEntity_, 0)
@@ -1,10 +1,9 @@
1
- from PyObjCTools.TestSupport import TestCase, min_os_level
1
+ from PyObjCTools.TestSupport import TestCase
2
2
  import AudioVideoBridging
3
3
 
4
4
 
5
5
  class TestAVB17221EntityDiscovery(TestCase):
6
- @min_os_level("10.8")
7
- def test_methods10_8(self):
6
+ def test_methods(self):
8
7
  self.assertResultIsBOOL(
9
8
  AudioVideoBridging.AVB17221EntityDiscovery.discoverEntities
10
9
  )
@@ -12,10 +12,8 @@ class TestAVB17221EntityDiscoveryDelegateHelper(AudioVideoBridging.NSObject):
12
12
 
13
13
 
14
14
  class TestAVB17221EntityDiscoveryDelegate(TestCase):
15
- def test_enum_types(self):
15
+ def test_enums(self):
16
16
  self.assertIsEnumType(AudioVideoBridging.AVB17221EntityPropertyChanged)
17
-
18
- def test_constants(self):
19
17
  self.assertEqual(
20
18
  AudioVideoBridging.AVB17221EntityPropertyChangedTimeToLive, 0x00000001
21
19
  )
@@ -116,9 +114,9 @@ class TestAVB17221EntityDiscoveryDelegate(TestCase):
116
114
  )
117
115
 
118
116
  def test_protocols(self):
119
- self.assertProtocolExists("AVB17221EntityDiscoveryDelegate")
117
+ self.assertProtocolExists("AVB17221EntityDiscoveryDelegate", AudioVideoBridging)
120
118
 
121
- def test_methods(self):
119
+ def test_protocol_methods(self):
122
120
  self.assertArgHasType(
123
121
  TestAVB17221EntityDiscoveryDelegateHelper.didUpdateRemoteEntity_changedProperties_on17221EntityDiscovery_,
124
122
  1,
@@ -3,23 +3,8 @@ import AudioVideoBridging
3
3
 
4
4
 
5
5
  class TestAVBConstants(TestCase):
6
- def test_enum_types(self):
7
- self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPFlags)
8
- self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPMessageType)
9
- self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPStatusCode)
10
- self.assertIsEnumType(AudioVideoBridging.AVB17221ADPControllerCapabilities)
6
+ def test_enums(self):
11
7
  self.assertIsEnumType(AudioVideoBridging.AVB17221ADPEntityCapabilities)
12
- self.assertIsEnumType(AudioVideoBridging.AVB17221ADPListenerCapabilities)
13
- self.assertIsEnumType(AudioVideoBridging.AVB17221ADPTalkerCapabilities)
14
- self.assertIsEnumType(AudioVideoBridging.AVB17221AECPAddressAccessTLVMode)
15
- self.assertIsEnumType(AudioVideoBridging.AVB17221AECPMessageType)
16
- self.assertIsEnumType(AudioVideoBridging.AVB17221AECPStatusCode)
17
- self.assertIsEnumType(AudioVideoBridging.AVB17221AEMCommandType)
18
- self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPIPFlag)
19
-
20
- def test_constants(self):
21
- self.assertIsInstance(AudioVideoBridging.AVBErrorDomain, str)
22
-
23
8
  self.assertEqual(
24
9
  AudioVideoBridging.AVB17221ADPEntityCapabilitiesDFUMode, 0x00000001
25
10
  )
@@ -119,6 +104,7 @@ class TestAVBConstants(TestCase):
119
104
  0x01000000,
120
105
  )
121
106
 
107
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ADPTalkerCapabilities)
122
108
  self.assertEqual(
123
109
  AudioVideoBridging.AVB17221ADPTalkerCapabilitiesImplemented, 0x0001
124
110
  )
@@ -144,6 +130,7 @@ class TestAVBConstants(TestCase):
144
130
  AudioVideoBridging.AVB17221ADPTalkerCapabilitiesHasVideoSource, 0x8000
145
131
  )
146
132
 
133
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ADPListenerCapabilities)
147
134
  self.assertEqual(
148
135
  AudioVideoBridging.AVB17221ADPListenerCapabilitiesImplemented, 0x0001
149
136
  )
@@ -169,6 +156,7 @@ class TestAVBConstants(TestCase):
169
156
  AudioVideoBridging.AVB17221ADPListenerCapabilitiesHasVideoSink, 0x8000
170
157
  )
171
158
 
159
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ADPControllerCapabilities)
172
160
  self.assertEqual(
173
161
  AudioVideoBridging.AVB17221ADPControllerCapabilitiesImplemented, 0x00000001
174
162
  )
@@ -177,6 +165,7 @@ class TestAVBConstants(TestCase):
177
165
  0x00000002,
178
166
  )
179
167
 
168
+ self.assertIsEnumType(AudioVideoBridging.AVB17221AECPMessageType)
180
169
  self.assertEqual(AudioVideoBridging.AVB17221AECPMessageTypeAEMCommand, 0x0)
181
170
  self.assertEqual(AudioVideoBridging.AVB17221AECPMessageTypeAEMResponse, 0x1)
182
171
  self.assertEqual(
@@ -198,6 +187,7 @@ class TestAVBConstants(TestCase):
198
187
  AudioVideoBridging.AVB17221AECPMessageTypeVendorUniqueResponse, 0x7
199
188
  )
200
189
 
190
+ self.assertIsEnumType(AudioVideoBridging.AVB17221AECPStatusCode)
201
191
  self.assertEqual(AudioVideoBridging.AVB17221AECPStatusSuccess, 0x00)
202
192
  self.assertEqual(AudioVideoBridging.AVB17221AECPStatusNotImplemented, 0x01)
203
193
  self.assertEqual(AudioVideoBridging.AVB17221AECPStatusNoSuchDescriptor, 0x02)
@@ -233,6 +223,7 @@ class TestAVBConstants(TestCase):
233
223
  )
234
224
  self.assertEqual(AudioVideoBridging.AVB17221AECPStatusAVCFailure, 0x02)
235
225
 
226
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPMessageType)
236
227
  self.assertEqual(
237
228
  AudioVideoBridging.AVB17221ACMPMessageTypeConnectTXCommand, 0x0
238
229
  )
@@ -276,6 +267,7 @@ class TestAVBConstants(TestCase):
276
267
  AudioVideoBridging.AVB17221ACMPMessageTypeGetTXConnectionResponse, 0xD
277
268
  )
278
269
 
270
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPStatusCode)
279
271
  self.assertEqual(AudioVideoBridging.AVB17221ACMPStatusSuccess, 0x00)
280
272
  self.assertEqual(AudioVideoBridging.AVB17221ACMPStatusListenerUnknownID, 0x01)
281
273
  self.assertEqual(AudioVideoBridging.AVB17221ACMPStatusTalkerUnknownID, 0x02)
@@ -306,6 +298,7 @@ class TestAVBConstants(TestCase):
306
298
  )
307
299
  self.assertEqual(AudioVideoBridging.AVB17221ACMPStatusNotSupported, 0x1F)
308
300
 
301
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPFlags)
309
302
  self.assertEqual(AudioVideoBridging.AVB17221ACMPFlagsNone, 0x0000)
310
303
  self.assertEqual(AudioVideoBridging.AVB17221ACMPFlagsClassB, 0x0001)
311
304
  self.assertEqual(AudioVideoBridging.AVB17221ACMPFlagsFastConnect, 0x0002)
@@ -325,6 +318,7 @@ class TestAVBConstants(TestCase):
325
318
  )
326
319
  self.assertEqual(AudioVideoBridging.AVB17221ACMPFlagsStreamingUsingUDP, 0x0200)
327
320
 
321
+ self.assertIsEnumType(AudioVideoBridging.AVB17221AEMCommandType)
328
322
  self.assertEqual(AudioVideoBridging.AVB17221AEMCommandTypeAcquireEntity, 0x0000)
329
323
  self.assertEqual(AudioVideoBridging.AVB17221AEMCommandTypeLockEntity, 0x0001)
330
324
  self.assertEqual(
@@ -639,10 +633,15 @@ class TestAVBConstants(TestCase):
639
633
  AudioVideoBridging.AVB17221AEMCommandTypeAuthenticationAddKeyNonce, 0x0068
640
634
  )
641
635
 
636
+ self.assertIsEnumType(AudioVideoBridging.AVB17221AECPAddressAccessTLVMode)
642
637
  self.assertEqual(AudioVideoBridging.AVB17221AECPAddressAccessTLVModeRead, 0x00)
643
638
  self.assertEqual(AudioVideoBridging.AVB17221AECPAddressAccessTLVModeWrite, 0x01)
644
639
  self.assertEqual(
645
640
  AudioVideoBridging.AVB17221AECPAddressAccessTLVModeExecute, 0x02
646
641
  )
647
642
 
643
+ self.assertIsEnumType(AudioVideoBridging.AVB17221ACMPIPFlag)
648
644
  self.assertEqual(AudioVideoBridging.AVB17221ACMPIPFlagNone, 0x0000)
645
+
646
+ def test_constants(self):
647
+ self.assertIsInstance(AudioVideoBridging.AVBErrorDomain, str)
@@ -38,59 +38,6 @@
38
38
  },
39
39
  "class_method": false,
40
40
  "selector": "initWithIPv6Address:"
41
- },
42
- {
43
- "args": {
44
- "1": {
45
- "type_modifier": "o"
46
- }
47
- },
48
- "class_method": false,
49
- "selector": "sendACMPResponseMessage:error:"
50
- }
51
- ]
52
- },
53
- "AVB17221AECPInterface": {
54
- "methods": [
55
- {
56
- "args": {
57
- "2": {
58
- "type_modifier": "o"
59
- }
60
- },
61
- "class_method": false,
62
- "selector": "sendResponse:toMACAddress:error:"
63
- }
64
- ]
65
- },
66
- "AVB17221EntityDiscovery": {
67
- "methods": [
68
- {
69
- "args": {
70
- "1": {
71
- "type_modifier": "o"
72
- }
73
- },
74
- "class_method": false,
75
- "selector": "addLocalEntity:error:"
76
- },
77
- {
78
- "args": {
79
- "1": {
80
- "type_modifier": "o"
81
- }
82
- },
83
- "class_method": false,
84
- "selector": "removeLocalEntity:error:"
85
- },
86
- {
87
- "args": {
88
- "2": {
89
- "type_modifier": "o"
90
- }
91
- },
92
- "class_method": false,
93
- "selector": "changeEntityWithEntityID:toNewGPTPGrandmasterID:error:"
94
41
  }
95
42
  ]
96
43
  },
@@ -119,9 +66,6 @@
119
66
  }
120
67
  ]
121
68
  }
122
- },
123
- "formal_protocols": {},
124
- "functions": {},
125
- "informal_protocols": {}
69
+ }
126
70
  }
127
71
  }
@@ -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:42:29 2026
5
4
  {
6
5
  "arch": "arm64",
7
6
  "definitions": {
@@ -5601,6 +5600,6 @@
5601
5600
  "AVBInterface.h",
5602
5601
  "AVBMACAddress.h"
5603
5602
  ],
5604
- "release": "26.5",
5605
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
5603
+ "release": "macOS 27.2",
5604
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
5606
5605
  }
@@ -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:42:27 2026
5
4
  {
6
5
  "arch": "x86_64",
7
6
  "definitions": {
@@ -5601,6 +5600,6 @@
5601
5600
  "AVBInterface.h",
5602
5601
  "AVBMACAddress.h"
5603
5602
  ],
5604
- "release": "26.5",
5605
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
5603
+ "release": "macOS 27.2",
5604
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
5606
5605
  }
@@ -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,
@@ -15,7 +15,7 @@ sys.path.insert(0, os.path.dirname(__file__))
15
15
 
16
16
  from pyobjc_setup import setup, Extension # noqa: E402
17
17
 
18
- VERSION = "12.2.1"
18
+ VERSION = "13.0"
19
19
 
20
20
  setup(
21
21
  name="pyobjc-framework-AudioVideoBridging",
@@ -1,3 +0,0 @@
1
- macOS 26.5 (25F71)
2
- Apple clang version 21.0.0 (clang-2100.1.1.101)
3
- SDK: macOS 26.5
@@ -1,2 +0,0 @@
1
- pyobjc-core>=12.2.1
2
- pyobjc-framework-Cocoa>=12.2.1