pyobjc-framework-SensitiveContentAnalysis 10.1__tar.gz → 11.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 (27) hide show
  1. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/SensitiveContentAnalysis/_metadata.py +1 -1
  2. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/PKG-INFO +6 -6
  3. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/SOURCES.txt +6 -2
  4. pyobjc_framework_sensitivecontentanalysis-11.0/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/pyobjc-build-info.txt +3 -0
  5. pyobjc_framework_sensitivecontentanalysis-11.0/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/requires.txt +3 -0
  6. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/License.txt +1 -1
  7. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/PKG-INFO +6 -6
  8. pyobjc_framework_sensitivecontentanalysis-11.0/PyObjCTest/test_scsensitivityanalysis.py +11 -0
  9. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/PyObjCTest/test_scsensitivityanalyzer.py +0 -4
  10. pyobjc_framework_sensitivecontentanalysis-11.0/metadata/raw/arm64-14.5.fwinfo +217 -0
  11. pyobjc-framework-SensitiveContentAnalysis-10.1/metadata/raw/arm64-14.0.fwinfo → pyobjc_framework_sensitivecontentanalysis-11.0/metadata/raw/arm64-15.0.fwinfo +2 -2
  12. pyobjc_framework_sensitivecontentanalysis-11.0/metadata/raw/x86_64-14.5.fwinfo +217 -0
  13. pyobjc-framework-SensitiveContentAnalysis-10.1/metadata/raw/x86_64-14.0.fwinfo → pyobjc_framework_sensitivecontentanalysis-11.0/metadata/raw/x86_64-15.0.fwinfo +2 -2
  14. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/pyobjc_setup.py +121 -27
  15. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/setup.py +2 -1
  16. pyobjc-framework-SensitiveContentAnalysis-10.1/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/requires.txt +0 -3
  17. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/SensitiveContentAnalysis/__init__.py +0 -0
  18. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/dependency_links.txt +0 -0
  19. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/not-zip-safe +0 -0
  20. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/top_level.txt +0 -0
  21. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/MANIFEST.in +0 -0
  22. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/PyObjCTest/__init__.py +0 -0
  23. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/PyObjCTest/test_sensitivecontentanalysis.py +0 -0
  24. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/metadata/SensitiveContentAnalysis.fwinfo +0 -0
  25. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/metadata/metadata.ini +0 -0
  26. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/pyproject.toml +0 -0
  27. {pyobjc-framework-SensitiveContentAnalysis-10.1 → pyobjc_framework_sensitivecontentanalysis-11.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  # This file is generated by objective.metadata
2
2
  #
3
- # Last update: Sat Jul 1 14:02:49 2023
3
+ # Last update: Tue Jun 11 10:19:56 2024
4
4
  #
5
5
  # flake8: noqa
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyobjc-framework-SensitiveContentAnalysis
3
- Version: 10.1
3
+ Version: 11.0
4
4
  Summary: Wrappers for the framework SensitiveContentAnalysis on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -18,21 +18,21 @@ Classifier: Operating System :: MacOS :: MacOS X
18
18
  Classifier: Programming Language :: Python
19
19
  Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
- Classifier: Programming Language :: Python :: 3.8
22
21
  Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
27
  Classifier: Programming Language :: Python :: Implementation :: CPython
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.8
31
+ Requires-Python: >=3.9
32
32
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=10.1
34
- Requires-Dist: pyobjc-framework-Cocoa>=10.1
35
- Requires-Dist: pyobjc-framework-Quartz>=10.1
33
+ Requires-Dist: pyobjc-core>=11.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=11.0
35
+ Requires-Dist: pyobjc-framework-Quartz>=11.0
36
36
  Project-URL: Documentation, https://pyobjc.readthedocs.io/en/latest/
37
37
  Project-URL: Issue tracker, https://github.com/ronaldoussoren/pyobjc/issues
38
38
  Project-URL: Repository, https://github.com/ronaldoussoren/pyobjc
@@ -9,12 +9,16 @@ Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/PKG-INFO
9
9
  Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/SOURCES.txt
10
10
  Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/dependency_links.txt
11
11
  Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/not-zip-safe
12
+ Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/pyobjc-build-info.txt
12
13
  Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/requires.txt
13
14
  Lib/pyobjc_framework_SensitiveContentAnalysis.egg-info/top_level.txt
14
15
  PyObjCTest/__init__.py
16
+ PyObjCTest/test_scsensitivityanalysis.py
15
17
  PyObjCTest/test_scsensitivityanalyzer.py
16
18
  PyObjCTest/test_sensitivecontentanalysis.py
17
19
  metadata/SensitiveContentAnalysis.fwinfo
18
20
  metadata/metadata.ini
19
- metadata/raw/arm64-14.0.fwinfo
20
- metadata/raw/x86_64-14.0.fwinfo
21
+ metadata/raw/arm64-14.5.fwinfo
22
+ metadata/raw/arm64-15.0.fwinfo
23
+ metadata/raw/x86_64-14.5.fwinfo
24
+ metadata/raw/x86_64-15.0.fwinfo
@@ -0,0 +1,3 @@
1
+ macOS 15.3 (24D5040f)
2
+ Apple clang version 16.0.0 (clang-1600.0.26.6)
3
+ SDK: macOS 15.2
@@ -0,0 +1,3 @@
1
+ pyobjc-core>=11.0
2
+ pyobjc-framework-Cocoa>=11.0
3
+ pyobjc-framework-Quartz>=11.0
@@ -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-2022 - Ronald Oussoren
4
+ Copyright 2003-2024 - 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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyobjc-framework-SensitiveContentAnalysis
3
- Version: 10.1
3
+ Version: 11.0
4
4
  Summary: Wrappers for the framework SensitiveContentAnalysis on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -18,21 +18,21 @@ Classifier: Operating System :: MacOS :: MacOS X
18
18
  Classifier: Programming Language :: Python
19
19
  Classifier: Programming Language :: Python :: 3
20
20
  Classifier: Programming Language :: Python :: 3 :: Only
21
- Classifier: Programming Language :: Python :: 3.8
22
21
  Classifier: Programming Language :: Python :: 3.9
23
22
  Classifier: Programming Language :: Python :: 3.10
24
23
  Classifier: Programming Language :: Python :: 3.11
25
24
  Classifier: Programming Language :: Python :: 3.12
26
25
  Classifier: Programming Language :: Python :: 3.13
26
+ Classifier: Programming Language :: Python :: 3.14
27
27
  Classifier: Programming Language :: Python :: Implementation :: CPython
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.8
31
+ Requires-Python: >=3.9
32
32
  Description-Content-Type: text/x-rst; charset=UTF-8
33
- Requires-Dist: pyobjc-core>=10.1
34
- Requires-Dist: pyobjc-framework-Cocoa>=10.1
35
- Requires-Dist: pyobjc-framework-Quartz>=10.1
33
+ Requires-Dist: pyobjc-core>=11.0
34
+ Requires-Dist: pyobjc-framework-Cocoa>=11.0
35
+ Requires-Dist: pyobjc-framework-Quartz>=11.0
36
36
 
37
37
 
38
38
  Wrappers for the "SensitiveContentAnalysis" framework on macOS.
@@ -0,0 +1,11 @@
1
+ from PyObjCTools.TestSupport import TestCase
2
+
3
+ import SensitiveContentAnalysis
4
+
5
+
6
+ class TestSCSensitivityAnalysis(TestCase):
7
+
8
+ def test_methods(self):
9
+ self.assertResultIsBOOL(
10
+ SensitiveContentAnalysis.SCSensitivityAnalysis.isSensitive
11
+ )
@@ -19,10 +19,6 @@ class TestSCSensitivityAnalyzer(TestCase):
19
19
  )
20
20
 
21
21
  def test_methods(self):
22
- self.assertResultIsBOOL(
23
- SensitiveContentAnalysis.SCSensitivityAnalysis.isSensitive
24
- )
25
-
26
22
  self.assertArgIsBlock(
27
23
  SensitiveContentAnalysis.SCSensitivityAnalyzer.analyzeImageFile_completionHandler_,
28
24
  1,
@@ -0,0 +1,217 @@
1
+ // GENERATED FILE DO NOT EDIT
2
+ //
3
+ // This file was generated by objective.metadata
4
+ // Last update: Sat May 18 09:36:45 2024
5
+ {
6
+ "arch": "arm64",
7
+ "definitions": {
8
+ "aliases": {},
9
+ "called_definitions": {},
10
+ "cftypes": {},
11
+ "classes": {
12
+ "SCSensitivityAnalysis": {
13
+ "categories": [],
14
+ "methods": [
15
+ {
16
+ "args": [],
17
+ "class_method": false,
18
+ "retval": {
19
+ "typestr": "Z",
20
+ "typestr_special": true
21
+ },
22
+ "selector": "isSensitive",
23
+ "visibility": "public"
24
+ }
25
+ ],
26
+ "name": "SCSensitivityAnalysis",
27
+ "properties": [
28
+ {
29
+ "attributes": [
30
+ "readonly",
31
+ [
32
+ "getter",
33
+ "isSensitive"
34
+ ]
35
+ ],
36
+ "name": "sensitive",
37
+ "typestr": "Z",
38
+ "typestr_special": true
39
+ }
40
+ ],
41
+ "protocols": [],
42
+ "super": "NSObject"
43
+ },
44
+ "SCSensitivityAnalyzer": {
45
+ "categories": [],
46
+ "methods": [
47
+ {
48
+ "args": [],
49
+ "class_method": false,
50
+ "retval": {
51
+ "typestr": "@",
52
+ "typestr_special": false
53
+ },
54
+ "selector": "init",
55
+ "visibility": "public"
56
+ },
57
+ {
58
+ "args": [
59
+ {
60
+ "typestr": "@",
61
+ "typestr_special": false
62
+ },
63
+ {
64
+ "callable": {
65
+ "arguments": {
66
+ "0": {
67
+ "type": "^v"
68
+ },
69
+ "1": {
70
+ "type": "@"
71
+ },
72
+ "2": {
73
+ "type": "@"
74
+ }
75
+ },
76
+ "retval": {
77
+ "type": "v"
78
+ }
79
+ },
80
+ "typestr": "@?",
81
+ "typestr_special": false
82
+ }
83
+ ],
84
+ "class_method": false,
85
+ "retval": {
86
+ "typestr": "v",
87
+ "typestr_special": false
88
+ },
89
+ "selector": "analyzeImageFile:completionHandler:",
90
+ "visibility": "public"
91
+ },
92
+ {
93
+ "args": [
94
+ {
95
+ "typestr": "^{CGImage=}",
96
+ "typestr_special": false
97
+ },
98
+ {
99
+ "callable": {
100
+ "arguments": {
101
+ "0": {
102
+ "type": "^v"
103
+ },
104
+ "1": {
105
+ "type": "@"
106
+ },
107
+ "2": {
108
+ "type": "@"
109
+ }
110
+ },
111
+ "retval": {
112
+ "type": "v"
113
+ }
114
+ },
115
+ "typestr": "@?",
116
+ "typestr_special": false
117
+ }
118
+ ],
119
+ "class_method": false,
120
+ "retval": {
121
+ "typestr": "v",
122
+ "typestr_special": false
123
+ },
124
+ "selector": "analyzeCGImage:completionHandler:",
125
+ "visibility": "public"
126
+ },
127
+ {
128
+ "args": [
129
+ {
130
+ "typestr": "@",
131
+ "typestr_special": false
132
+ },
133
+ {
134
+ "callable": {
135
+ "arguments": {
136
+ "0": {
137
+ "type": "^v"
138
+ },
139
+ "1": {
140
+ "type": "@"
141
+ },
142
+ "2": {
143
+ "type": "@"
144
+ }
145
+ },
146
+ "retval": {
147
+ "type": "v"
148
+ }
149
+ },
150
+ "typestr": "@?",
151
+ "typestr_special": false
152
+ }
153
+ ],
154
+ "class_method": false,
155
+ "retval": {
156
+ "typestr": "@",
157
+ "typestr_special": false
158
+ },
159
+ "selector": "analyzeVideoFile:completionHandler:",
160
+ "visibility": "public"
161
+ },
162
+ {
163
+ "args": [],
164
+ "class_method": false,
165
+ "retval": {
166
+ "typestr": "q",
167
+ "typestr_special": false
168
+ },
169
+ "selector": "analysisPolicy",
170
+ "visibility": "public"
171
+ }
172
+ ],
173
+ "name": "SCSensitivityAnalyzer",
174
+ "properties": [
175
+ {
176
+ "attributes": [
177
+ "assign",
178
+ "readonly"
179
+ ],
180
+ "name": "analysisPolicy",
181
+ "typestr": "q",
182
+ "typestr_special": false
183
+ }
184
+ ],
185
+ "protocols": [],
186
+ "super": "NSObject"
187
+ }
188
+ },
189
+ "enum": {
190
+ "SCSensitivityAnalysisPolicyDescriptiveInterventions": 2,
191
+ "SCSensitivityAnalysisPolicyDisabled": 0,
192
+ "SCSensitivityAnalysisPolicySimpleInterventions": 1
193
+ },
194
+ "enum_type": {
195
+ "SCSensitivityAnalysisPolicy": {
196
+ "type": "q"
197
+ }
198
+ },
199
+ "expressions": {},
200
+ "externs": {},
201
+ "formal_protocols": {},
202
+ "func_macros": {},
203
+ "functions": {},
204
+ "informal_protocols": {},
205
+ "literals": {},
206
+ "structs": {},
207
+ "typedefs": {
208
+ "SCSensitivityAnalysisPolicy": "enum SCSensitivityAnalysisPolicy"
209
+ }
210
+ },
211
+ "framework": "SensitiveContentAnalysis",
212
+ "headers": [
213
+ "SCSensitivityAnalyzer.h"
214
+ ],
215
+ "release": "10.16",
216
+ "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk"
217
+ }
@@ -1,7 +1,7 @@
1
1
  // GENERATED FILE DO NOT EDIT
2
2
  //
3
3
  // This file was generated by objective.metadata
4
- // Last update: Sat Jul 1 14:02:48 2023
4
+ // Last update: Tue Jun 11 10:19:56 2024
5
5
  {
6
6
  "arch": "arm64",
7
7
  "definitions": {
@@ -213,5 +213,5 @@
213
213
  "SCSensitivityAnalyzer.h"
214
214
  ],
215
215
  "release": "10.16",
216
- "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk"
216
+ "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk"
217
217
  }
@@ -0,0 +1,217 @@
1
+ // GENERATED FILE DO NOT EDIT
2
+ //
3
+ // This file was generated by objective.metadata
4
+ // Last update: Sat May 18 09:36:43 2024
5
+ {
6
+ "arch": "x86_64",
7
+ "definitions": {
8
+ "aliases": {},
9
+ "called_definitions": {},
10
+ "cftypes": {},
11
+ "classes": {
12
+ "SCSensitivityAnalysis": {
13
+ "categories": [],
14
+ "methods": [
15
+ {
16
+ "args": [],
17
+ "class_method": false,
18
+ "retval": {
19
+ "typestr": "Z",
20
+ "typestr_special": true
21
+ },
22
+ "selector": "isSensitive",
23
+ "visibility": "public"
24
+ }
25
+ ],
26
+ "name": "SCSensitivityAnalysis",
27
+ "properties": [
28
+ {
29
+ "attributes": [
30
+ "readonly",
31
+ [
32
+ "getter",
33
+ "isSensitive"
34
+ ]
35
+ ],
36
+ "name": "sensitive",
37
+ "typestr": "Z",
38
+ "typestr_special": true
39
+ }
40
+ ],
41
+ "protocols": [],
42
+ "super": "NSObject"
43
+ },
44
+ "SCSensitivityAnalyzer": {
45
+ "categories": [],
46
+ "methods": [
47
+ {
48
+ "args": [],
49
+ "class_method": false,
50
+ "retval": {
51
+ "typestr": "@",
52
+ "typestr_special": false
53
+ },
54
+ "selector": "init",
55
+ "visibility": "public"
56
+ },
57
+ {
58
+ "args": [
59
+ {
60
+ "typestr": "@",
61
+ "typestr_special": false
62
+ },
63
+ {
64
+ "callable": {
65
+ "arguments": {
66
+ "0": {
67
+ "type": "^v"
68
+ },
69
+ "1": {
70
+ "type": "@"
71
+ },
72
+ "2": {
73
+ "type": "@"
74
+ }
75
+ },
76
+ "retval": {
77
+ "type": "v"
78
+ }
79
+ },
80
+ "typestr": "@?",
81
+ "typestr_special": false
82
+ }
83
+ ],
84
+ "class_method": false,
85
+ "retval": {
86
+ "typestr": "v",
87
+ "typestr_special": false
88
+ },
89
+ "selector": "analyzeImageFile:completionHandler:",
90
+ "visibility": "public"
91
+ },
92
+ {
93
+ "args": [
94
+ {
95
+ "typestr": "^{CGImage=}",
96
+ "typestr_special": false
97
+ },
98
+ {
99
+ "callable": {
100
+ "arguments": {
101
+ "0": {
102
+ "type": "^v"
103
+ },
104
+ "1": {
105
+ "type": "@"
106
+ },
107
+ "2": {
108
+ "type": "@"
109
+ }
110
+ },
111
+ "retval": {
112
+ "type": "v"
113
+ }
114
+ },
115
+ "typestr": "@?",
116
+ "typestr_special": false
117
+ }
118
+ ],
119
+ "class_method": false,
120
+ "retval": {
121
+ "typestr": "v",
122
+ "typestr_special": false
123
+ },
124
+ "selector": "analyzeCGImage:completionHandler:",
125
+ "visibility": "public"
126
+ },
127
+ {
128
+ "args": [
129
+ {
130
+ "typestr": "@",
131
+ "typestr_special": false
132
+ },
133
+ {
134
+ "callable": {
135
+ "arguments": {
136
+ "0": {
137
+ "type": "^v"
138
+ },
139
+ "1": {
140
+ "type": "@"
141
+ },
142
+ "2": {
143
+ "type": "@"
144
+ }
145
+ },
146
+ "retval": {
147
+ "type": "v"
148
+ }
149
+ },
150
+ "typestr": "@?",
151
+ "typestr_special": false
152
+ }
153
+ ],
154
+ "class_method": false,
155
+ "retval": {
156
+ "typestr": "@",
157
+ "typestr_special": false
158
+ },
159
+ "selector": "analyzeVideoFile:completionHandler:",
160
+ "visibility": "public"
161
+ },
162
+ {
163
+ "args": [],
164
+ "class_method": false,
165
+ "retval": {
166
+ "typestr": "q",
167
+ "typestr_special": false
168
+ },
169
+ "selector": "analysisPolicy",
170
+ "visibility": "public"
171
+ }
172
+ ],
173
+ "name": "SCSensitivityAnalyzer",
174
+ "properties": [
175
+ {
176
+ "attributes": [
177
+ "assign",
178
+ "readonly"
179
+ ],
180
+ "name": "analysisPolicy",
181
+ "typestr": "q",
182
+ "typestr_special": false
183
+ }
184
+ ],
185
+ "protocols": [],
186
+ "super": "NSObject"
187
+ }
188
+ },
189
+ "enum": {
190
+ "SCSensitivityAnalysisPolicyDescriptiveInterventions": 2,
191
+ "SCSensitivityAnalysisPolicyDisabled": 0,
192
+ "SCSensitivityAnalysisPolicySimpleInterventions": 1
193
+ },
194
+ "enum_type": {
195
+ "SCSensitivityAnalysisPolicy": {
196
+ "type": "q"
197
+ }
198
+ },
199
+ "expressions": {},
200
+ "externs": {},
201
+ "formal_protocols": {},
202
+ "func_macros": {},
203
+ "functions": {},
204
+ "informal_protocols": {},
205
+ "literals": {},
206
+ "structs": {},
207
+ "typedefs": {
208
+ "SCSensitivityAnalysisPolicy": "enum SCSensitivityAnalysisPolicy"
209
+ }
210
+ },
211
+ "framework": "SensitiveContentAnalysis",
212
+ "headers": [
213
+ "SCSensitivityAnalyzer.h"
214
+ ],
215
+ "release": "10.16",
216
+ "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk"
217
+ }
@@ -1,7 +1,7 @@
1
1
  // GENERATED FILE DO NOT EDIT
2
2
  //
3
3
  // This file was generated by objective.metadata
4
- // Last update: Sat Jul 1 14:02:46 2023
4
+ // Last update: Tue Jun 11 10:19:54 2024
5
5
  {
6
6
  "arch": "x86_64",
7
7
  "definitions": {
@@ -213,5 +213,5 @@
213
213
  "SCSensitivityAnalyzer.h"
214
214
  ],
215
215
  "release": "10.16",
216
- "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk"
216
+ "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk"
217
217
  }
@@ -20,13 +20,15 @@ import shutil
20
20
  import subprocess
21
21
  import sys
22
22
  import tempfile
23
+ import textwrap
23
24
  import time
24
25
  import unittest
26
+ from fnmatch import fnmatch
25
27
  from sysconfig import get_config_var, get_config_vars
26
28
  from setuptools import Command
27
29
  from setuptools import Extension as _Extension
28
30
  from setuptools import setup as _setup
29
- from setuptools.command import build_ext, build_py, develop, egg_info, install_lib, test
31
+ from setuptools.command import build_ext, build_py, develop, egg_info, install_lib
30
32
 
31
33
  from distutils import log
32
34
  from distutils.errors import DistutilsError, DistutilsPlatformError
@@ -59,6 +61,7 @@ REPO_NAME = "pyobjc"
59
61
  class oc_egg_info(egg_info.egg_info):
60
62
  def run(self):
61
63
  egg_info.egg_info.run(self)
64
+ self.write_build_info()
62
65
 
63
66
  path = os.path.join(self.egg_info, "PKG-INFO")
64
67
  with open(path) as fp:
@@ -83,19 +86,54 @@ class oc_egg_info(egg_info.egg_info):
83
86
  fp.write(middle)
84
87
  fp.write(last)
85
88
 
89
+ def write_build_info(self):
90
+ macos_version = subprocess.check_output(
91
+ ["sw_vers", "-productversion"], text=True
92
+ ).strip()
93
+ macos_build = subprocess.check_output(
94
+ ["sw_vers", "-buildversion"], text=True
95
+ ).strip()
96
+ clang_version = (
97
+ subprocess.check_output(["clang", "--version"], text=True)
98
+ .splitlines()[0]
99
+ .strip()
100
+ )
101
+
102
+ sdk_root = get_sdk()
103
+ if sdk_root is None:
104
+ sdk_root = subprocess.check_output(
105
+ ["xcrun", "-sdk", "macosx", "--show-sdk-path"], text=True
106
+ ).strip()
107
+ sdk_info = os.path.join(sdk_root, "SDKSettings.plist")
108
+ if os.path.exists(sdk_info):
109
+ pl = plistlib.load(open(sdk_info, "rb"))
110
+ sdk_version = pl["DisplayName"]
111
+ else:
112
+ sdk_version = os.path.basename(sdk_root)
113
+
114
+ build_info = textwrap.dedent(
115
+ f"""\
116
+ macOS {macos_version} ({macos_build})
117
+ {clang_version}
118
+ SDK: {sdk_version}
119
+ """
120
+ )
121
+
122
+ self.write_file(
123
+ "pyobjc-build-info.txt",
124
+ os.path.join(self.egg_info, "pyobjc-build-info.txt"),
125
+ build_info,
126
+ )
127
+
86
128
 
87
- class oc_test(test.test):
129
+ class oc_test(Command):
88
130
  description = "run test suite"
89
- user_options = test.test.user_options + [
90
- ("verbosity=", None, "print what tests are run")
91
- ]
131
+ user_options = [("verbosity=", None, "print what tests are run")]
92
132
 
93
133
  def initialize_options(self):
94
- test.test.initialize_options(self)
95
134
  self.verbosity = "1"
96
135
 
97
136
  def finalize_options(self):
98
- test.test.finalize_options(self)
99
137
  if isinstance(self.verbosity, str):
100
138
  self.verbosity = int(self.verbosity)
101
139
 
@@ -154,18 +192,13 @@ class oc_test(test.test):
154
192
  self.cleanup_environment()
155
193
  self.add_project_to_sys_path()
156
194
 
157
- from pkg_resources import EntryPoint
158
-
159
- loader_ep = EntryPoint.parse("x=" + self.test_loader)
160
- loader_class = loader_ep.resolve()
161
-
162
195
  import warnings
163
196
 
164
197
  warnings.simplefilter("error")
165
198
 
166
199
  try:
167
200
  time_before = time.time()
168
- suite = loader_class().loadTestsFromName(self.distribution.test_suite)
201
+ suite = makeTestSuite()
169
202
 
170
203
  if self.verbose and self.verbosity < 3:
171
204
  runner = unittest.TextTestRunner(verbosity=3)
@@ -208,12 +241,12 @@ Operating System :: MacOS :: MacOS X
208
241
  Programming Language :: Python
209
242
  Programming Language :: Python :: 3
210
243
  Programming Language :: Python :: 3 :: Only
211
- Programming Language :: Python :: 3.8
212
244
  Programming Language :: Python :: 3.9
213
245
  Programming Language :: Python :: 3.10
214
246
  Programming Language :: Python :: 3.11
215
247
  Programming Language :: Python :: 3.12
216
248
  Programming Language :: Python :: 3.13
249
+ Programming Language :: Python :: 3.14
217
250
  Programming Language :: Python :: Implementation :: CPython
218
251
  Programming Language :: Objective C
219
252
  Topic :: Software Development :: Libraries :: Python Modules
@@ -511,21 +544,15 @@ def Extension(*args, **kwds):
511
544
  % (tuple(map(int, os_level.split(".")[:2])))
512
545
  )
513
546
 
514
- # XCode 15 has a bug w.r.t. weak linking for older macOS versions,
515
- # fall back to older linker when using that compiler.
516
- # XXX: This should be in _fixup_compiler but doesn't work there...
517
- lines = subprocess.check_output(["xcodebuild", "-version"], text=True).splitlines()
518
- if lines[0].startswith("Xcode"):
519
- xcode_vers = int(lines[0].split()[-1].split(".")[0])
520
- if xcode_vers >= 15:
521
- ldflags.append("-Wl,-ld_classic")
522
-
523
547
  if os_level == "10.4":
524
548
  cflags.append("-DNO_OBJC2_RUNTIME")
525
549
 
526
550
  if "-Werror" not in cflags:
527
551
  cflags.append("-Werror")
528
552
 
553
+ if get_config_var("Py_GIL_DISABLED"):
554
+ cflags.append("-DPyObjC_GIL_DISABLED")
555
+
529
556
  if "extra_compile_args" in kwds:
530
557
  kwds["extra_compile_args"] = kwds["extra_compile_args"] + cflags
531
558
  else:
@@ -543,8 +570,15 @@ def _sort_key(version):
543
570
  return tuple(int(x) for x in version.split("."))
544
571
 
545
572
 
546
- def setup(min_os_level=None, max_os_level=None, cmdclass=None, **kwds):
573
+ def setup(
574
+ min_os_level=None,
575
+ max_os_level=None,
576
+ cmdclass=None,
577
+ options={}, # noqa: M511, B006
578
+ **kwds,
579
+ ):
547
580
  k = kwds.copy()
581
+ options = options.copy()
548
582
 
549
583
  os_level = get_sdk_level()
550
584
  if os_level is None:
@@ -616,7 +650,7 @@ def setup(min_os_level=None, max_os_level=None, cmdclass=None, **kwds):
616
650
 
617
651
  if "ext_modules" not in k:
618
652
  # No extension modules, can build universal wheel
619
- k["options"] = {"bdist_wheel": {"universal": 1}}
653
+ options.update({"bdist_wheel": {"universal": 1}})
620
654
 
621
655
  plat_name = "MacOS X"
622
656
  plat_versions = []
@@ -658,6 +692,12 @@ def setup(min_os_level=None, max_os_level=None, cmdclass=None, **kwds):
658
692
  )
659
693
  k["long_description_content_type"] = "text/x-rst; charset=UTF-8"
660
694
 
695
+ if "bdist_wheel" in options:
696
+ # Python 3.13 does not support the limited ABI for C extensions
697
+ # when using a free threaded build.
698
+ if get_config_var("Py_GIL_DISABLED"):
699
+ del options["bdist_wheel"]
700
+
661
701
  _setup(
662
702
  cmdclass=cmdclass,
663
703
  author="Ronald Oussoren",
@@ -667,11 +707,65 @@ def setup(min_os_level=None, max_os_level=None, cmdclass=None, **kwds):
667
707
  package_dir={"": "Lib", "PyObjCTest": "PyObjCTest"},
668
708
  dependency_links=[],
669
709
  package_data={"": ["*.bridgesupport"]},
670
- test_suite="PyObjCTest",
671
710
  zip_safe=False,
672
711
  license="MIT License",
673
712
  classifiers=CLASSIFIERS,
674
- python_requires=">=3.8",
713
+ python_requires=">=3.9",
675
714
  keywords=["PyObjC"] + [p for p in k["packages"] if p not in ("PyObjCTools",)],
715
+ options=options,
676
716
  **k,
677
717
  )
718
+
719
+
720
+ def recursiveGlob(root, pathPattern):
721
+ """
722
+ Recursively look for files matching 'pathPattern'. Return a list
723
+ of matching files/directories.
724
+ """
725
+ result = []
726
+
727
+ for rootpath, _dirnames, filenames in os.walk(root):
728
+ for fn in filenames:
729
+ if fnmatch(fn, pathPattern):
730
+ result.append(os.path.join(rootpath, fn))
731
+ return result
732
+
733
+
734
+ def importExternalTestCases(pathPattern="test_*.py", root=".", package=None):
735
+ """
736
+ Import all unittests in the PyObjC tree starting at 'root'
737
+ """
738
+
739
+ testFiles = recursiveGlob(root, pathPattern)
740
+ testModules = [x[len(root) + 1 : -3].replace("/", ".") for x in testFiles]
741
+ if package is not None:
742
+ testModules = [(package + "." + m) for m in testModules]
743
+
744
+ suites = []
745
+
746
+ for modName in testModules:
747
+ try:
748
+ module = __import__(modName)
749
+ except ImportError as msg:
750
+ print(f"SKIP {modName}: {msg}")
751
+ continue
752
+
753
+ if "." in modName:
754
+ for elem in modName.split(".")[1:]:
755
+ module = getattr(module, elem)
756
+
757
+ s = unittest.defaultTestLoader.loadTestsFromModule(module)
758
+ suites.append(s)
759
+
760
+ return unittest.TestSuite(suites)
761
+
762
+
763
+ gTopdir = os.path.dirname(__file__)
764
+
765
+
766
+ def makeTestSuite():
767
+ plain_suite = importExternalTestCases(
768
+ "test_*.py", os.path.join(gTopdir, "PyObjCTest"), package="PyObjCTest"
769
+ )
770
+
771
+ return plain_suite
@@ -6,6 +6,7 @@ for information on how to use this framework and PyObjC's documentation
6
6
  for general tips and tricks regarding the translation between Python
7
7
  and (Objective-)C frameworks
8
8
  """
9
+
9
10
  import os
10
11
  import sys
11
12
 
@@ -14,7 +15,7 @@ sys.path.insert(0, os.path.dirname(__file__))
14
15
 
15
16
  from pyobjc_setup import setup # noqa: E402
16
17
 
17
- VERSION = "10.1"
18
+ VERSION = "11.0"
18
19
 
19
20
  setup(
20
21
  name="pyobjc-framework-SensitiveContentAnalysis",
@@ -1,3 +0,0 @@
1
- pyobjc-core>=10.1
2
- pyobjc-framework-Cocoa>=10.1
3
- pyobjc-framework-Quartz>=10.1