pyobjc-framework-IOBluetooth 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.
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/IOBluetooth/_funcmacros.py +4 -4
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/IOBluetooth/_metadata.py +12 -10
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/pyobjc_framework_IOBluetooth.egg-info/PKG-INFO +5 -5
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/pyobjc_framework_IOBluetooth.egg-info/SOURCES.txt +2 -5
- pyobjc_framework_iobluetooth-13.0/Lib/pyobjc_framework_IOBluetooth.egg-info/pyobjc-build-info.txt +3 -0
- pyobjc_framework_iobluetooth-13.0/Lib/pyobjc_framework_IOBluetooth.egg-info/requires.txt +2 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/_IOBluetooth.m +9 -2
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/_IOBluetooth_protocols.m +8 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/pyobjc-api.h +18 -4
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/pyobjc-compat.h +0 -18
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PKG-INFO +5 -5
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_bluetooth.py +3 -2
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_bluetoothassignednumbers.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothdevice.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothdeviceinquiry.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothdevicepair.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothhandsfree.py +20 -19
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothhandsfreeaudiogateway.py +3 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothhandsfreedevice.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothl2capchannel.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothrfcommchannel.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothuserlib.py +21 -22
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_obex.py +1 -2
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_obexfiletransferservices.py +5 -4
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_obexsession.py +1 -1
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/metadata/IOBluetooth.fwinfo +34 -431
- pyobjc_framework_iobluetooth-12.2.1/metadata/raw/arm64-26.5.fwinfo → pyobjc_framework_iobluetooth-13.0/metadata/raw/arm64-27.fwinfo +19 -23
- pyobjc_framework_iobluetooth-12.2.1/metadata/raw/x86_64-26.5.fwinfo → pyobjc_framework_iobluetooth-13.0/metadata/raw/x86_64-27.fwinfo +19 -23
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/pyobjc_setup.py +7 -7
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/setup.py +1 -1
- pyobjc_framework_iobluetooth-12.2.1/Lib/pyobjc_framework_IOBluetooth.egg-info/pyobjc-build-info.txt +0 -3
- pyobjc_framework_iobluetooth-12.2.1/Lib/pyobjc_framework_IOBluetooth.egg-info/requires.txt +0 -2
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/IOBluetooth/__init__.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/pyobjc_framework_IOBluetooth.egg-info/dependency_links.txt +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/pyobjc_framework_IOBluetooth.egg-info/not-zip-safe +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Lib/pyobjc_framework_IOBluetooth.egg-info/top_level.txt +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/License.txt +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/MANIFEST.in +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/__init__.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetooth.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothhostcontroller.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothobexsession.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothobject.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothsdpdataelement.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothsdpservicerecord.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothsdpuuid.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_iobluetoothutilities.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_nsdictionaryobexextensions.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_obexbluetooth.py +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/metadata/metadata.ini +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/pyproject.toml +0 -0
- {pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/setup.cfg +0 -0
|
@@ -103,8 +103,8 @@ def STRIP_RESPONSE_CODE_FINAL_BIT(RESPONSE_CODE):
|
|
|
103
103
|
|
|
104
104
|
def IS_REQUEST_PDU(_pduID):
|
|
105
105
|
global IOBluetooth
|
|
106
|
-
if IOBluetooth is None:
|
|
107
|
-
import IOBluetooth
|
|
106
|
+
if IOBluetooth is None: # pragma: no cover
|
|
107
|
+
import IOBluetooth # pragma: no cover
|
|
108
108
|
return (
|
|
109
109
|
(_pduID == IOBluetooth.kBluetoothSDPPDUIDServiceSearchRequest)
|
|
110
110
|
or (_pduID == IOBluetooth.kBluetoothSDPPDUIDServiceAttributeRequest)
|
|
@@ -114,8 +114,8 @@ def IS_REQUEST_PDU(_pduID):
|
|
|
114
114
|
|
|
115
115
|
def IS_RESPONSE_PDU(_pduID):
|
|
116
116
|
global IOBluetooth
|
|
117
|
-
if IOBluetooth is None:
|
|
118
|
-
import IOBluetooth
|
|
117
|
+
if IOBluetooth is None: # pragma: no cover
|
|
118
|
+
import IOBluetooth # pragma: no cover
|
|
119
119
|
return (
|
|
120
120
|
(_pduID == IOBluetooth.kBluetoothSDPPDUIDErrorResponse)
|
|
121
121
|
or (_pduID == IOBluetooth.kBluetoothSDPPDUIDServiceSearchResponse)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# This file is generated by objective.metadata
|
|
2
2
|
#
|
|
3
|
-
# Last update: Thu May 28 22:05:19 2026
|
|
4
|
-
#
|
|
5
3
|
# flake8: noqa
|
|
6
4
|
|
|
7
5
|
import objc, sys
|
|
@@ -1268,18 +1266,12 @@ functions = {
|
|
|
1268
1266
|
"IOBluetoothOBEXSessionCreateWithIOBluetoothSDPServiceRecordRef": (
|
|
1269
1267
|
b"i^{OpaqueIOBluetoothObjectRef=}^^{OpaqueOBEXSessionRef=}",
|
|
1270
1268
|
"",
|
|
1271
|
-
{
|
|
1272
|
-
"retval": {"already_cfretained": True},
|
|
1273
|
-
"arguments": {1: {"type_modifier": "o"}},
|
|
1274
|
-
},
|
|
1269
|
+
{"arguments": {1: {"type_modifier": "o"}}},
|
|
1275
1270
|
),
|
|
1276
1271
|
"IOBluetoothOBEXSessionCreateWithIOBluetoothDeviceRefAndChannelNumber": (
|
|
1277
1272
|
b"i^{OpaqueIOBluetoothObjectRef=}C^^{OpaqueOBEXSessionRef=}",
|
|
1278
1273
|
"",
|
|
1279
|
-
{
|
|
1280
|
-
"retval": {"already_cfretained": True},
|
|
1281
|
-
"arguments": {2: {"type_modifier": "o"}},
|
|
1282
|
-
},
|
|
1274
|
+
{"arguments": {2: {"type_modifier": "o"}}},
|
|
1283
1275
|
),
|
|
1284
1276
|
"OBEXAddLengthHeader": (b"iI^{__CFDictionary=}",),
|
|
1285
1277
|
"OBEXAddBodyHeader": (
|
|
@@ -2376,5 +2368,15 @@ protocols = {
|
|
|
2376
2368
|
),
|
|
2377
2369
|
}
|
|
2378
2370
|
expressions = {}
|
|
2371
|
+
formal_protocols = {
|
|
2372
|
+
"IOBluetoothDeviceAsyncCallbacks": "IOBluetoothDeviceAsyncCallbacks",
|
|
2373
|
+
"IOBluetoothDeviceInquiryDelegate": "IOBluetoothDeviceInquiryDelegate",
|
|
2374
|
+
"IOBluetoothDevicePairDelegate": "IOBluetoothDevicePairDelegate",
|
|
2375
|
+
"IOBluetoothHandsFreeAudioGatewayDelegate": "IOBluetoothHandsFreeAudioGatewayDelegate",
|
|
2376
|
+
"IOBluetoothHandsFreeDelegate": "IOBluetoothHandsFreeDelegate",
|
|
2377
|
+
"IOBluetoothHandsFreeDeviceDelegate": "IOBluetoothHandsFreeDeviceDelegate",
|
|
2378
|
+
"IOBluetoothL2CAPChannelDelegate": "IOBluetoothL2CAPChannelDelegate",
|
|
2379
|
+
"IOBluetoothRFCOMMChannelDelegate": "IOBluetoothRFCOMMChannelDelegate",
|
|
2380
|
+
}
|
|
2379
2381
|
|
|
2380
2382
|
# END OF FILE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyobjc-framework-IOBluetooth
|
|
3
|
-
Version:
|
|
3
|
+
Version: 13.0
|
|
4
4
|
Summary: Wrappers for the framework IOBluetooth 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.
|
|
31
|
+
Requires-Python: >=3.11
|
|
32
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
33
|
-
Requires-Dist: pyobjc-core>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
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
|
|
@@ -20,9 +20,7 @@ Modules/pyobjc-compat.h
|
|
|
20
20
|
PyObjCTest/__init__.py
|
|
21
21
|
PyObjCTest/test_bluetooth.py
|
|
22
22
|
PyObjCTest/test_bluetoothassignednumbers.py
|
|
23
|
-
PyObjCTest/test_iobLuetoothdeviceinquiry.py
|
|
24
23
|
PyObjCTest/test_iobluetooth.py
|
|
25
|
-
PyObjCTest/test_iobluetoothL2capchannel.py
|
|
26
24
|
PyObjCTest/test_iobluetoothdevice.py
|
|
27
25
|
PyObjCTest/test_iobluetoothdeviceinquiry.py
|
|
28
26
|
PyObjCTest/test_iobluetoothdevicepair.py
|
|
@@ -35,7 +33,6 @@ PyObjCTest/test_iobluetoothobexsession.py
|
|
|
35
33
|
PyObjCTest/test_iobluetoothobject.py
|
|
36
34
|
PyObjCTest/test_iobluetoothrfcommchannel.py
|
|
37
35
|
PyObjCTest/test_iobluetoothsdpdataelement.py
|
|
38
|
-
PyObjCTest/test_iobluetoothsdpserviceRecord.py
|
|
39
36
|
PyObjCTest/test_iobluetoothsdpservicerecord.py
|
|
40
37
|
PyObjCTest/test_iobluetoothsdpuuid.py
|
|
41
38
|
PyObjCTest/test_iobluetoothuserlib.py
|
|
@@ -47,5 +44,5 @@ PyObjCTest/test_obexfiletransferservices.py
|
|
|
47
44
|
PyObjCTest/test_obexsession.py
|
|
48
45
|
metadata/IOBluetooth.fwinfo
|
|
49
46
|
metadata/metadata.ini
|
|
50
|
-
metadata/raw/arm64-
|
|
51
|
-
metadata/raw/x86_64-
|
|
47
|
+
metadata/raw/arm64-27.fwinfo
|
|
48
|
+
metadata/raw/x86_64-27.fwinfo
|
{pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/_IOBluetooth.m
RENAMED
|
@@ -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 <Foundation/Foundation.h>
|
|
6
10
|
#import <IOBluetooth/IOBluetooth.h>
|
|
7
11
|
|
|
@@ -10,6 +14,8 @@
|
|
|
10
14
|
*/
|
|
11
15
|
#include "_IOBluetooth_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,11 @@ static struct PyModuleDef mod_module = {
|
|
|
55
61
|
.m_free = NULL,
|
|
56
62
|
};
|
|
57
63
|
|
|
58
|
-
PyObject* PyInit__IOBluetooth(void);
|
|
64
|
+
PyObject* _Nullable PyInit__IOBluetooth(void);
|
|
59
65
|
|
|
60
|
-
PyObject* __attribute__((__visibility__("default")))
|
|
66
|
+
PyObject* _Nullable __attribute__((__visibility__("default")))
|
|
61
67
|
PyInit__IOBluetooth(void)
|
|
62
68
|
{
|
|
63
69
|
return PyModuleDef_Init(&mod_module);
|
|
64
70
|
}
|
|
71
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// LCOV_EXCL_START
|
|
2
|
+
// This function is only present to ensure protocols are
|
|
3
|
+
// available at runtime.
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
1
6
|
static void __attribute__((__used__))
|
|
2
7
|
use_protocols(void)
|
|
3
8
|
{
|
|
@@ -19,3 +24,6 @@ use_protocols(void)
|
|
|
19
24
|
p = PyObjC_IdToPython(@protocol(IOBluetoothRFCOMMChannelDelegate));
|
|
20
25
|
Py_XDECREF(p);
|
|
21
26
|
}
|
|
27
|
+
|
|
28
|
+
NS_ASSUME_NONNULL_END
|
|
29
|
+
// LCOV_EXCL_STOP
|
{pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/pyobjc-api.h
RENAMED
|
@@ -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
|
{pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/Modules/pyobjc-compat.h
RENAMED
|
@@ -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-IOBluetooth
|
|
3
|
-
Version:
|
|
3
|
+
Version: 13.0
|
|
4
4
|
Summary: Wrappers for the framework IOBluetooth 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.
|
|
31
|
+
Requires-Python: >=3.11
|
|
32
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
33
|
-
Requires-Dist: pyobjc-core>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
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
|
|
@@ -4,7 +4,7 @@ import IOBluetooth
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class TestBluetooth(TestCase):
|
|
7
|
-
def
|
|
7
|
+
def test_enums(self):
|
|
8
8
|
self.assertEqual(
|
|
9
9
|
IOBluetooth.kBluetoothConnectionHandleSerialDeviceReserved, 0x0FFF
|
|
10
10
|
)
|
|
@@ -700,6 +700,7 @@ class TestBluetooth(TestCase):
|
|
|
700
700
|
IOBluetooth.BluetoothLESecurityManagerKeypressNotificationType
|
|
701
701
|
)
|
|
702
702
|
|
|
703
|
+
self.assertIsEnumType(IOBluetooth.BluetoothAMPManagerCode)
|
|
703
704
|
self.assertEqual(IOBluetooth.kBluetoothAMPManagerCodeReserved, 0x00)
|
|
704
705
|
self.assertEqual(IOBluetooth.kBluetoothAMPManagerCodeAMPCommandReject, 0x01)
|
|
705
706
|
self.assertEqual(IOBluetooth.kBluetoothAMPManagerCodeAMPDiscoverRequest, 0x02)
|
|
@@ -2434,7 +2435,7 @@ class TestBluetooth(TestCase):
|
|
|
2434
2435
|
self.assertEqual(IOBluetooth.kInfoStringMaxLength, 35)
|
|
2435
2436
|
self.assertEqual(IOBluetooth.kBluetoothHCIInquiryResultsMaxResults, 50)
|
|
2436
2437
|
|
|
2437
|
-
def
|
|
2438
|
+
def test_structs(self):
|
|
2438
2439
|
v = IOBluetooth.BluetoothDeviceAddress()
|
|
2439
2440
|
self.assertIs(v.data, None)
|
|
2440
2441
|
|
|
@@ -4,7 +4,7 @@ import IOBluetooth
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class TestBluetoothAssignedNumbers(TestCase):
|
|
7
|
-
def
|
|
7
|
+
def test_enums(self):
|
|
8
8
|
self.assertIsEnumType(IOBluetooth.BluetoothCompanyIdentifers)
|
|
9
9
|
self.assertEqual(
|
|
10
10
|
IOBluetooth.kBluetoothCompanyIdentiferEricssonTechnologyLicensing, 0
|
|
@@ -46,7 +46,7 @@ class TestIOBluetoothDevice(TestCase):
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
def test_protocols(self):
|
|
49
|
-
self.assertProtocolExists("IOBluetoothDeviceAsyncCallbacks")
|
|
49
|
+
self.assertProtocolExists("IOBluetoothDeviceAsyncCallbacks", IOBluetooth)
|
|
50
50
|
|
|
51
51
|
def test_protocol_methods(self):
|
|
52
52
|
self.assertArgHasType(
|
|
@@ -17,7 +17,7 @@ class TestIOBluetoothDeviceInquiryHelper(IOBluetooth.NSObject):
|
|
|
17
17
|
|
|
18
18
|
class TestIOBluetoothDeviceInquiry(TestCase):
|
|
19
19
|
def test_protocols(self):
|
|
20
|
-
self.assertProtocolExists("IOBluetoothDeviceInquiryDelegate")
|
|
20
|
+
self.assertProtocolExists("IOBluetoothDeviceInquiryDelegate", IOBluetooth)
|
|
21
21
|
|
|
22
22
|
def test_protocol_methods(self):
|
|
23
23
|
self.assertArgHasType(
|
|
@@ -20,7 +20,7 @@ class TestIOBluetoothDevicePairHelper(IOBluetooth.NSObject):
|
|
|
20
20
|
|
|
21
21
|
class TestIOBluetoothDevicePair(TestCase):
|
|
22
22
|
def test_protocols(self):
|
|
23
|
-
self.assertProtocolExists("IOBluetoothDevicePairDelegate")
|
|
23
|
+
self.assertProtocolExists("IOBluetoothDevicePairDelegate", IOBluetooth)
|
|
24
24
|
|
|
25
25
|
def test_protocol_methods(self):
|
|
26
26
|
self.assertArgHasType(
|
|
@@ -4,7 +4,7 @@ import IOBluetooth
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class TestIOBluetoothHandsFree(TestCase):
|
|
7
|
-
def
|
|
7
|
+
def test_enums(self):
|
|
8
8
|
self.assertIsEnumType(IOBluetooth.IOBluetoothHandsFreeDeviceFeatures)
|
|
9
9
|
self.assertEqual(IOBluetooth.IOBluetoothHandsFreeDeviceFeatureNone, 0)
|
|
10
10
|
self.assertEqual(
|
|
@@ -84,23 +84,6 @@ class TestIOBluetoothHandsFree(TestCase):
|
|
|
84
84
|
self.assertEqual(IOBluetooth.IOBluetoothHandsFreeCodecIDmSBC, 0x02)
|
|
85
85
|
self.assertEqual(IOBluetooth.IOBluetoothHandsFreeCodecIDAACELD, 0x80)
|
|
86
86
|
|
|
87
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorService, str)
|
|
88
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCall, str)
|
|
89
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCallSetup, str)
|
|
90
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCallHeld, str)
|
|
91
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorSignal, str)
|
|
92
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorRoam, str)
|
|
93
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorBattChg, str)
|
|
94
|
-
|
|
95
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallIndex, str)
|
|
96
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallDirection, str)
|
|
97
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallStatus, str)
|
|
98
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallMode, str)
|
|
99
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallMultiparty, str)
|
|
100
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallNumber, str)
|
|
101
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallType, str)
|
|
102
|
-
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallName, str)
|
|
103
|
-
|
|
104
87
|
self.assertIsEnumType(IOBluetooth.IOBluetoothSMSMode)
|
|
105
88
|
self.assertEqual(IOBluetooth.IOBluetoothSMSModePDU, 0)
|
|
106
89
|
self.assertEqual(IOBluetooth.IOBluetoothSMSModeText, 1)
|
|
@@ -119,6 +102,24 @@ class TestIOBluetoothHandsFree(TestCase):
|
|
|
119
102
|
self.assertEqual(IOBluetooth.IOBluetoothHandsFreePDUStatusStoSent, 3)
|
|
120
103
|
self.assertEqual(IOBluetooth.IOBluetoothHandsFreePDUStatusAll, 4)
|
|
121
104
|
|
|
105
|
+
def test_constants(self):
|
|
106
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorService, str)
|
|
107
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCall, str)
|
|
108
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCallSetup, str)
|
|
109
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorCallHeld, str)
|
|
110
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorSignal, str)
|
|
111
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorRoam, str)
|
|
112
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeIndicatorBattChg, str)
|
|
113
|
+
|
|
114
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallIndex, str)
|
|
115
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallDirection, str)
|
|
116
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallStatus, str)
|
|
117
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallMode, str)
|
|
118
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallMultiparty, str)
|
|
119
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallNumber, str)
|
|
120
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallType, str)
|
|
121
|
+
self.assertIsInstance(IOBluetooth.IOBluetoothHandsFreeCallName, str)
|
|
122
|
+
|
|
122
123
|
self.assertIsInstance(IOBluetooth.IOBluetoothPDUServicCenterAddress, str)
|
|
123
124
|
self.assertIsInstance(IOBluetooth.IOBluetoothPDUServiceCenterAddressType, str)
|
|
124
125
|
self.assertIsInstance(IOBluetooth.IOBluetoothPDUType, str)
|
|
@@ -130,7 +131,7 @@ class TestIOBluetoothHandsFree(TestCase):
|
|
|
130
131
|
self.assertIsInstance(IOBluetooth.IOBluetoothPDUUserData, str)
|
|
131
132
|
|
|
132
133
|
def test_protocols(self):
|
|
133
|
-
self.assertProtocolExists("IOBluetoothHandsFreeDelegate")
|
|
134
|
+
self.assertProtocolExists("IOBluetoothHandsFreeDelegate", IOBluetooth)
|
|
134
135
|
|
|
135
136
|
def test_methods(self):
|
|
136
137
|
self.assertResultIsBOOL(IOBluetooth.IOBluetoothHandsFree.isInputMuted)
|
|
@@ -5,4 +5,6 @@ import IOBluetooth # noqa: F401
|
|
|
5
5
|
|
|
6
6
|
class TestIOBluetoothHandsFreeAudioGateway(TestCase):
|
|
7
7
|
def test_protocols(self):
|
|
8
|
-
self.assertProtocolExists(
|
|
8
|
+
self.assertProtocolExists(
|
|
9
|
+
"IOBluetoothHandsFreeAudioGatewayDelegate", IOBluetooth
|
|
10
|
+
)
|
|
@@ -26,7 +26,7 @@ class TestIOBluetoothL2CAPChannel(TestCase):
|
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
def test_protocols(self):
|
|
29
|
-
self.assertProtocolExists("IOBluetoothL2CAPChannelDelegate")
|
|
29
|
+
self.assertProtocolExists("IOBluetoothL2CAPChannelDelegate", IOBluetooth)
|
|
30
30
|
|
|
31
31
|
def test_protocol_methods(self):
|
|
32
32
|
self.assertArgHasType(
|
|
@@ -20,7 +20,7 @@ class TestIOBluetoothRFCOMMChannelHelper(IOBluetooth.NSObject):
|
|
|
20
20
|
|
|
21
21
|
class TestIOBluetoothRFCOMMChannel(TestCase):
|
|
22
22
|
def test_protocols(self):
|
|
23
|
-
self.assertProtocolExists("IOBluetoothRFCOMMChannelDelegate")
|
|
23
|
+
self.assertProtocolExists("IOBluetoothRFCOMMChannelDelegate", IOBluetooth)
|
|
24
24
|
|
|
25
25
|
def test_protocol_methods(self):
|
|
26
26
|
self.assertArgHasType(
|
|
@@ -2,13 +2,33 @@ from PyObjCTools.TestSupport import TestCase
|
|
|
2
2
|
|
|
3
3
|
import IOBluetooth
|
|
4
4
|
|
|
5
|
-
|
|
6
5
|
IOBluetoothUserNotificationCallback = (
|
|
7
6
|
b"v^v^{OpaqueIOBluetoothObjectRef=}^{OpaqueIOBluetoothObjectRef=}"
|
|
8
7
|
)
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
class TestIOBluetoothUserLib(TestCase):
|
|
11
|
+
def test_enums(self):
|
|
12
|
+
self.assertEqual(IOBluetooth.kIOBluetoothObjectIDNULL, 0)
|
|
13
|
+
|
|
14
|
+
self.assertIsEnumType(IOBluetooth.IOBluetoothDeviceSearchOptionsBits)
|
|
15
|
+
self.assertEqual(IOBluetooth.kSearchOptionsNone, 0)
|
|
16
|
+
self.assertEqual(IOBluetooth.kSearchOptionsAlwaysStartInquiry, 1 << 0)
|
|
17
|
+
self.assertEqual(IOBluetooth.kSearchOptionsDiscardCachedResults, 1 << 1)
|
|
18
|
+
|
|
19
|
+
self.assertIsEnumType(IOBluetooth.IOBluetoothDeviceSearchTypesBits)
|
|
20
|
+
self.assertEqual(IOBluetooth.kIOBluetoothDeviceSearchClassic, 1)
|
|
21
|
+
self.assertEqual(IOBluetooth.kIOBluetoothDeviceSearchLE, 2)
|
|
22
|
+
|
|
23
|
+
self.assertIsEnumType(IOBluetooth.IOBluetoothUserNotificationChannelDirection)
|
|
24
|
+
self.assertEqual(IOBluetooth.kIOBluetoothUserNotificationChannelDirectionAny, 0)
|
|
25
|
+
self.assertEqual(
|
|
26
|
+
IOBluetooth.kIOBluetoothUserNotificationChannelDirectionIncoming, 1
|
|
27
|
+
)
|
|
28
|
+
self.assertEqual(
|
|
29
|
+
IOBluetooth.kIOBluetoothUserNotificationChannelDirectionOutgoing, 2
|
|
30
|
+
)
|
|
31
|
+
|
|
12
32
|
def test_types(self):
|
|
13
33
|
self.assertIsOpaquePointer(IOBluetooth.IOBluetoothObjectRef)
|
|
14
34
|
self.assertIs(
|
|
@@ -33,27 +53,6 @@ class TestIOBluetoothUserLib(TestCase):
|
|
|
33
53
|
IOBluetooth.IOBluetoothUserNotificationRef, IOBluetooth.IOBluetoothObjectRef
|
|
34
54
|
)
|
|
35
55
|
|
|
36
|
-
def test_constants(self):
|
|
37
|
-
self.assertEqual(IOBluetooth.kIOBluetoothObjectIDNULL, 0)
|
|
38
|
-
|
|
39
|
-
self.assertIsEnumType(IOBluetooth.IOBluetoothDeviceSearchOptionsBits)
|
|
40
|
-
self.assertEqual(IOBluetooth.kSearchOptionsNone, 0)
|
|
41
|
-
self.assertEqual(IOBluetooth.kSearchOptionsAlwaysStartInquiry, 1 << 0)
|
|
42
|
-
self.assertEqual(IOBluetooth.kSearchOptionsDiscardCachedResults, 1 << 1)
|
|
43
|
-
|
|
44
|
-
self.assertIsEnumType(IOBluetooth.IOBluetoothDeviceSearchTypesBits)
|
|
45
|
-
self.assertEqual(IOBluetooth.kIOBluetoothDeviceSearchClassic, 1)
|
|
46
|
-
self.assertEqual(IOBluetooth.kIOBluetoothDeviceSearchLE, 2)
|
|
47
|
-
|
|
48
|
-
self.assertIsEnumType(IOBluetooth.IOBluetoothUserNotificationChannelDirection)
|
|
49
|
-
self.assertEqual(IOBluetooth.kIOBluetoothUserNotificationChannelDirectionAny, 0)
|
|
50
|
-
self.assertEqual(
|
|
51
|
-
IOBluetooth.kIOBluetoothUserNotificationChannelDirectionIncoming, 1
|
|
52
|
-
)
|
|
53
|
-
self.assertEqual(
|
|
54
|
-
IOBluetooth.kIOBluetoothUserNotificationChannelDirectionOutgoing, 2
|
|
55
|
-
)
|
|
56
|
-
|
|
57
56
|
def test_structs(self):
|
|
58
57
|
v = IOBluetooth.IOBluetoothDeviceSearchDeviceAttributes()
|
|
59
58
|
self.assertEqual(v.address, IOBluetooth.BluetoothDeviceAddress())
|
{pyobjc_framework_iobluetooth-12.2.1 → pyobjc_framework_iobluetooth-13.0}/PyObjCTest/test_obex.py
RENAMED
|
@@ -8,9 +8,8 @@ OBEXSessionEventCallback = b"vn^v"
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class TestOBEX(TestCase):
|
|
11
|
-
def
|
|
11
|
+
def test_enums(self):
|
|
12
12
|
self.assertIsEnumType(IOBluetooth.OBEXErrorCodes)
|
|
13
|
-
|
|
14
13
|
self.assertEqual(IOBluetooth.kOBEXErrorRangeMin, -21850)
|
|
15
14
|
self.assertEqual(IOBluetooth.kOBEXErrorRangeMax, -21899)
|
|
16
15
|
self.assertEqual(IOBluetooth.kOBEXSuccess, 0)
|
|
@@ -4,6 +4,11 @@ import IOBluetooth
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class TestOBEXFileTransferServices(TestCase):
|
|
7
|
+
def test_enums(self):
|
|
8
|
+
self.assertIsEnumType(IOBluetooth.FTSFileType)
|
|
9
|
+
self.assertEqual(IOBluetooth.kFTSFileTypeFolder, 1)
|
|
10
|
+
self.assertEqual(IOBluetooth.kFTSFileTypeFile, 2)
|
|
11
|
+
|
|
7
12
|
def test_constants(self):
|
|
8
13
|
self.assertIsInstance(IOBluetooth.kFTSProgressBytesTransferredKey, str)
|
|
9
14
|
self.assertIsInstance(IOBluetooth.kFTSProgressBytesTotalKey, str)
|
|
@@ -16,10 +21,6 @@ class TestOBEXFileTransferServices(TestCase):
|
|
|
16
21
|
self.assertIsInstance(IOBluetooth.kFTSListingTypeKey, str)
|
|
17
22
|
self.assertIsInstance(IOBluetooth.kFTSListingSizeKey, str)
|
|
18
23
|
|
|
19
|
-
self.assertIsEnumType(IOBluetooth.FTSFileType)
|
|
20
|
-
self.assertEqual(IOBluetooth.kFTSFileTypeFolder, 1)
|
|
21
|
-
self.assertEqual(IOBluetooth.kFTSFileTypeFile, 2)
|
|
22
|
-
|
|
23
24
|
def test_methods(self):
|
|
24
25
|
self.assertResultIsBOOL(IOBluetooth.OBEXFileTransferServices.isBusy)
|
|
25
26
|
self.assertResultIsBOOL(IOBluetooth.OBEXFileTransferServices.isConnected)
|