pyobjc-framework-Network 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 (58) hide show
  1. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/Network/_metadata.py +36 -3
  2. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/pyobjc_framework_Network.egg-info/PKG-INFO +5 -5
  3. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/pyobjc_framework_Network.egg-info/SOURCES.txt +2 -2
  4. pyobjc_framework_network-13.0/Lib/pyobjc_framework_Network.egg-info/pyobjc-build-info.txt +3 -0
  5. pyobjc_framework_network-13.0/Lib/pyobjc_framework_Network.egg-info/requires.txt +2 -0
  6. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Modules/_Network.m +30 -23
  7. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Modules/pyobjc-api.h +18 -4
  8. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Modules/pyobjc-compat.h +0 -18
  9. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PKG-INFO +5 -5
  10. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_advertise_descriptor.py +1 -1
  11. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_browse_descriptor.py +1 -1
  12. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_connection_report.py +1 -2
  13. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_ip_options.py +2 -2
  14. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_path.py +1 -1
  15. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_tcp_options.py +4 -0
  16. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/metadata/Network.fwinfo +4 -18
  17. pyobjc_framework_network-12.2.1/metadata/raw/arm64-26.5.fwinfo → pyobjc_framework_network-13.0/metadata/raw/arm64-27.fwinfo +21 -5
  18. pyobjc_framework_network-12.2.1/metadata/raw/x86_64-26.5.fwinfo → pyobjc_framework_network-13.0/metadata/raw/x86_64-27.fwinfo +21 -5
  19. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/pyobjc_setup.py +7 -7
  20. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/setup.py +1 -1
  21. pyobjc_framework_network-12.2.1/Lib/pyobjc_framework_Network.egg-info/pyobjc-build-info.txt +0 -3
  22. pyobjc_framework_network-12.2.1/Lib/pyobjc_framework_Network.egg-info/requires.txt +0 -2
  23. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Examples/bonjour_listener.py +0 -0
  24. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/Network/__init__.py +0 -0
  25. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/pyobjc_framework_Network.egg-info/dependency_links.txt +0 -0
  26. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/pyobjc_framework_Network.egg-info/not-zip-safe +0 -0
  27. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/Lib/pyobjc_framework_Network.egg-info/top_level.txt +0 -0
  28. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/License.txt +0 -0
  29. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/MANIFEST.in +0 -0
  30. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/__init__.py +0 -0
  31. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_browse_result.py +0 -0
  32. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_browser.py +0 -0
  33. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_connection.py +0 -0
  34. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_connection_group.py +0 -0
  35. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_content_context.py +0 -0
  36. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_endpoint.py +0 -0
  37. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_error.py +0 -0
  38. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_ethernet_channel.py +0 -0
  39. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_framer_options.py +0 -0
  40. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_group_descriptor.py +0 -0
  41. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_interface.py +0 -0
  42. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_listener.py +0 -0
  43. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_network.py +0 -0
  44. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_nw_object.py +0 -0
  45. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_parameters.py +0 -0
  46. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_path_monitor.py +0 -0
  47. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_privacy_context.py +0 -0
  48. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_protocol_options.py +0 -0
  49. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_proxy_config.py +0 -0
  50. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_quic_options.py +0 -0
  51. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_resolver_config.py +0 -0
  52. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_tls_options.py +0 -0
  53. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_txt_record.py +0 -0
  54. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_udp_options.py +0 -0
  55. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/PyObjCTest/test_ws_options.py +0 -0
  56. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/metadata/metadata.ini +0 -0
  57. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-13.0}/pyproject.toml +0 -0
  58. {pyobjc_framework_network-12.2.1 → pyobjc_framework_network-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:54:06 2026
4
- #
5
3
  # flake8: noqa
6
4
 
7
5
  import objc, sys
@@ -894,6 +892,7 @@ functions = {
894
892
  "nw_framer_mark_failed_with_error": (b"v@i",),
895
893
  "nw_tcp_options_set_keepalive_idle_time": (b"v@I",),
896
894
  "nw_error_get_error_code": (b"i@",),
895
+ "nw_tcp_set_max_pacing_rate": (b"i@Q",),
897
896
  "nw_quic_set_max_datagram_frame_size": (b"v@S",),
898
897
  "nw_quic_add_tls_application_protocol": (
899
898
  b"v@^t",
@@ -1613,7 +1612,7 @@ functions = {
1613
1612
  "",
1614
1613
  {"retval": {"already_retained": True}},
1615
1614
  ),
1616
- "nw_path_get_link_quality": (b"I@",),
1615
+ "nw_path_get_link_quality": (b"C@",),
1617
1616
  "nw_parameters_set_service_class": (b"v@I",),
1618
1617
  "nw_connection_group_copy_path_for_message": (b"@@@",),
1619
1618
  "nw_parameters_set_privacy_context": (b"v@@",),
@@ -1957,5 +1956,39 @@ aliases = {
1957
1956
  "NW_UNSAFE_UNRETAINED": "__unsafe_unretained",
1958
1957
  }
1959
1958
  expressions = {}
1959
+ formal_protocols = {
1960
+ "OS_nw_advertise_descriptor": "OS_nw_advertise_descriptor",
1961
+ "OS_nw_browse_descriptor": "OS_nw_browse_descriptor",
1962
+ "OS_nw_browse_result": "OS_nw_browse_result",
1963
+ "OS_nw_browser": "OS_nw_browser",
1964
+ "OS_nw_connection": "OS_nw_connection",
1965
+ "OS_nw_connection_group": "OS_nw_connection_group",
1966
+ "OS_nw_content_context": "OS_nw_content_context",
1967
+ "OS_nw_data_transfer_report": "OS_nw_data_transfer_report",
1968
+ "OS_nw_endpoint": "OS_nw_endpoint",
1969
+ "OS_nw_error": "OS_nw_error",
1970
+ "OS_nw_establishment_report": "OS_nw_establishment_report",
1971
+ "OS_nw_ethernet_channel": "OS_nw_ethernet_channel",
1972
+ "OS_nw_framer": "OS_nw_framer",
1973
+ "OS_nw_group_descriptor": "OS_nw_group_descriptor",
1974
+ "OS_nw_interface": "OS_nw_interface",
1975
+ "OS_nw_listener": "OS_nw_listener",
1976
+ "OS_nw_object": "OS_nw_object",
1977
+ "OS_nw_parameters": "OS_nw_parameters",
1978
+ "OS_nw_path": "OS_nw_path",
1979
+ "OS_nw_path_monitor": "OS_nw_path_monitor",
1980
+ "OS_nw_privacy_context": "OS_nw_privacy_context",
1981
+ "OS_nw_protocol_definition": "OS_nw_protocol_definition",
1982
+ "OS_nw_protocol_metadata": "OS_nw_protocol_metadata",
1983
+ "OS_nw_protocol_options": "OS_nw_protocol_options",
1984
+ "OS_nw_protocol_stack": "OS_nw_protocol_stack",
1985
+ "OS_nw_proxy_config": "OS_nw_proxy_config",
1986
+ "OS_nw_relay_hop": "OS_nw_relay_hop",
1987
+ "OS_nw_resolution_report": "OS_nw_resolution_report",
1988
+ "OS_nw_resolver_config": "OS_nw_resolver_config",
1989
+ "OS_nw_txt_record": "OS_nw_txt_record",
1990
+ "OS_nw_ws_request": "OS_nw_ws_request",
1991
+ "OS_nw_ws_response": "OS_nw_ws_response",
1992
+ }
1960
1993
 
1961
1994
  # END OF FILE
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-Network
3
- Version: 12.2.1
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework Network 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
@@ -50,5 +50,5 @@ PyObjCTest/test_udp_options.py
50
50
  PyObjCTest/test_ws_options.py
51
51
  metadata/Network.fwinfo
52
52
  metadata/metadata.ini
53
- metadata/raw/arm64-26.5.fwinfo
54
- metadata/raw/x86_64-26.5.fwinfo
53
+ metadata/raw/arm64-27.fwinfo
54
+ 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,8 +2,14 @@
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
  #include <Network/Network.h>
6
10
 
11
+ NS_ASSUME_NONNULL_BEGIN
12
+
7
13
  static PyMethodDef mod_methods[] = {
8
14
  {0, 0, 0, 0} /* sentinel */
9
15
  };
@@ -15,8 +21,8 @@ add_constant(PyObject* m, const char* name, char* typestr, const void* value)
15
21
  int r;
16
22
 
17
23
  v = PyObjC_ObjCToPython(typestr, (void*)value);
18
- if (v == NULL) {
19
- return -1;
24
+ if (v == NULL) { // LCOV_BR_EXCL_LINE
25
+ return -1; // LCOV_EXCL_LINE
20
26
  }
21
27
 
22
28
  r = PyModule_AddObject(m, name, v);
@@ -27,56 +33,56 @@ add_constant(PyObject* m, const char* name, char* typestr, const void* value)
27
33
  static int
28
34
  mod_exec_module(PyObject* m)
29
35
  {
30
- if (PyObjC_ImportAPI(m) == -1)
31
- return -1;
36
+ if (PyObjC_ImportAPI(m) == -1) // LCOV_BR_EXCL_LINE
37
+ return -1; // LCOV_EXCL_LINE
32
38
 
33
- if (@available(macos 10.14, *)) {
39
+ if (@available(macos 10.14, *)) { // LCOV_BR_EXCL_LINE
34
40
  nw_connection_send_completion_t t = NW_CONNECTION_SEND_IDEMPOTENT_CONTENT;
35
41
  if (add_constant(m, "NW_CONNECTION_SEND_IDEMPOTENT_CONTENT",
36
42
  @encode(nw_connection_send_completion_t), &t)
37
- != 0)
38
- goto error;
43
+ != 0) // LCOV_BR_EXCL_LINE
44
+ goto error; // LCOV_EXCL_LINE
39
45
  nw_content_context_t t2 = NW_CONNECTION_DEFAULT_MESSAGE_CONTEXT;
40
46
  if (add_constant(m, "NW_CONNECTION_DEFAULT_MESSAGE_CONTEXT",
41
47
  @encode(nw_content_context_t), &t2)
42
- != 0)
43
- goto error;
48
+ != 0) // LCOV_BR_EXCL_LINE
49
+ goto error; // LCOV_EXCL_LINE
44
50
  t2 = NW_CONNECTION_FINAL_MESSAGE_CONTEXT;
45
51
  if (add_constant(m, "NW_CONNECTION_FINAL_MESSAGE_CONTEXT",
46
52
  @encode(nw_content_context_t), &t2)
47
- != 0)
48
- goto error;
53
+ != 0) // LCOV_BR_EXCL_LINE
54
+ goto error; // LCOV_EXCL_LINE
49
55
  t2 = NW_CONNECTION_DEFAULT_STREAM_CONTEXT;
50
56
  if (add_constant(m, "NW_CONNECTION_DEFAULT_STREAM_CONTEXT",
51
57
  @encode(nw_content_context_t), &t2)
52
- != 0)
53
- goto error;
58
+ != 0) // LCOV_BR_EXCL_LINE
59
+ goto error; // LCOV_EXCL_LINE
54
60
  nw_parameters_configure_protocol_block_t p = NW_PARAMETERS_DEFAULT_CONFIGURATION;
55
61
  if (add_constant(m, "NW_PARAMETERS_DEFAULT_CONFIGURATION",
56
62
  @encode(nw_parameters_configure_protocol_block_t), &p)
57
- != 0)
58
- goto error;
63
+ != 0) // LCOV_BR_EXCL_LINE
64
+ goto error; // LCOV_EXCL_LINE
59
65
  p = NW_PARAMETERS_DISABLE_PROTOCOL;
60
66
  if (add_constant(m, "NW_PARAMETERS_DISABLE_PROTOCOL",
61
67
  @encode(nw_parameters_configure_protocol_block_t), &p)
62
- != 0)
63
- goto error;
68
+ != 0) // LCOV_BR_EXCL_LINE
69
+ goto error; // LCOV_EXCL_LINE
64
70
  }
65
71
 
66
72
  #if PyObjC_BUILD_RELEASE >= 1016
67
- if (@available(macos 10.16, *)) {
73
+ if (@available(macos 10.16, *)) { // LCOV_BR_EXCL_LINE
68
74
  nw_privacy_context_t c = NW_DEFAULT_PRIVACY_CONTEXT;
69
75
  if (add_constant(m, "NW_DEFAULT_PRIVACY_CONTEXT", @encode(nw_privacy_context_t),
70
76
  &c)
71
- != 0)
72
- goto error;
77
+ != 0) // LCOV_BR_EXCL_LINE
78
+ goto error; // LCOV_EXCL_LINE
73
79
  }
74
80
  #endif
75
81
 
76
82
  return 0;
77
83
 
78
84
  error:
79
- return -1;
85
+ return -1; // LCOV_EXCL_LINE
80
86
  }
81
87
 
82
88
  static struct PyModuleDef_Slot mod_slots[] = {
@@ -114,10 +120,11 @@ static struct PyModuleDef mod_module = {
114
120
  .m_free = NULL,
115
121
  };
116
122
 
117
- PyObject* PyInit__Network(void);
123
+ PyObject* _Nullable PyInit__Network(void);
118
124
 
119
- PyObject* __attribute__((__visibility__("default")))
125
+ PyObject* _Nullable __attribute__((__visibility__("default")))
120
126
  PyInit__Network(void)
121
127
  {
122
128
  return PyModuleDef_Init(&mod_module);
123
129
  }
130
+ NS_ASSUME_NONNULL_END
@@ -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-Network
3
- Version: 12.2.1
3
+ Version: 13.0
4
4
  Summary: Wrappers for the framework Network 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
@@ -72,7 +72,7 @@ class TestAdvertiseDescriptor(TestCase):
72
72
  Network.nw_advertise_descriptor_get_application_service_name
73
73
  )
74
74
 
75
- def test_functional(self):
75
+ def test_functionsal(self):
76
76
  value = Network.nw_advertise_descriptor_create_bonjour_service(
77
77
  b"pyobjctest", b"_http._tcp", None
78
78
  )
@@ -48,7 +48,7 @@ class TestBrowseDescriptor(TestCase):
48
48
  Network.nw_browse_descriptor_get_application_service_name
49
49
  )
50
50
 
51
- def test_functional(self):
51
+ def test_functionsal(self):
52
52
  v = Network.nw_browse_descriptor_create_bonjour_service(b"_ssh._tcp", b"local")
53
53
  self.assertIsInstance(v, objc.objc_object)
54
54
 
@@ -25,7 +25,7 @@ class TestConnectionReport(TestCase):
25
25
  self.assertEqual(Network.nw_report_resolution_protocol_https, 4)
26
26
 
27
27
  @min_os_level("10.15")
28
- def test_contants10_15(self):
28
+ def test_constants10_15(self):
29
29
  self.assertIsInstance(Network.NW_ALL_PATHS, int)
30
30
 
31
31
  @min_os_level("10.15")
@@ -96,7 +96,6 @@ class TestConnectionReport(TestCase):
96
96
  self.assertResultIsRetained(
97
97
  Network.nw_resolution_report_copy_preferred_endpoint
98
98
  )
99
- self.assertResultIsRetained(Network.nw_resolution_report_get_protocol)
100
99
 
101
100
  nw_report_resolution_report_enumerator_t = b"B@"
102
101
 
@@ -35,9 +35,9 @@ class TestIPOptions(TestCase):
35
35
  Network.nw_ip_metadata_get_receive_time
36
36
 
37
37
  @min_os_level("10.15")
38
- def test_funtions10_15(self):
38
+ def test_functions10_15(self):
39
39
  Network.nw_ip_options_set_local_address_preference
40
40
 
41
41
  @min_os_level("11.0")
42
- def test_funtions11_0(self):
42
+ def test_functions11_0(self):
43
43
  Network.nw_ip_options_set_disable_multicast_loopback
@@ -7,7 +7,7 @@ nw_path_enumerate_gateways_block_t = b"B@"
7
7
 
8
8
 
9
9
  class TestPath(TestCase):
10
- def test_constants(self):
10
+ def test_enums(self):
11
11
  self.assertIsEnumType(Network.nw_path_status_t)
12
12
  self.assertEqual(Network.nw_path_status_invalid, 0)
13
13
  self.assertEqual(Network.nw_path_status_satisfied, 1)
@@ -36,3 +36,7 @@ class TestTCPOptions(TestCase):
36
36
  @min_os_level("12.0")
37
37
  def test_functions12_0(self):
38
38
  Network.nw_tcp_options_set_multipath_force_version
39
+
40
+ @min_os_level("27.0")
41
+ def test_functions27_0(self):
42
+ Network.nw_tcp_set_max_pacing_rate
@@ -7,7 +7,6 @@
7
7
  "alias": "_nw_data_transfer_report_all_paths"
8
8
  }
9
9
  },
10
- "classes": {},
11
10
  "enum": {
12
11
  "NW_QUIC_CONNECTION_DEFAULT_KEEPALIVE": { "value": 65535 },
13
12
  "NW_FRAMER_WAKEUP_TIME_FOREVER": {
@@ -17,7 +16,6 @@
17
16
  "value": 4294967295
18
17
  }
19
18
  },
20
- "formal_protocols": {},
21
19
  "functions": {
22
20
  "nw_listener_create_with_launchd_key": {
23
21
  "args": {
@@ -38,7 +36,6 @@
38
36
  "nw_proxy_config_enumerate_match_domains": {
39
37
  "args": {
40
38
  "1": {
41
- "type_override": "@?",
42
39
  "callable": {
43
40
  "arguments": {
44
41
  "0": {
@@ -58,7 +55,6 @@
58
55
  "nw_proxy_config_enumerate_excluded_domains": {
59
56
  "args": {
60
57
  "1": {
61
- "type_override": "@?",
62
58
  "callable": {
63
59
  "arguments": {
64
60
  "0": {
@@ -170,8 +166,7 @@
170
166
  },
171
167
  "nw_group_descriptor_create_multiplex": {
172
168
  "retval": {
173
- "already_retained": true,
174
- "typestr": "@"
169
+ "already_retained": true
175
170
  },
176
171
  "args": {
177
172
  "0": { "typestr": "@" }
@@ -1070,7 +1065,6 @@
1070
1065
  "nw_framer_message_set_value": {
1071
1066
  "args": {
1072
1067
  "1": { "type_modifier": "n", "c_array_delimited_by_null": true, "type_override": "^t" },
1073
- "2": {},
1074
1068
  "3": {
1075
1069
  "callable": {
1076
1070
  "arguments": {
@@ -1671,10 +1665,7 @@
1671
1665
  }
1672
1666
  },
1673
1667
  "nw_release": {
1674
- "ignore": true,
1675
- "args": {
1676
- "0": {}
1677
- }
1668
+ "ignore": true
1678
1669
  },
1679
1670
  "nw_resolution_report_copy_preferred_endpoint": {
1680
1671
  "retval": {
@@ -1702,11 +1693,7 @@
1702
1693
  }
1703
1694
  },
1704
1695
  "nw_retain": {
1705
- "ignore": true,
1706
- "args": {
1707
- "0": {}
1708
- },
1709
- "retval": {}
1696
+ "ignore": true
1710
1697
  },
1711
1698
  "nw_tcp_create_options": {
1712
1699
  "retval": {
@@ -1996,7 +1983,6 @@
1996
1983
  "nw_ws_response_get_selected_subprotocol": {
1997
1984
  "retval": { "c_array_delimited_by_null": true, "type_override": "^t" }
1998
1985
  }
1999
- },
2000
- "informal_protocols": {}
1986
+ }
2001
1987
  }
2002
1988
  }
@@ -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:54:06 2026
5
4
  {
6
5
  "arch": "arm64",
7
6
  "definitions": {
@@ -662,7 +661,7 @@
662
661
  "type": "I"
663
662
  },
664
663
  "nw_link_quality_t": {
665
- "type": "I"
664
+ "type": "C"
666
665
  },
667
666
  "nw_listener_state_t": {
668
667
  "type": "I"
@@ -5353,7 +5352,7 @@
5353
5352
  ],
5354
5353
  "introduced": "26.0",
5355
5354
  "retval": {
5356
- "typestr": "I"
5355
+ "typestr": "C"
5357
5356
  }
5358
5357
  },
5359
5358
  "nw_path_get_status": {
@@ -7434,6 +7433,23 @@
7434
7433
  "typestr": "v"
7435
7434
  }
7436
7435
  },
7436
+ "nw_tcp_set_max_pacing_rate": {
7437
+ "args": [
7438
+ {
7439
+ "name": "metadata",
7440
+ "type_name": "nw_protocol_metadata_t",
7441
+ "typestr": "@"
7442
+ },
7443
+ {
7444
+ "name": "max_pacing_rate",
7445
+ "type_name": "uint64_t",
7446
+ "typestr": "Q"
7447
+ }
7448
+ ],
7449
+ "retval": {
7450
+ "typestr": "i"
7451
+ }
7452
+ },
7437
7453
  "nw_tls_copy_sec_protocol_metadata": {
7438
7454
  "args": [
7439
7455
  {
@@ -8224,6 +8240,6 @@
8224
8240
  "udp_options.h",
8225
8241
  "ws_options.h"
8226
8242
  ],
8227
- "release": "26.5",
8228
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
8243
+ "release": "macOS 27.2",
8244
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
8229
8245
  }
@@ -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:54:03 2026
5
4
  {
6
5
  "arch": "x86_64",
7
6
  "definitions": {
@@ -662,7 +661,7 @@
662
661
  "type": "I"
663
662
  },
664
663
  "nw_link_quality_t": {
665
- "type": "I"
664
+ "type": "C"
666
665
  },
667
666
  "nw_listener_state_t": {
668
667
  "type": "I"
@@ -5353,7 +5352,7 @@
5353
5352
  ],
5354
5353
  "introduced": "26.0",
5355
5354
  "retval": {
5356
- "typestr": "I"
5355
+ "typestr": "C"
5357
5356
  }
5358
5357
  },
5359
5358
  "nw_path_get_status": {
@@ -7434,6 +7433,23 @@
7434
7433
  "typestr": "v"
7435
7434
  }
7436
7435
  },
7436
+ "nw_tcp_set_max_pacing_rate": {
7437
+ "args": [
7438
+ {
7439
+ "name": "metadata",
7440
+ "type_name": "nw_protocol_metadata_t",
7441
+ "typestr": "@"
7442
+ },
7443
+ {
7444
+ "name": "max_pacing_rate",
7445
+ "type_name": "uint64_t",
7446
+ "typestr": "Q"
7447
+ }
7448
+ ],
7449
+ "retval": {
7450
+ "typestr": "i"
7451
+ }
7452
+ },
7437
7453
  "nw_tls_copy_sec_protocol_metadata": {
7438
7454
  "args": [
7439
7455
  {
@@ -8224,6 +8240,6 @@
8224
8240
  "udp_options.h",
8225
8241
  "ws_options.h"
8226
8242
  ],
8227
- "release": "26.5",
8228
- "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
8243
+ "release": "macOS 27.2",
8244
+ "sdk": "Xcode 27.2 (27B5038i)/MacOSX27.sdk"
8229
8245
  }
@@ -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,
@@ -14,7 +14,7 @@ sys.path.insert(0, os.path.dirname(__file__))
14
14
 
15
15
  from pyobjc_setup import Extension, setup # noqa: E402
16
16
 
17
- VERSION = "12.2.1"
17
+ VERSION = "13.0"
18
18
 
19
19
  setup(
20
20
  name="pyobjc-framework-Network",
@@ -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