pyobjc-framework-CoreAudio 12.2.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.
Files changed (45) hide show
  1. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/PKG-INFO +3 -3
  2. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/SOURCES.txt +1 -1
  3. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/pyobjc-build-info.txt +1 -1
  4. pyobjc_framework_coreaudio-12.2.2/Lib/pyobjc_framework_CoreAudio.egg-info/requires.txt +2 -0
  5. pyobjc_framework_coreaudio-12.2.2/Modules/_CoreAudio_inlines.m +159 -0
  6. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PKG-INFO +3 -3
  7. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/setup.py +2 -9
  8. pyobjc_framework_coreaudio-12.2.1/Lib/pyobjc_framework_CoreAudio.egg-info/requires.txt +0 -2
  9. pyobjc_framework_coreaudio-12.2.1/Modules/_CoreAudio_inlines.mm +0 -83
  10. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/CoreAudio/__init__.py +0 -0
  11. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/CoreAudio/_metadata.py +0 -0
  12. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/dependency_links.txt +0 -0
  13. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/not-zip-safe +0 -0
  14. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Lib/pyobjc_framework_CoreAudio.egg-info/top_level.txt +0 -0
  15. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/License.txt +0 -0
  16. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/MANIFEST.in +0 -0
  17. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio.m +0 -0
  18. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio_AudioBuffer.m +0 -0
  19. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio_AudioBufferList.m +0 -0
  20. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio_AudioChannelDescription.m +0 -0
  21. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio_AudioChannelLayout.m +0 -0
  22. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/_CoreAudio_AudioValueTranslation.m +0 -0
  23. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/pyobjc-api.h +0 -0
  24. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/Modules/pyobjc-compat.h +0 -0
  25. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/__init__.py +0 -0
  26. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_audiodriverplugin.py +0 -0
  27. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_audiohardware.py +0 -0
  28. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_audiohardwarebase.py +0 -0
  29. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_audiohardwaredeprecated.py +0 -0
  30. /pyobjc_framework_coreaudio-12.2.1/PyObjCTest/test_audiohardwareplugin.py → /pyobjc_framework_coreaudio-12.2.2/PyObjCTest/test_audiohardwareplugIn.py +0 -0
  31. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_audiohardwaretapping.py +0 -0
  32. /pyobjc_framework_coreaudio-12.2.1/PyObjCTest/test_audioserverplugin.py → /pyobjc_framework_coreaudio-12.2.2/PyObjCTest/test_audioserverplugIn.py +0 -0
  33. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_catapdescription.py +0 -0
  34. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_coreaudio.py +0 -0
  35. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_coreaudiotypes.py +0 -0
  36. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_coreaudiotypes_audiosessiontypes.py +0 -0
  37. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_coreaudiotypes_coreaudiobasetypes.py +0 -0
  38. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/PyObjCTest/test_hosttime.py +0 -0
  39. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/metadata/CoreAudio.fwinfo +0 -0
  40. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/metadata/metadata.ini +0 -0
  41. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/metadata/raw/arm64-26.5.fwinfo +0 -0
  42. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/metadata/raw/x86_64-26.5.fwinfo +0 -0
  43. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/pyobjc_setup.py +0 -0
  44. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/pyproject.toml +0 -0
  45. {pyobjc_framework_coreaudio-12.2.1 → pyobjc_framework_coreaudio-12.2.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-CoreAudio
3
- Version: 12.2.1
3
+ Version: 12.2.2
4
4
  Summary: Wrappers for the framework CoreAudio on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -30,8 +30,8 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Classifier: Topic :: Software Development :: User Interfaces
31
31
  Requires-Python: >=3.10
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>=12.2.2
34
+ Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
35
35
  Dynamic: author
36
36
  Dynamic: author-email
37
37
  Dynamic: classifier
@@ -18,7 +18,7 @@ Modules/_CoreAudio_AudioBufferList.m
18
18
  Modules/_CoreAudio_AudioChannelDescription.m
19
19
  Modules/_CoreAudio_AudioChannelLayout.m
20
20
  Modules/_CoreAudio_AudioValueTranslation.m
21
- Modules/_CoreAudio_inlines.mm
21
+ Modules/_CoreAudio_inlines.m
22
22
  Modules/pyobjc-api.h
23
23
  Modules/pyobjc-compat.h
24
24
  PyObjCTest/__init__.py
@@ -1,3 +1,3 @@
1
- macOS 26.5 (25F71)
1
+ macOS 26.6 (25G70)
2
2
  Apple clang version 21.0.0 (clang-2100.1.1.101)
3
3
  SDK: macOS 26.5
@@ -0,0 +1,2 @@
1
+ pyobjc-core>=12.2.2
2
+ pyobjc-framework-Cocoa>=12.2.2
@@ -0,0 +1,159 @@
1
+ #define PY_SSIZE_T_CLEAN
2
+ #include "Python.h"
3
+ #include "pyobjc-api.h"
4
+
5
+ #import <CoreAudio/CoreAudio.h>
6
+
7
+ /* This functions are copies of the definition in the CoreAudio headers,
8
+ * with minor tweaks to make them valid C instead of C++.
9
+ *
10
+ * Copy was introduced to be able to build wheels targeting older macOS
11
+ * versions using Xcode 27.
12
+ */
13
+ static bool
14
+ IsAudioFormatNativeEndian(const AudioStreamBasicDescription* f)
15
+ {
16
+ return (f->mFormatID == kAudioFormatLinearPCM)
17
+ && ((f->mFormatFlags & kAudioFormatFlagIsBigEndian)
18
+ == kAudioFormatFlagsNativeEndian);
19
+ }
20
+
21
+ static AudioFormatFlags
22
+ CalculateLPCMFlags(UInt32 inValidBitsPerChannel, UInt32 inTotalBitsPerChannel,
23
+ bool inIsFloat, bool inIsBigEndian, bool inIsNonInterleaved)
24
+ {
25
+ return (inIsFloat ? kAudioFormatFlagIsFloat : kAudioFormatFlagIsSignedInteger)
26
+ | (inIsBigEndian ? ((UInt32)kAudioFormatFlagIsBigEndian) : 0)
27
+ | ((inValidBitsPerChannel == inTotalBitsPerChannel)
28
+ ? kAudioFormatFlagIsPacked
29
+ : kAudioFormatFlagIsAlignedHigh)
30
+ | (inIsNonInterleaved ? ((UInt32)kAudioFormatFlagIsNonInterleaved) : 0);
31
+ }
32
+
33
+ static void
34
+ FillOutASBDForLPCM(AudioStreamBasicDescription* outASBD, Float64 inSampleRate,
35
+ UInt32 inChannelsPerFrame, UInt32 inValidBitsPerChannel,
36
+ UInt32 inTotalBitsPerChannel, bool inIsFloat, bool inIsBigEndian,
37
+ bool inIsNonInterleaved)
38
+ {
39
+ outASBD->mSampleRate = inSampleRate;
40
+ outASBD->mFormatID = kAudioFormatLinearPCM;
41
+ outASBD->mFormatFlags =
42
+ CalculateLPCMFlags(inValidBitsPerChannel, inTotalBitsPerChannel, inIsFloat,
43
+ inIsBigEndian, inIsNonInterleaved);
44
+ outASBD->mBytesPerPacket =
45
+ (inIsNonInterleaved ? 1 : inChannelsPerFrame) * (inTotalBitsPerChannel / 8);
46
+ outASBD->mFramesPerPacket = 1;
47
+ outASBD->mBytesPerFrame =
48
+ (inIsNonInterleaved ? 1 : inChannelsPerFrame) * (inTotalBitsPerChannel / 8);
49
+ outASBD->mChannelsPerFrame = inChannelsPerFrame;
50
+ outASBD->mBitsPerChannel = inValidBitsPerChannel;
51
+ }
52
+
53
+ static void
54
+ FillOutAudioTimeStampWithSampleTime(AudioTimeStamp* outATS, Float64 inSampleTime)
55
+ {
56
+ outATS->mSampleTime = inSampleTime;
57
+ outATS->mHostTime = 0;
58
+ outATS->mRateScalar = 0;
59
+ outATS->mWordClockTime = 0;
60
+ memset(&(outATS->mSMPTETime), 0, sizeof(SMPTETime));
61
+ outATS->mFlags = kAudioTimeStampSampleTimeValid;
62
+ }
63
+
64
+ static void
65
+ FillOutAudioTimeStampWithHostTime(AudioTimeStamp* outATS, UInt64 inHostTime)
66
+ {
67
+ outATS->mSampleTime = 0;
68
+ outATS->mHostTime = inHostTime;
69
+ outATS->mRateScalar = 0;
70
+ outATS->mWordClockTime = 0;
71
+ memset(&(outATS->mSMPTETime), 0, sizeof(SMPTETime));
72
+ outATS->mFlags = kAudioTimeStampHostTimeValid;
73
+ }
74
+
75
+ static void
76
+ FillOutAudioTimeStampWithSampleAndHostTime(AudioTimeStamp* outATS, Float64 inSampleTime,
77
+ UInt64 inHostTime)
78
+ {
79
+ outATS->mSampleTime = inSampleTime;
80
+ outATS->mHostTime = inHostTime;
81
+ outATS->mRateScalar = 0;
82
+ outATS->mWordClockTime = 0;
83
+ memset(&(outATS->mSMPTETime), 0, sizeof(SMPTETime));
84
+ outATS->mFlags = kAudioTimeStampSampleTimeValid | kAudioTimeStampHostTimeValid;
85
+ }
86
+
87
+ static PyObjC_function_map function_map[] = {
88
+ {"IsAudioFormatNativeEndian", (PyObjC_Function_Pointer)&IsAudioFormatNativeEndian},
89
+ {"CalculateLPCMFlags", (PyObjC_Function_Pointer)&CalculateLPCMFlags},
90
+ {"FillOutASBDForLPCM", (PyObjC_Function_Pointer)&FillOutASBDForLPCM},
91
+ {"FillOutAudioTimeStampWithSampleTime",
92
+ (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithSampleTime},
93
+ {"FillOutAudioTimeStampWithHostTime",
94
+ (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithHostTime},
95
+ {"FillOutAudioTimeStampWithSampleAndHostTime",
96
+ (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithSampleAndHostTime},
97
+ #if PyObjC_BUILD_RELEASE >= 1011
98
+ {"AudioChannelLayoutTag_GetNumberOfChannels",
99
+ (PyObjC_Function_Pointer)&AudioChannelLayoutTag_GetNumberOfChannels},
100
+ #endif
101
+ {0, 0}};
102
+
103
+ static PyMethodDef mod_methods[] = {
104
+ {0, 0, 0, 0} /* sentinel */
105
+ };
106
+
107
+ static int
108
+ mod_exec_module(PyObject* m)
109
+ {
110
+ if (PyModule_AddObject(m, "_inline_list_", PyObjC_CreateInlineTab(function_map))
111
+ < 0) { // LCOV_BR_EXCL_LINE
112
+ return -1; // LCOV_EXCL_LINE
113
+ }
114
+
115
+ return 0;
116
+ }
117
+
118
+ static struct PyModuleDef_Slot mod_slots[] = {
119
+ {.slot = Py_mod_exec, .value = (void*)mod_exec_module},
120
+ #if PY_VERSION_HEX >= 0x030c0000
121
+ {
122
+ /* This extension does not use the CPython API other than initializing
123
+ * the module, hence is safe with subinterpreters and per-interpreter
124
+ * GILs
125
+ */
126
+ .slot = Py_mod_multiple_interpreters,
127
+ .value = Py_MOD_PER_INTERPRETER_GIL_SUPPORTED,
128
+ },
129
+ #endif
130
+ #if PY_VERSION_HEX >= 0x030d0000
131
+ {
132
+ /* The code in this extension should be safe to use without the GIL */
133
+ .slot = Py_mod_gil,
134
+ .value = Py_MOD_GIL_NOT_USED,
135
+ },
136
+ #endif
137
+ {/* Sentinel */
138
+ .slot = 0,
139
+ .value = 0}};
140
+
141
+ static struct PyModuleDef mod_module = {
142
+ .m_base = PyModuleDef_HEAD_INIT,
143
+ .m_name = "_inlines",
144
+ .m_doc = NULL,
145
+ .m_size = 0,
146
+ .m_methods = mod_methods,
147
+ .m_slots = mod_slots,
148
+ .m_traverse = NULL,
149
+ .m_clear = NULL,
150
+ .m_free = NULL,
151
+ };
152
+
153
+ PyObject* PyInit__inlines(void);
154
+
155
+ PyObject* __attribute__((__visibility__("default")))
156
+ PyInit__inlines(void)
157
+ {
158
+ return PyModuleDef_Init(&mod_module);
159
+ }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-CoreAudio
3
- Version: 12.2.1
3
+ Version: 12.2.2
4
4
  Summary: Wrappers for the framework CoreAudio on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -30,8 +30,8 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
30
  Classifier: Topic :: Software Development :: User Interfaces
31
31
  Requires-Python: >=3.10
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>=12.2.2
34
+ Requires-Dist: pyobjc-framework-Cocoa>=12.2.2
35
35
  Dynamic: author
36
36
  Dynamic: author-email
37
37
  Dynamic: classifier
@@ -7,10 +7,6 @@ for general tips and tricks regarding the translation between Python
7
7
  and (Objective-)C frameworks
8
8
  """
9
9
 
10
- #
11
- # Distutils doesn't understand '.mm' as an extension
12
- #
13
- import distutils.unixccompiler
14
10
  import os
15
11
  import sys
16
12
 
@@ -19,10 +15,7 @@ sys.path.insert(0, os.path.dirname(__file__))
19
15
 
20
16
  from pyobjc_setup import Extension, setup # noqa: E402
21
17
 
22
- VERSION = "12.2.1"
23
-
24
-
25
- distutils.unixccompiler.UnixCCompiler.src_extensions.append(".mm")
18
+ VERSION = "12.2.2"
26
19
 
27
20
  setup(
28
21
  name="pyobjc-framework-CoreAudio",
@@ -31,7 +24,7 @@ setup(
31
24
  ext_modules=[
32
25
  Extension(
33
26
  "CoreAudio._inlines",
34
- ["Modules/_CoreAudio_inlines.mm"],
27
+ ["Modules/_CoreAudio_inlines.m"],
35
28
  extra_link_args=["-framework", "CoreAudio"],
36
29
  ),
37
30
  Extension(
@@ -1,2 +0,0 @@
1
- pyobjc-core>=12.2.1
2
- pyobjc-framework-Cocoa>=12.2.1
@@ -1,83 +0,0 @@
1
- #define PY_SSIZE_T_CLEAN
2
- #include "Python.h"
3
- #include "pyobjc-api.h"
4
-
5
- #import <CoreAudio/CoreAudio.h>
6
-
7
- extern "C" {
8
-
9
- static PyObjC_function_map function_map[] = {
10
- {"IsAudioFormatNativeEndian", (PyObjC_Function_Pointer)&IsAudioFormatNativeEndian},
11
- {"CalculateLPCMFlags", (PyObjC_Function_Pointer)&CalculateLPCMFlags},
12
- {"FillOutASBDForLPCM", (PyObjC_Function_Pointer)&FillOutASBDForLPCM},
13
- {"FillOutAudioTimeStampWithSampleTime",
14
- (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithSampleTime},
15
- {"FillOutAudioTimeStampWithHostTime",
16
- (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithHostTime},
17
- {"FillOutAudioTimeStampWithSampleAndHostTime",
18
- (PyObjC_Function_Pointer)&FillOutAudioTimeStampWithSampleAndHostTime},
19
- #if PyObjC_BUILD_RELEASE >= 1011
20
- {"AudioChannelLayoutTag_GetNumberOfChannels",
21
- (PyObjC_Function_Pointer)&AudioChannelLayoutTag_GetNumberOfChannels},
22
- #endif
23
- {0, 0}};
24
-
25
- static PyMethodDef mod_methods[] = {
26
- {0, 0, 0, 0} /* sentinel */
27
- };
28
-
29
- static int
30
- mod_exec_module(PyObject* m)
31
- {
32
- if (PyModule_AddObject(m, "_inline_list_", PyObjC_CreateInlineTab(function_map))
33
- < 0) {
34
- return -1;
35
- }
36
-
37
- return 0;
38
- }
39
-
40
- static struct PyModuleDef_Slot mod_slots[] = {
41
- {.slot = Py_mod_exec, .value = (void*)mod_exec_module},
42
- #if PY_VERSION_HEX >= 0x030c0000
43
- {
44
- /* This extension does not use the CPython API other than initializing
45
- * the module, hence is safe with subinterpreters and per-interpreter
46
- * GILs
47
- */
48
- .slot = Py_mod_multiple_interpreters,
49
- .value = Py_MOD_PER_INTERPRETER_GIL_SUPPORTED,
50
- },
51
- #endif
52
- #if PY_VERSION_HEX >= 0x030d0000
53
- {
54
- /* The code in this extension should be safe to use without the GIL */
55
- .slot = Py_mod_gil,
56
- .value = Py_MOD_GIL_NOT_USED,
57
- },
58
- #endif
59
- {/* Sentinel */
60
- .slot = 0,
61
- .value = 0}};
62
-
63
- static struct PyModuleDef mod_module = {
64
- .m_base = PyModuleDef_HEAD_INIT,
65
- .m_name = "_inlines",
66
- .m_doc = NULL,
67
- .m_size = 0,
68
- .m_methods = mod_methods,
69
- .m_slots = mod_slots,
70
- .m_traverse = NULL,
71
- .m_clear = NULL,
72
- .m_free = NULL,
73
- };
74
-
75
- PyObject* PyInit__inlines(void);
76
-
77
- PyObject* __attribute__((__visibility__("default")))
78
- PyInit__inlines(void)
79
- {
80
- return PyModuleDef_Init(&mod_module);
81
- }
82
-
83
- } /* extern C */