pyobjc-framework-SystemExtensions 11.0__tar.gz → 11.1__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 (37) hide show
  1. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/pyobjc_framework_SystemExtensions.egg-info/PKG-INFO +17 -6
  2. pyobjc_framework_systemextensions-11.1/Lib/pyobjc_framework_SystemExtensions.egg-info/pyobjc-build-info.txt +3 -0
  3. pyobjc_framework_systemextensions-11.1/Lib/pyobjc_framework_SystemExtensions.egg-info/requires.txt +2 -0
  4. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/License.txt +1 -1
  5. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Modules/pyobjc-compat.h +95 -2
  6. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/PKG-INFO +17 -6
  7. pyobjc_framework_systemextensions-11.1/PyObjCTest/__init__.py +1 -0
  8. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/pyobjc_setup.py +7 -41
  9. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/setup.py +1 -1
  10. pyobjc_framework_systemextensions-11.0/Lib/pyobjc_framework_SystemExtensions.egg-info/pyobjc-build-info.txt +0 -3
  11. pyobjc_framework_systemextensions-11.0/Lib/pyobjc_framework_SystemExtensions.egg-info/requires.txt +0 -2
  12. pyobjc_framework_systemextensions-11.0/PyObjCTest/__init__.py +0 -1
  13. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/SystemExtensions/__init__.py +0 -0
  14. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/SystemExtensions/_metadata.py +0 -0
  15. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/pyobjc_framework_SystemExtensions.egg-info/SOURCES.txt +0 -0
  16. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/pyobjc_framework_SystemExtensions.egg-info/dependency_links.txt +0 -0
  17. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/pyobjc_framework_SystemExtensions.egg-info/not-zip-safe +0 -0
  18. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Lib/pyobjc_framework_SystemExtensions.egg-info/top_level.txt +0 -0
  19. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/MANIFEST.in +0 -0
  20. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Modules/_SystemExtensions.m +0 -0
  21. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Modules/_SystemExtensions_protocols.m +0 -0
  22. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/Modules/pyobjc-api.h +0 -0
  23. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/PyObjCTest/test_systemextensions.py +0 -0
  24. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/SystemExtensions.fwinfo +0 -0
  25. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/metadata.ini +0 -0
  26. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/arm64-12.3.fwinfo +0 -0
  27. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/arm64-14.5.fwinfo +0 -0
  28. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/arm64-15.0.fwinfo +0 -0
  29. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/arm64-15.2.fwinfo +0 -0
  30. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-10.15.fwinfo +0 -0
  31. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-10.16.fwinfo +0 -0
  32. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-12.3.fwinfo +0 -0
  33. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-14.5.fwinfo +0 -0
  34. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-15.0.fwinfo +0 -0
  35. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/metadata/raw/x86_64-15.2.fwinfo +0 -0
  36. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/pyproject.toml +0 -0
  37. {pyobjc_framework_systemextensions-11.0 → pyobjc_framework_systemextensions-11.1}/setup.cfg +0 -0
@@ -1,18 +1,17 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-SystemExtensions
3
- Version: 11.0
3
+ Version: 11.1
4
4
  Summary: Wrappers for the framework SystemExtensions on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
7
7
  Author-email: pyobjc-dev@lists.sourceforge.net
8
- License: MIT License
8
+ License: MIT
9
9
  Keywords: PyObjC,SystemExtensions
10
10
  Platform: MacOS X (>=10.15)
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Environment :: Console
13
13
  Classifier: Environment :: MacOS X :: Cocoa
14
14
  Classifier: Intended Audience :: Developers
15
- Classifier: License :: OSI Approved :: MIT License
16
15
  Classifier: Natural Language :: English
17
16
  Classifier: Operating System :: MacOS :: MacOS X
18
17
  Classifier: Programming Language :: Python
@@ -30,8 +29,20 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
29
  Classifier: Topic :: Software Development :: User Interfaces
31
30
  Requires-Python: >=3.9
32
31
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=11.0
34
- Requires-Dist: pyobjc-framework-Cocoa>=11.0
32
+ Requires-Dist: pyobjc-core>=11.1
33
+ Requires-Dist: pyobjc-framework-Cocoa>=11.1
34
+ Dynamic: author
35
+ Dynamic: author-email
36
+ Dynamic: classifier
37
+ Dynamic: description
38
+ Dynamic: description-content-type
39
+ Dynamic: home-page
40
+ Dynamic: keywords
41
+ Dynamic: license
42
+ Dynamic: platform
43
+ Dynamic: requires-dist
44
+ Dynamic: requires-python
45
+ Dynamic: summary
35
46
  Project-URL: Documentation, https://pyobjc.readthedocs.io/en/latest/
36
47
  Project-URL: Issue tracker, https://github.com/ronaldoussoren/pyobjc/issues
37
48
  Project-URL: Repository, https://github.com/ronaldoussoren/pyobjc
@@ -0,0 +1,3 @@
1
+ macOS 15.5 (24F74)
2
+ Apple clang version 17.0.0 (clang-1700.0.13.5)
3
+ SDK: macOS 15.5
@@ -0,0 +1,2 @@
1
+ pyobjc-core>=11.1
2
+ pyobjc-framework-Cocoa>=11.1
@@ -1,7 +1,7 @@
1
1
  (This is the MIT license, note that libffi-src is a separate product with its own license)
2
2
 
3
3
  Copyright 2002, 2003 - Bill Bumgarner, Ronald Oussoren, Steve Majewski, Lele Gaifax, et.al.
4
- Copyright 2003-2024 - Ronald Oussoren
4
+ Copyright 2003-2025 - Ronald Oussoren
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
7
7
 
@@ -179,7 +179,7 @@ extern const char* _Nullable PyObjC_Unicode_Fast_Bytes(PyObject* object);
179
179
 
180
180
  static inline PyObject* _Nullable* _Nonnull PyTuple_ITEMS(PyObject* tuple)
181
181
  {
182
- return &PyTuple_GET_ITEM(tuple, 0);
182
+ return &PyTuple_GET_ITEM(tuple, 0); // LCOV_BR_EXCL_LINE
183
183
  }
184
184
 
185
185
  /* This is a crude hack to disable a otherwise useful warning in the context of
@@ -198,7 +198,7 @@ _PyObjCTuple_SetItem(PyObject* tuple, Py_ssize_t idx, PyObject* _Nullable value)
198
198
  static inline PyObject*
199
199
  _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
200
200
  {
201
- return PyTuple_GET_ITEM(tuple, idx);
201
+ return PyTuple_GET_ITEM(tuple, idx); // LCOV_BR_EXCL_LINE
202
202
  }
203
203
  #undef PyTuple_GET_ITEM
204
204
  #define PyTuple_GET_ITEM(a, b) _PyObjCTuple_GetItem(a, b)
@@ -314,6 +314,99 @@ static inline PyObject* PyType_GetDict(PyTypeObject* type)
314
314
  }
315
315
  #endif
316
316
 
317
+ #if PY_VERSION_HEX >= 0x030c0000 && PY_VERSION_HEX < 0x030e0000
318
+ /*
319
+ * These are available in 3.14 and above, the definitions below
320
+ * mirror the private implementation in 3.13.
321
+ */
322
+ static inline int PyUnstable_Object_IsUniquelyReferenced(PyObject* ob)
323
+ {
324
+ #ifdef Py_GIL_DISABLED
325
+ return (_Py_IsOwnedByCurrentThread(ob) &&
326
+ _Py_atomic_load_uint32_relaxed(&ob->ob_ref_local) == 1 &&
327
+ _Py_atomic_load_ssize_relaxed(&ob->ob_ref_shared) == 0);
328
+ #else
329
+ return Py_REFCNT(ob) == 1;
330
+ #endif
331
+ }
332
+
333
+ static inline void
334
+ PyUnstable_EnableTryIncRef(PyObject* op __attribute__((__unused__)))
335
+ {
336
+ #ifdef Py_GIL_DISABLED
337
+ for (;;) {
338
+ Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared);
339
+ if ((shared & _Py_REF_SHARED_FLAG_MASK) != 0) {
340
+ // Nothing to do if it's in WEAKREFS, QUEUED, or MERGED states.
341
+ return;
342
+ }
343
+ if (_Py_atomic_compare_exchange_ssize(
344
+ &op->ob_ref_shared, &shared, shared | _Py_REF_MAYBE_WEAKREF)) {
345
+ return;
346
+ }
347
+ }
348
+ #endif
349
+ }
350
+
351
+ #ifdef Py_GIL_DISABLED
352
+ static inline int
353
+ _Py_TryIncrefFast(PyObject *op) {
354
+ uint32_t local = _Py_atomic_load_uint32_relaxed(&op->ob_ref_local);
355
+ local += 1;
356
+ if (local == 0) {
357
+ // immortal
358
+ return 1;
359
+ }
360
+ if (_Py_IsOwnedByCurrentThread(op)) {
361
+ _Py_INCREF_STAT_INC();
362
+ _Py_atomic_store_uint32_relaxed(&op->ob_ref_local, local);
363
+ #ifdef Py_REF_DEBUG
364
+ _Py_IncRefTotal(_PyThreadState_GET());
365
+ #endif
366
+ return 1;
367
+ }
368
+ return 0;
369
+ }
370
+
371
+ static inline int
372
+ _Py_TryIncRefShared(PyObject *op)
373
+ {
374
+ Py_ssize_t shared = _Py_atomic_load_ssize_relaxed(&op->ob_ref_shared);
375
+ for (;;) {
376
+ // If the shared refcount is zero and the object is either merged
377
+ // or may not have weak references, then we cannot incref it.
378
+ if (shared == 0 || shared == _Py_REF_MERGED) {
379
+ return 0;
380
+ }
381
+
382
+ if (_Py_atomic_compare_exchange_ssize(
383
+ &op->ob_ref_shared,
384
+ &shared,
385
+ shared + (1 << _Py_REF_SHARED_SHIFT))) {
386
+ #ifdef Py_REF_DEBUG
387
+ _Py_IncRefTotal(_PyThreadState_GET());
388
+ #endif
389
+ _Py_INCREF_STAT_INC();
390
+ return 1;
391
+ }
392
+ }
393
+ }
394
+ #endif
395
+
396
+ static inline int
397
+ PyUnstable_TryIncRef(PyObject *op __attribute__((__unused__)))
398
+ {
399
+ #ifdef Py_GIL_DISABLED
400
+ return _Py_TryIncrefFast(op) || _Py_TryIncRefShared(op);
401
+ #else
402
+ if (Py_REFCNT(op) > 0) {
403
+ Py_INCREF(op);
404
+ return 1;
405
+ }
406
+ return 0;
407
+ #endif
408
+ }
409
+ #endif
317
410
 
318
411
  NS_ASSUME_NONNULL_END
319
412
 
@@ -1,18 +1,17 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-SystemExtensions
3
- Version: 11.0
3
+ Version: 11.1
4
4
  Summary: Wrappers for the framework SystemExtensions on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
7
7
  Author-email: pyobjc-dev@lists.sourceforge.net
8
- License: MIT License
8
+ License: MIT
9
9
  Keywords: PyObjC,SystemExtensions
10
10
  Platform: MacOS X (>=10.15)
11
11
  Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Environment :: Console
13
13
  Classifier: Environment :: MacOS X :: Cocoa
14
14
  Classifier: Intended Audience :: Developers
15
- Classifier: License :: OSI Approved :: MIT License
16
15
  Classifier: Natural Language :: English
17
16
  Classifier: Operating System :: MacOS :: MacOS X
18
17
  Classifier: Programming Language :: Python
@@ -30,8 +29,20 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
29
  Classifier: Topic :: Software Development :: User Interfaces
31
30
  Requires-Python: >=3.9
32
31
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=11.0
34
- Requires-Dist: pyobjc-framework-Cocoa>=11.0
32
+ Requires-Dist: pyobjc-core>=11.1
33
+ Requires-Dist: pyobjc-framework-Cocoa>=11.1
34
+ Dynamic: author
35
+ Dynamic: author-email
36
+ Dynamic: classifier
37
+ Dynamic: description
38
+ Dynamic: description-content-type
39
+ Dynamic: home-page
40
+ Dynamic: keywords
41
+ Dynamic: license
42
+ Dynamic: platform
43
+ Dynamic: requires-dist
44
+ Dynamic: requires-python
45
+ Dynamic: summary
35
46
 
36
47
 
37
48
  Wrappers for the "SystemExtensions" framework on macOS.
@@ -0,0 +1 @@
1
+ """test suite"""
@@ -11,12 +11,11 @@ To change this file:
11
11
 
12
12
  __all__ = ("setup", "Extension", "Command")
13
13
 
14
+ import importlib
14
15
  import os
15
- import pkg_resources
16
16
  import plistlib
17
17
  import re
18
18
  import shlex
19
- import shutil
20
19
  import subprocess
21
20
  import sys
22
21
  import tempfile
@@ -138,10 +137,6 @@ class oc_test(Command):
138
137
  self.verbosity = int(self.verbosity)
139
138
 
140
139
  def cleanup_environment(self):
141
- from pkg_resources import add_activation_listener
142
-
143
- add_activation_listener(lambda dist: dist.activate())
144
-
145
140
  ei_cmd = self.get_finalized_command("egg_info")
146
141
  egg_name = ei_cmd.egg_name.replace("-", "_")
147
142
 
@@ -155,12 +150,9 @@ class oc_test(Command):
155
150
  log.info(f"removing installed {dirname!r} from sys.path before testing")
156
151
  sys.path.remove(dirname)
157
152
 
158
- pkg_resources.working_set.__init__()
153
+ importlib.invalidate_caches()
159
154
 
160
155
  def add_project_to_sys_path(self):
161
- from pkg_resources import normalize_path, add_activation_listener
162
- from pkg_resources import working_set, require
163
-
164
156
  self.reinitialize_command("egg_info")
165
157
  self.run_command("egg_info")
166
158
  self.reinitialize_command("build_ext", inplace=1)
@@ -173,20 +165,16 @@ class oc_test(Command):
173
165
  del sys.modules["PyObjCTools"]
174
166
 
175
167
  ei_cmd = self.get_finalized_command("egg_info")
176
- sys.path.insert(0, normalize_path(ei_cmd.egg_base))
168
+ sys.path.insert(0, os.path.abspath(ei_cmd.egg_base))
177
169
  sys.path.insert(1, os.path.dirname(__file__))
178
170
 
179
- add_activation_listener(lambda dist: dist.activate())
180
- working_set.__init__()
181
- require(f"{ei_cmd.egg_name}=={ei_cmd.egg_version}")
171
+ importlib.invalidate_caches()
182
172
 
183
173
  def remove_from_sys_path(self):
184
- from pkg_resources import working_set
185
-
186
174
  sys.path[:] = self.__old_path
187
175
  sys.modules.clear()
188
176
  sys.modules.update(self.__old_modules)
189
- working_set.__init__()
177
+ importlib.invalidate_caches()
190
178
 
191
179
  def run(self):
192
180
  self.cleanup_environment()
@@ -235,7 +223,6 @@ Development Status :: 5 - Production/Stable
235
223
  Environment :: Console
236
224
  Environment :: MacOS X :: Cocoa
237
225
  Intended Audience :: Developers
238
- License :: OSI Approved :: MIT License
239
226
  Natural Language :: English
240
227
  Operating System :: MacOS :: MacOS X
241
228
  Programming Language :: Python
@@ -450,28 +437,7 @@ class pyobjc_build_ext(build_ext.build_ext):
450
437
  # in 2.3 and later the headers are in the egg,
451
438
  # before that we ship a copy.
452
439
  if os.path.exists("Modules") and not os.path.isfile("Modules/pyobjc-api.h"):
453
- (dist,) = pkg_resources.require("pyobjc-core")
454
-
455
- include_root = os.path.join(self.build_temp, "pyobjc-include")
456
- if os.path.exists(include_root):
457
- shutil.rmtree(include_root)
458
-
459
- os.makedirs(include_root)
460
- if dist.has_metadata("include"):
461
- for fn in dist.metadata_listdir("include"):
462
- data = dist.get_metadata(f"include/{fn}")
463
- fp = open(os.path.join(include_root, fn), "w")
464
- try:
465
- fp.write(data)
466
- finally:
467
- fp.close()
468
-
469
- else:
470
- raise SystemExit("pyobjc-core egg-info does not include header files")
471
-
472
- for e in self.extensions:
473
- if include_root not in e.include_dirs:
474
- e.include_dirs.append(include_root)
440
+ raise DistutilsError("pyobjc-api.h not included")
475
441
 
476
442
  # Run the actual build
477
443
  build_ext.build_ext.run(self)
@@ -708,7 +674,7 @@ def setup(
708
674
  dependency_links=[],
709
675
  package_data={"": ["*.bridgesupport"]},
710
676
  zip_safe=False,
711
- license="MIT License",
677
+ license="MIT",
712
678
  classifiers=CLASSIFIERS,
713
679
  python_requires=">=3.9",
714
680
  keywords=["PyObjC"] + [p for p in k["packages"] if p not in ("PyObjCTools",)],
@@ -15,7 +15,7 @@ sys.path.insert(0, os.path.dirname(__file__))
15
15
 
16
16
  from pyobjc_setup import Extension, setup # noqa: E402
17
17
 
18
- VERSION = "11.0"
18
+ VERSION = "11.1"
19
19
 
20
20
  setup(
21
21
  name="pyobjc-framework-SystemExtensions",
@@ -1,3 +0,0 @@
1
- macOS 15.3 (24D5040f)
2
- Apple clang version 16.0.0 (clang-1600.0.26.6)
3
- SDK: macOS 15.2
@@ -1,2 +0,0 @@
1
- pyobjc-core>=11.0
2
- pyobjc-framework-Cocoa>=11.0
@@ -1 +0,0 @@
1
- """ test suite """