pyobjc-framework-LinkPresentation 12.0__tar.gz → 12.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/LinkPresentation/_metadata.py +1 -1
  2. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/pyobjc_framework_LinkPresentation.egg-info/PKG-INFO +6 -7
  3. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/pyobjc_framework_LinkPresentation.egg-info/SOURCES.txt +2 -2
  4. pyobjc_framework_linkpresentation-12.2/Lib/pyobjc_framework_LinkPresentation.egg-info/pyobjc-build-info.txt +3 -0
  5. pyobjc_framework_linkpresentation-12.2/Lib/pyobjc_framework_LinkPresentation.egg-info/requires.txt +3 -0
  6. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PKG-INFO +6 -7
  7. pyobjc_framework_linkpresentation-12.0/metadata/raw/arm64-26.0.fwinfo → pyobjc_framework_linkpresentation-12.2/metadata/raw/arm64-26.5.fwinfo +152 -12
  8. pyobjc_framework_linkpresentation-12.0/metadata/raw/x86_64-26.0.fwinfo → pyobjc_framework_linkpresentation-12.2/metadata/raw/x86_64-26.5.fwinfo +152 -12
  9. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/pyobjc_setup.py +4 -5
  10. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/setup.py +1 -1
  11. pyobjc_framework_linkpresentation-12.0/Lib/pyobjc_framework_LinkPresentation.egg-info/pyobjc-build-info.txt +0 -3
  12. pyobjc_framework_linkpresentation-12.0/Lib/pyobjc_framework_LinkPresentation.egg-info/requires.txt +0 -3
  13. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/LinkPresentation/__init__.py +0 -0
  14. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/pyobjc_framework_LinkPresentation.egg-info/dependency_links.txt +0 -0
  15. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/pyobjc_framework_LinkPresentation.egg-info/not-zip-safe +0 -0
  16. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/Lib/pyobjc_framework_LinkPresentation.egg-info/top_level.txt +0 -0
  17. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/License.txt +0 -0
  18. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/MANIFEST.in +0 -0
  19. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PyObjCTest/__init__.py +0 -0
  20. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PyObjCTest/test_linkpresentation.py +0 -0
  21. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PyObjCTest/test_lperror.py +0 -0
  22. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PyObjCTest/test_lplinkmetadata.py +0 -0
  23. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/PyObjCTest/test_lpmetadataprovider.py +0 -0
  24. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/metadata/LinkPresentation.fwinfo +0 -0
  25. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/metadata/metadata.ini +0 -0
  26. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/pyproject.toml +0 -0
  27. {pyobjc_framework_linkpresentation-12.0 → pyobjc_framework_linkpresentation-12.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  # This file is generated by objective.metadata
2
2
  #
3
- # Last update: Thu Jul 24 22:15:45 2025
3
+ # Last update: Sun May 24 11:51:26 2026
4
4
  #
5
5
  # flake8: noqa
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-LinkPresentation
3
- Version: 12.0
3
+ Version: 12.2
4
4
  Summary: Wrappers for the framework LinkPresentation on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,7 +17,6 @@ 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.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
23
22
  Classifier: Programming Language :: Python :: 3.12
@@ -25,15 +24,15 @@ Classifier: Programming Language :: Python :: 3.13
25
24
  Classifier: Programming Language :: Python :: 3.14
26
25
  Classifier: Programming Language :: Python :: 3.15
27
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
28
- Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
27
+ Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
29
28
  Classifier: Programming Language :: Objective C
30
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
30
  Classifier: Topic :: Software Development :: User Interfaces
32
- Requires-Python: >=3.9
31
+ Requires-Python: >=3.10
33
32
  Description-Content-Type: text/x-rst; charset=UTF-8
34
- Requires-Dist: pyobjc-core>=12.0
35
- Requires-Dist: pyobjc-framework-Cocoa>=12.0
36
- Requires-Dist: pyobjc-framework-Quartz>=12.0
33
+ Requires-Dist: pyobjc-core>=12.2
34
+ Requires-Dist: pyobjc-framework-Cocoa>=12.2
35
+ Requires-Dist: pyobjc-framework-Quartz>=12.2
37
36
  Dynamic: author
38
37
  Dynamic: author-email
39
38
  Dynamic: classifier
@@ -19,5 +19,5 @@ PyObjCTest/test_lplinkmetadata.py
19
19
  PyObjCTest/test_lpmetadataprovider.py
20
20
  metadata/LinkPresentation.fwinfo
21
21
  metadata/metadata.ini
22
- metadata/raw/arm64-26.0.fwinfo
23
- metadata/raw/x86_64-26.0.fwinfo
22
+ metadata/raw/arm64-26.5.fwinfo
23
+ metadata/raw/x86_64-26.5.fwinfo
@@ -0,0 +1,3 @@
1
+ macOS 26.5 (25F71)
2
+ Apple clang version 21.0.0 (clang-2100.1.1.101)
3
+ SDK: macOS 26.5
@@ -0,0 +1,3 @@
1
+ pyobjc-core>=12.2
2
+ pyobjc-framework-Cocoa>=12.2
3
+ pyobjc-framework-Quartz>=12.2
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobjc-framework-LinkPresentation
3
- Version: 12.0
3
+ Version: 12.2
4
4
  Summary: Wrappers for the framework LinkPresentation on macOS
5
5
  Home-page: https://github.com/ronaldoussoren/pyobjc
6
6
  Author: Ronald Oussoren
@@ -17,7 +17,6 @@ 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.9
21
20
  Classifier: Programming Language :: Python :: 3.10
22
21
  Classifier: Programming Language :: Python :: 3.11
23
22
  Classifier: Programming Language :: Python :: 3.12
@@ -25,15 +24,15 @@ Classifier: Programming Language :: Python :: 3.13
25
24
  Classifier: Programming Language :: Python :: 3.14
26
25
  Classifier: Programming Language :: Python :: 3.15
27
26
  Classifier: Programming Language :: Python :: Implementation :: CPython
28
- Classifier: Programming Language :: Python :: Free Threading :: 2 - Beta
27
+ Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
29
28
  Classifier: Programming Language :: Objective C
30
29
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
31
30
  Classifier: Topic :: Software Development :: User Interfaces
32
- Requires-Python: >=3.9
31
+ Requires-Python: >=3.10
33
32
  Description-Content-Type: text/x-rst; charset=UTF-8
34
- Requires-Dist: pyobjc-core>=12.0
35
- Requires-Dist: pyobjc-framework-Cocoa>=12.0
36
- Requires-Dist: pyobjc-framework-Quartz>=12.0
33
+ Requires-Dist: pyobjc-core>=12.2
34
+ Requires-Dist: pyobjc-framework-Cocoa>=12.2
35
+ Requires-Dist: pyobjc-framework-Quartz>=12.2
37
36
  Dynamic: author
38
37
  Dynamic: author-email
39
38
  Dynamic: classifier
@@ -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: Thu Jul 24 22:15:38 2025
4
+ // Last update: Sun May 24 11:51:26 2026
5
5
  {
6
6
  "arch": "arm64",
7
7
  "definitions": {
@@ -15,7 +15,9 @@
15
15
  {
16
16
  "args": [],
17
17
  "class_method": false,
18
+ "introduced": "10.15",
18
19
  "retval": {
20
+ "type_name": "NSURL *",
19
21
  "typestr": "@",
20
22
  "typestr_special": false
21
23
  },
@@ -25,12 +27,17 @@
25
27
  {
26
28
  "args": [
27
29
  {
30
+ "name": "originalURL",
31
+ "null_accepted": true,
32
+ "type_name": "NSURL *",
28
33
  "typestr": "@",
29
34
  "typestr_special": false
30
35
  }
31
36
  ],
32
37
  "class_method": false,
38
+ "introduced": "10.15",
33
39
  "retval": {
40
+ "type_name": "void",
34
41
  "typestr": "v",
35
42
  "typestr_special": false
36
43
  },
@@ -40,7 +47,9 @@
40
47
  {
41
48
  "args": [],
42
49
  "class_method": false,
50
+ "introduced": "10.15",
43
51
  "retval": {
52
+ "type_name": "NSURL *",
44
53
  "typestr": "@",
45
54
  "typestr_special": false
46
55
  },
@@ -50,12 +59,17 @@
50
59
  {
51
60
  "args": [
52
61
  {
62
+ "name": "URL",
63
+ "null_accepted": true,
64
+ "type_name": "NSURL *",
53
65
  "typestr": "@",
54
66
  "typestr_special": false
55
67
  }
56
68
  ],
57
69
  "class_method": false,
70
+ "introduced": "10.15",
58
71
  "retval": {
72
+ "type_name": "void",
59
73
  "typestr": "v",
60
74
  "typestr_special": false
61
75
  },
@@ -65,7 +79,9 @@
65
79
  {
66
80
  "args": [],
67
81
  "class_method": false,
82
+ "introduced": "10.15",
68
83
  "retval": {
84
+ "type_name": "NSString *",
69
85
  "typestr": "@",
70
86
  "typestr_special": false
71
87
  },
@@ -75,12 +91,17 @@
75
91
  {
76
92
  "args": [
77
93
  {
94
+ "name": "title",
95
+ "null_accepted": true,
96
+ "type_name": "NSString *",
78
97
  "typestr": "@",
79
98
  "typestr_special": false
80
99
  }
81
100
  ],
82
101
  "class_method": false,
102
+ "introduced": "10.15",
83
103
  "retval": {
104
+ "type_name": "void",
84
105
  "typestr": "v",
85
106
  "typestr_special": false
86
107
  },
@@ -90,7 +111,9 @@
90
111
  {
91
112
  "args": [],
92
113
  "class_method": false,
114
+ "introduced": "10.15",
93
115
  "retval": {
116
+ "type_name": "NSItemProvider *",
94
117
  "typestr": "@",
95
118
  "typestr_special": false
96
119
  },
@@ -100,12 +123,17 @@
100
123
  {
101
124
  "args": [
102
125
  {
126
+ "name": "iconProvider",
127
+ "null_accepted": true,
128
+ "type_name": "NSItemProvider *",
103
129
  "typestr": "@",
104
130
  "typestr_special": false
105
131
  }
106
132
  ],
107
133
  "class_method": false,
134
+ "introduced": "10.15",
108
135
  "retval": {
136
+ "type_name": "void",
109
137
  "typestr": "v",
110
138
  "typestr_special": false
111
139
  },
@@ -115,7 +143,9 @@
115
143
  {
116
144
  "args": [],
117
145
  "class_method": false,
146
+ "introduced": "10.15",
118
147
  "retval": {
148
+ "type_name": "NSItemProvider *",
119
149
  "typestr": "@",
120
150
  "typestr_special": false
121
151
  },
@@ -125,12 +155,17 @@
125
155
  {
126
156
  "args": [
127
157
  {
158
+ "name": "imageProvider",
159
+ "null_accepted": true,
160
+ "type_name": "NSItemProvider *",
128
161
  "typestr": "@",
129
162
  "typestr_special": false
130
163
  }
131
164
  ],
132
165
  "class_method": false,
166
+ "introduced": "10.15",
133
167
  "retval": {
168
+ "type_name": "void",
134
169
  "typestr": "v",
135
170
  "typestr_special": false
136
171
  },
@@ -140,7 +175,9 @@
140
175
  {
141
176
  "args": [],
142
177
  "class_method": false,
178
+ "introduced": "10.15",
143
179
  "retval": {
180
+ "type_name": "NSItemProvider *",
144
181
  "typestr": "@",
145
182
  "typestr_special": false
146
183
  },
@@ -150,12 +187,17 @@
150
187
  {
151
188
  "args": [
152
189
  {
190
+ "name": "videoProvider",
191
+ "null_accepted": true,
192
+ "type_name": "NSItemProvider *",
153
193
  "typestr": "@",
154
194
  "typestr_special": false
155
195
  }
156
196
  ],
157
197
  "class_method": false,
198
+ "introduced": "10.15",
158
199
  "retval": {
200
+ "type_name": "void",
159
201
  "typestr": "v",
160
202
  "typestr_special": false
161
203
  },
@@ -165,7 +207,9 @@
165
207
  {
166
208
  "args": [],
167
209
  "class_method": false,
210
+ "introduced": "10.15",
168
211
  "retval": {
212
+ "type_name": "NSURL *",
169
213
  "typestr": "@",
170
214
  "typestr_special": false
171
215
  },
@@ -175,12 +219,17 @@
175
219
  {
176
220
  "args": [
177
221
  {
222
+ "name": "remoteVideoURL",
223
+ "null_accepted": true,
224
+ "type_name": "NSURL *",
178
225
  "typestr": "@",
179
226
  "typestr_special": false
180
227
  }
181
228
  ],
182
229
  "class_method": false,
230
+ "introduced": "10.15",
183
231
  "retval": {
232
+ "type_name": "void",
184
233
  "typestr": "v",
185
234
  "typestr_special": false
186
235
  },
@@ -196,6 +245,7 @@
196
245
  "retain"
197
246
  ],
198
247
  "name": "originalURL",
248
+ "type_name": "NSURL *",
199
249
  "typestr": "@",
200
250
  "typestr_special": false
201
251
  },
@@ -205,6 +255,7 @@
205
255
  "retain"
206
256
  ],
207
257
  "name": "URL",
258
+ "type_name": "NSURL *",
208
259
  "typestr": "@",
209
260
  "typestr_special": false
210
261
  },
@@ -214,6 +265,7 @@
214
265
  "nonatomic"
215
266
  ],
216
267
  "name": "title",
268
+ "type_name": "NSString *",
217
269
  "typestr": "@",
218
270
  "typestr_special": false
219
271
  },
@@ -223,6 +275,7 @@
223
275
  "retain"
224
276
  ],
225
277
  "name": "iconProvider",
278
+ "type_name": "NSItemProvider *",
226
279
  "typestr": "@",
227
280
  "typestr_special": false
228
281
  },
@@ -232,6 +285,7 @@
232
285
  "retain"
233
286
  ],
234
287
  "name": "imageProvider",
288
+ "type_name": "NSItemProvider *",
235
289
  "typestr": "@",
236
290
  "typestr_special": false
237
291
  },
@@ -241,6 +295,7 @@
241
295
  "retain"
242
296
  ],
243
297
  "name": "videoProvider",
298
+ "type_name": "NSItemProvider *",
244
299
  "typestr": "@",
245
300
  "typestr_special": false
246
301
  },
@@ -250,6 +305,7 @@
250
305
  "retain"
251
306
  ],
252
307
  "name": "remoteVideoURL",
308
+ "type_name": "NSURL *",
253
309
  "typestr": "@",
254
310
  "typestr_special": false
255
311
  }
@@ -266,12 +322,18 @@
266
322
  {
267
323
  "args": [
268
324
  {
325
+ "name": "coder",
326
+ "null_accepted": true,
327
+ "type_name": "NSCoder *",
269
328
  "typestr": "@",
270
329
  "typestr_special": false
271
330
  }
272
331
  ],
273
332
  "class_method": false,
333
+ "introduced": "10.15",
274
334
  "retval": {
335
+ "instancetype": true,
336
+ "type_name": "instancetype",
275
337
  "typestr": "@",
276
338
  "typestr_special": false
277
339
  },
@@ -281,12 +343,17 @@
281
343
  {
282
344
  "args": [
283
345
  {
346
+ "name": "coder",
347
+ "null_accepted": true,
348
+ "type_name": "NSCoder *",
284
349
  "typestr": "@",
285
350
  "typestr_special": false
286
351
  }
287
352
  ],
288
353
  "class_method": false,
354
+ "introduced": "10.15",
289
355
  "retval": {
356
+ "type_name": "void",
290
357
  "typestr": "v",
291
358
  "typestr_special": false
292
359
  },
@@ -296,12 +363,18 @@
296
363
  {
297
364
  "args": [
298
365
  {
366
+ "name": "URL",
367
+ "null_accepted": true,
368
+ "type_name": "NSURL *",
299
369
  "typestr": "@",
300
370
  "typestr_special": false
301
371
  }
302
372
  ],
303
373
  "class_method": false,
374
+ "introduced": "10.15",
304
375
  "retval": {
376
+ "instancetype": true,
377
+ "type_name": "instancetype",
305
378
  "typestr": "@",
306
379
  "typestr_special": false
307
380
  },
@@ -311,12 +384,18 @@
311
384
  {
312
385
  "args": [
313
386
  {
387
+ "name": "metadata",
388
+ "null_accepted": true,
389
+ "type_name": "LPLinkMetadata *",
314
390
  "typestr": "@",
315
391
  "typestr_special": false
316
392
  }
317
393
  ],
318
394
  "class_method": false,
395
+ "introduced": "10.15",
319
396
  "retval": {
397
+ "instancetype": true,
398
+ "type_name": "instancetype",
320
399
  "typestr": "@",
321
400
  "typestr_special": false
322
401
  },
@@ -326,7 +405,9 @@
326
405
  {
327
406
  "args": [],
328
407
  "class_method": false,
408
+ "introduced": "10.15",
329
409
  "retval": {
410
+ "type_name": "LPLinkMetadata *",
330
411
  "typestr": "@",
331
412
  "typestr_special": false
332
413
  },
@@ -336,12 +417,17 @@
336
417
  {
337
418
  "args": [
338
419
  {
420
+ "name": "metadata",
421
+ "null_accepted": true,
422
+ "type_name": "LPLinkMetadata *",
339
423
  "typestr": "@",
340
424
  "typestr_special": false
341
425
  }
342
426
  ],
343
427
  "class_method": false,
428
+ "introduced": "10.15",
344
429
  "retval": {
430
+ "type_name": "void",
345
431
  "typestr": "v",
346
432
  "typestr_special": false
347
433
  },
@@ -357,6 +443,7 @@
357
443
  "nonatomic"
358
444
  ],
359
445
  "name": "metadata",
446
+ "type_name": "LPLinkMetadata *",
360
447
  "typestr": "@",
361
448
  "typestr_special": false
362
449
  }
@@ -370,6 +457,9 @@
370
457
  {
371
458
  "args": [
372
459
  {
460
+ "name": "URL",
461
+ "null_accepted": true,
462
+ "type_name": "NSURL *",
373
463
  "typestr": "@",
374
464
  "typestr_special": false
375
465
  },
@@ -380,22 +470,29 @@
380
470
  "type": "^v"
381
471
  },
382
472
  "1": {
383
- "type": "@"
473
+ "type": "@",
474
+ "type_name": "LPLinkMetadata *"
384
475
  },
385
476
  "2": {
386
- "type": "@"
477
+ "type": "@",
478
+ "type_name": "NSError *"
387
479
  }
388
480
  },
389
481
  "retval": {
390
482
  "type": "v"
391
483
  }
392
484
  },
485
+ "name": "completionHandler",
486
+ "null_accepted": true,
487
+ "type_name": "void (^)(LPLinkMetadata * _Nullable, NSError * _Nullable)",
393
488
  "typestr": "@?",
394
489
  "typestr_special": false
395
490
  }
396
491
  ],
397
492
  "class_method": false,
493
+ "introduced": "10.15",
398
494
  "retval": {
495
+ "type_name": "void",
399
496
  "typestr": "v",
400
497
  "typestr_special": false
401
498
  },
@@ -405,6 +502,9 @@
405
502
  {
406
503
  "args": [
407
504
  {
505
+ "name": "request",
506
+ "null_accepted": true,
507
+ "type_name": "NSURLRequest *",
408
508
  "typestr": "@",
409
509
  "typestr_special": false
410
510
  },
@@ -415,22 +515,29 @@
415
515
  "type": "^v"
416
516
  },
417
517
  "1": {
418
- "type": "@"
518
+ "type": "@",
519
+ "type_name": "LPLinkMetadata *"
419
520
  },
420
521
  "2": {
421
- "type": "@"
522
+ "type": "@",
523
+ "type_name": "NSError *"
422
524
  }
423
525
  },
424
526
  "retval": {
425
527
  "type": "v"
426
528
  }
427
529
  },
530
+ "name": "completionHandler",
531
+ "null_accepted": true,
532
+ "type_name": "void (^)(LPLinkMetadata * _Nullable, NSError * _Nullable)",
428
533
  "typestr": "@?",
429
534
  "typestr_special": false
430
535
  }
431
536
  ],
432
537
  "class_method": false,
538
+ "introduced": "12.0",
433
539
  "retval": {
540
+ "type_name": "void",
434
541
  "typestr": "v",
435
542
  "typestr_special": false
436
543
  },
@@ -440,7 +547,9 @@
440
547
  {
441
548
  "args": [],
442
549
  "class_method": false,
550
+ "introduced": "10.15",
443
551
  "retval": {
552
+ "type_name": "void",
444
553
  "typestr": "v",
445
554
  "typestr_special": false
446
555
  },
@@ -450,7 +559,9 @@
450
559
  {
451
560
  "args": [],
452
561
  "class_method": false,
562
+ "introduced": "10.15",
453
563
  "retval": {
564
+ "type_name": "BOOL",
454
565
  "typestr": "Z",
455
566
  "typestr_special": true
456
567
  },
@@ -460,12 +571,16 @@
460
571
  {
461
572
  "args": [
462
573
  {
574
+ "name": "shouldFetchSubresources",
575
+ "type_name": "BOOL",
463
576
  "typestr": "Z",
464
577
  "typestr_special": true
465
578
  }
466
579
  ],
467
580
  "class_method": false,
581
+ "introduced": "10.15",
468
582
  "retval": {
583
+ "type_name": "void",
469
584
  "typestr": "v",
470
585
  "typestr_special": false
471
586
  },
@@ -475,7 +590,9 @@
475
590
  {
476
591
  "args": [],
477
592
  "class_method": false,
593
+ "introduced": "10.15",
478
594
  "retval": {
595
+ "type_name": "NSTimeInterval",
479
596
  "typestr": "d",
480
597
  "typestr_special": false
481
598
  },
@@ -485,12 +602,16 @@
485
602
  {
486
603
  "args": [
487
604
  {
605
+ "name": "timeout",
606
+ "type_name": "NSTimeInterval",
488
607
  "typestr": "d",
489
608
  "typestr_special": false
490
609
  }
491
610
  ],
492
611
  "class_method": false,
612
+ "introduced": "10.15",
493
613
  "retval": {
614
+ "type_name": "void",
494
615
  "typestr": "v",
495
616
  "typestr_special": false
496
617
  },
@@ -505,6 +626,7 @@
505
626
  "nonatomic"
506
627
  ],
507
628
  "name": "shouldFetchSubresources",
629
+ "type_name": "BOOL",
508
630
  "typestr": "Z",
509
631
  "typestr_special": true
510
632
  },
@@ -513,6 +635,7 @@
513
635
  "nonatomic"
514
636
  ],
515
637
  "name": "timeout",
638
+ "type_name": "NSTimeInterval",
516
639
  "typestr": "d",
517
640
  "typestr_special": false
518
641
  }
@@ -522,11 +645,26 @@
522
645
  }
523
646
  },
524
647
  "enum": {
525
- "LPErrorMetadataFetchCancelled": 3,
526
- "LPErrorMetadataFetchFailed": 2,
527
- "LPErrorMetadataFetchNotAllowed": 5,
528
- "LPErrorMetadataFetchTimedOut": 4,
529
- "LPErrorUnknown": 1
648
+ "LPErrorMetadataFetchCancelled": {
649
+ "enum": "LPErrorCode",
650
+ "value": 3
651
+ },
652
+ "LPErrorMetadataFetchFailed": {
653
+ "enum": "LPErrorCode",
654
+ "value": 2
655
+ },
656
+ "LPErrorMetadataFetchNotAllowed": {
657
+ "enum": "LPErrorCode",
658
+ "value": 5
659
+ },
660
+ "LPErrorMetadataFetchTimedOut": {
661
+ "enum": "LPErrorCode",
662
+ "value": 4
663
+ },
664
+ "LPErrorUnknown": {
665
+ "enum": "LPErrorCode",
666
+ "value": 1
667
+ }
530
668
  },
531
669
  "enum_type": {
532
670
  "LPErrorCode": {
@@ -536,6 +674,8 @@
536
674
  "expressions": {},
537
675
  "externs": {
538
676
  "LPErrorDomain": {
677
+ "introduced": "10.15",
678
+ "type_name": "const NSErrorDomain",
539
679
  "typestr": "@"
540
680
  }
541
681
  },
@@ -557,6 +697,6 @@
557
697
  "LPLinkView.h",
558
698
  "LPMetadataProvider.h"
559
699
  ],
560
- "release": "10.16",
561
- "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk"
700
+ "release": "26.5",
701
+ "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
562
702
  }
@@ -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: Thu Jul 24 22:15:36 2025
4
+ // Last update: Sun May 24 11:51:23 2026
5
5
  {
6
6
  "arch": "x86_64",
7
7
  "definitions": {
@@ -15,7 +15,9 @@
15
15
  {
16
16
  "args": [],
17
17
  "class_method": false,
18
+ "introduced": "10.15",
18
19
  "retval": {
20
+ "type_name": "NSURL *",
19
21
  "typestr": "@",
20
22
  "typestr_special": false
21
23
  },
@@ -25,12 +27,17 @@
25
27
  {
26
28
  "args": [
27
29
  {
30
+ "name": "originalURL",
31
+ "null_accepted": true,
32
+ "type_name": "NSURL *",
28
33
  "typestr": "@",
29
34
  "typestr_special": false
30
35
  }
31
36
  ],
32
37
  "class_method": false,
38
+ "introduced": "10.15",
33
39
  "retval": {
40
+ "type_name": "void",
34
41
  "typestr": "v",
35
42
  "typestr_special": false
36
43
  },
@@ -40,7 +47,9 @@
40
47
  {
41
48
  "args": [],
42
49
  "class_method": false,
50
+ "introduced": "10.15",
43
51
  "retval": {
52
+ "type_name": "NSURL *",
44
53
  "typestr": "@",
45
54
  "typestr_special": false
46
55
  },
@@ -50,12 +59,17 @@
50
59
  {
51
60
  "args": [
52
61
  {
62
+ "name": "URL",
63
+ "null_accepted": true,
64
+ "type_name": "NSURL *",
53
65
  "typestr": "@",
54
66
  "typestr_special": false
55
67
  }
56
68
  ],
57
69
  "class_method": false,
70
+ "introduced": "10.15",
58
71
  "retval": {
72
+ "type_name": "void",
59
73
  "typestr": "v",
60
74
  "typestr_special": false
61
75
  },
@@ -65,7 +79,9 @@
65
79
  {
66
80
  "args": [],
67
81
  "class_method": false,
82
+ "introduced": "10.15",
68
83
  "retval": {
84
+ "type_name": "NSString *",
69
85
  "typestr": "@",
70
86
  "typestr_special": false
71
87
  },
@@ -75,12 +91,17 @@
75
91
  {
76
92
  "args": [
77
93
  {
94
+ "name": "title",
95
+ "null_accepted": true,
96
+ "type_name": "NSString *",
78
97
  "typestr": "@",
79
98
  "typestr_special": false
80
99
  }
81
100
  ],
82
101
  "class_method": false,
102
+ "introduced": "10.15",
83
103
  "retval": {
104
+ "type_name": "void",
84
105
  "typestr": "v",
85
106
  "typestr_special": false
86
107
  },
@@ -90,7 +111,9 @@
90
111
  {
91
112
  "args": [],
92
113
  "class_method": false,
114
+ "introduced": "10.15",
93
115
  "retval": {
116
+ "type_name": "NSItemProvider *",
94
117
  "typestr": "@",
95
118
  "typestr_special": false
96
119
  },
@@ -100,12 +123,17 @@
100
123
  {
101
124
  "args": [
102
125
  {
126
+ "name": "iconProvider",
127
+ "null_accepted": true,
128
+ "type_name": "NSItemProvider *",
103
129
  "typestr": "@",
104
130
  "typestr_special": false
105
131
  }
106
132
  ],
107
133
  "class_method": false,
134
+ "introduced": "10.15",
108
135
  "retval": {
136
+ "type_name": "void",
109
137
  "typestr": "v",
110
138
  "typestr_special": false
111
139
  },
@@ -115,7 +143,9 @@
115
143
  {
116
144
  "args": [],
117
145
  "class_method": false,
146
+ "introduced": "10.15",
118
147
  "retval": {
148
+ "type_name": "NSItemProvider *",
119
149
  "typestr": "@",
120
150
  "typestr_special": false
121
151
  },
@@ -125,12 +155,17 @@
125
155
  {
126
156
  "args": [
127
157
  {
158
+ "name": "imageProvider",
159
+ "null_accepted": true,
160
+ "type_name": "NSItemProvider *",
128
161
  "typestr": "@",
129
162
  "typestr_special": false
130
163
  }
131
164
  ],
132
165
  "class_method": false,
166
+ "introduced": "10.15",
133
167
  "retval": {
168
+ "type_name": "void",
134
169
  "typestr": "v",
135
170
  "typestr_special": false
136
171
  },
@@ -140,7 +175,9 @@
140
175
  {
141
176
  "args": [],
142
177
  "class_method": false,
178
+ "introduced": "10.15",
143
179
  "retval": {
180
+ "type_name": "NSItemProvider *",
144
181
  "typestr": "@",
145
182
  "typestr_special": false
146
183
  },
@@ -150,12 +187,17 @@
150
187
  {
151
188
  "args": [
152
189
  {
190
+ "name": "videoProvider",
191
+ "null_accepted": true,
192
+ "type_name": "NSItemProvider *",
153
193
  "typestr": "@",
154
194
  "typestr_special": false
155
195
  }
156
196
  ],
157
197
  "class_method": false,
198
+ "introduced": "10.15",
158
199
  "retval": {
200
+ "type_name": "void",
159
201
  "typestr": "v",
160
202
  "typestr_special": false
161
203
  },
@@ -165,7 +207,9 @@
165
207
  {
166
208
  "args": [],
167
209
  "class_method": false,
210
+ "introduced": "10.15",
168
211
  "retval": {
212
+ "type_name": "NSURL *",
169
213
  "typestr": "@",
170
214
  "typestr_special": false
171
215
  },
@@ -175,12 +219,17 @@
175
219
  {
176
220
  "args": [
177
221
  {
222
+ "name": "remoteVideoURL",
223
+ "null_accepted": true,
224
+ "type_name": "NSURL *",
178
225
  "typestr": "@",
179
226
  "typestr_special": false
180
227
  }
181
228
  ],
182
229
  "class_method": false,
230
+ "introduced": "10.15",
183
231
  "retval": {
232
+ "type_name": "void",
184
233
  "typestr": "v",
185
234
  "typestr_special": false
186
235
  },
@@ -196,6 +245,7 @@
196
245
  "retain"
197
246
  ],
198
247
  "name": "originalURL",
248
+ "type_name": "NSURL *",
199
249
  "typestr": "@",
200
250
  "typestr_special": false
201
251
  },
@@ -205,6 +255,7 @@
205
255
  "retain"
206
256
  ],
207
257
  "name": "URL",
258
+ "type_name": "NSURL *",
208
259
  "typestr": "@",
209
260
  "typestr_special": false
210
261
  },
@@ -214,6 +265,7 @@
214
265
  "nonatomic"
215
266
  ],
216
267
  "name": "title",
268
+ "type_name": "NSString *",
217
269
  "typestr": "@",
218
270
  "typestr_special": false
219
271
  },
@@ -223,6 +275,7 @@
223
275
  "retain"
224
276
  ],
225
277
  "name": "iconProvider",
278
+ "type_name": "NSItemProvider *",
226
279
  "typestr": "@",
227
280
  "typestr_special": false
228
281
  },
@@ -232,6 +285,7 @@
232
285
  "retain"
233
286
  ],
234
287
  "name": "imageProvider",
288
+ "type_name": "NSItemProvider *",
235
289
  "typestr": "@",
236
290
  "typestr_special": false
237
291
  },
@@ -241,6 +295,7 @@
241
295
  "retain"
242
296
  ],
243
297
  "name": "videoProvider",
298
+ "type_name": "NSItemProvider *",
244
299
  "typestr": "@",
245
300
  "typestr_special": false
246
301
  },
@@ -250,6 +305,7 @@
250
305
  "retain"
251
306
  ],
252
307
  "name": "remoteVideoURL",
308
+ "type_name": "NSURL *",
253
309
  "typestr": "@",
254
310
  "typestr_special": false
255
311
  }
@@ -266,12 +322,18 @@
266
322
  {
267
323
  "args": [
268
324
  {
325
+ "name": "coder",
326
+ "null_accepted": true,
327
+ "type_name": "NSCoder *",
269
328
  "typestr": "@",
270
329
  "typestr_special": false
271
330
  }
272
331
  ],
273
332
  "class_method": false,
333
+ "introduced": "10.15",
274
334
  "retval": {
335
+ "instancetype": true,
336
+ "type_name": "instancetype",
275
337
  "typestr": "@",
276
338
  "typestr_special": false
277
339
  },
@@ -281,12 +343,17 @@
281
343
  {
282
344
  "args": [
283
345
  {
346
+ "name": "coder",
347
+ "null_accepted": true,
348
+ "type_name": "NSCoder *",
284
349
  "typestr": "@",
285
350
  "typestr_special": false
286
351
  }
287
352
  ],
288
353
  "class_method": false,
354
+ "introduced": "10.15",
289
355
  "retval": {
356
+ "type_name": "void",
290
357
  "typestr": "v",
291
358
  "typestr_special": false
292
359
  },
@@ -296,12 +363,18 @@
296
363
  {
297
364
  "args": [
298
365
  {
366
+ "name": "URL",
367
+ "null_accepted": true,
368
+ "type_name": "NSURL *",
299
369
  "typestr": "@",
300
370
  "typestr_special": false
301
371
  }
302
372
  ],
303
373
  "class_method": false,
374
+ "introduced": "10.15",
304
375
  "retval": {
376
+ "instancetype": true,
377
+ "type_name": "instancetype",
305
378
  "typestr": "@",
306
379
  "typestr_special": false
307
380
  },
@@ -311,12 +384,18 @@
311
384
  {
312
385
  "args": [
313
386
  {
387
+ "name": "metadata",
388
+ "null_accepted": true,
389
+ "type_name": "LPLinkMetadata *",
314
390
  "typestr": "@",
315
391
  "typestr_special": false
316
392
  }
317
393
  ],
318
394
  "class_method": false,
395
+ "introduced": "10.15",
319
396
  "retval": {
397
+ "instancetype": true,
398
+ "type_name": "instancetype",
320
399
  "typestr": "@",
321
400
  "typestr_special": false
322
401
  },
@@ -326,7 +405,9 @@
326
405
  {
327
406
  "args": [],
328
407
  "class_method": false,
408
+ "introduced": "10.15",
329
409
  "retval": {
410
+ "type_name": "LPLinkMetadata *",
330
411
  "typestr": "@",
331
412
  "typestr_special": false
332
413
  },
@@ -336,12 +417,17 @@
336
417
  {
337
418
  "args": [
338
419
  {
420
+ "name": "metadata",
421
+ "null_accepted": true,
422
+ "type_name": "LPLinkMetadata *",
339
423
  "typestr": "@",
340
424
  "typestr_special": false
341
425
  }
342
426
  ],
343
427
  "class_method": false,
428
+ "introduced": "10.15",
344
429
  "retval": {
430
+ "type_name": "void",
345
431
  "typestr": "v",
346
432
  "typestr_special": false
347
433
  },
@@ -357,6 +443,7 @@
357
443
  "nonatomic"
358
444
  ],
359
445
  "name": "metadata",
446
+ "type_name": "LPLinkMetadata *",
360
447
  "typestr": "@",
361
448
  "typestr_special": false
362
449
  }
@@ -370,6 +457,9 @@
370
457
  {
371
458
  "args": [
372
459
  {
460
+ "name": "URL",
461
+ "null_accepted": true,
462
+ "type_name": "NSURL *",
373
463
  "typestr": "@",
374
464
  "typestr_special": false
375
465
  },
@@ -380,22 +470,29 @@
380
470
  "type": "^v"
381
471
  },
382
472
  "1": {
383
- "type": "@"
473
+ "type": "@",
474
+ "type_name": "LPLinkMetadata *"
384
475
  },
385
476
  "2": {
386
- "type": "@"
477
+ "type": "@",
478
+ "type_name": "NSError *"
387
479
  }
388
480
  },
389
481
  "retval": {
390
482
  "type": "v"
391
483
  }
392
484
  },
485
+ "name": "completionHandler",
486
+ "null_accepted": true,
487
+ "type_name": "void (^)(LPLinkMetadata * _Nullable, NSError * _Nullable)",
393
488
  "typestr": "@?",
394
489
  "typestr_special": false
395
490
  }
396
491
  ],
397
492
  "class_method": false,
493
+ "introduced": "10.15",
398
494
  "retval": {
495
+ "type_name": "void",
399
496
  "typestr": "v",
400
497
  "typestr_special": false
401
498
  },
@@ -405,6 +502,9 @@
405
502
  {
406
503
  "args": [
407
504
  {
505
+ "name": "request",
506
+ "null_accepted": true,
507
+ "type_name": "NSURLRequest *",
408
508
  "typestr": "@",
409
509
  "typestr_special": false
410
510
  },
@@ -415,22 +515,29 @@
415
515
  "type": "^v"
416
516
  },
417
517
  "1": {
418
- "type": "@"
518
+ "type": "@",
519
+ "type_name": "LPLinkMetadata *"
419
520
  },
420
521
  "2": {
421
- "type": "@"
522
+ "type": "@",
523
+ "type_name": "NSError *"
422
524
  }
423
525
  },
424
526
  "retval": {
425
527
  "type": "v"
426
528
  }
427
529
  },
530
+ "name": "completionHandler",
531
+ "null_accepted": true,
532
+ "type_name": "void (^)(LPLinkMetadata * _Nullable, NSError * _Nullable)",
428
533
  "typestr": "@?",
429
534
  "typestr_special": false
430
535
  }
431
536
  ],
432
537
  "class_method": false,
538
+ "introduced": "12.0",
433
539
  "retval": {
540
+ "type_name": "void",
434
541
  "typestr": "v",
435
542
  "typestr_special": false
436
543
  },
@@ -440,7 +547,9 @@
440
547
  {
441
548
  "args": [],
442
549
  "class_method": false,
550
+ "introduced": "10.15",
443
551
  "retval": {
552
+ "type_name": "void",
444
553
  "typestr": "v",
445
554
  "typestr_special": false
446
555
  },
@@ -450,7 +559,9 @@
450
559
  {
451
560
  "args": [],
452
561
  "class_method": false,
562
+ "introduced": "10.15",
453
563
  "retval": {
564
+ "type_name": "BOOL",
454
565
  "typestr": "Z",
455
566
  "typestr_special": true
456
567
  },
@@ -460,12 +571,16 @@
460
571
  {
461
572
  "args": [
462
573
  {
574
+ "name": "shouldFetchSubresources",
575
+ "type_name": "BOOL",
463
576
  "typestr": "Z",
464
577
  "typestr_special": true
465
578
  }
466
579
  ],
467
580
  "class_method": false,
581
+ "introduced": "10.15",
468
582
  "retval": {
583
+ "type_name": "void",
469
584
  "typestr": "v",
470
585
  "typestr_special": false
471
586
  },
@@ -475,7 +590,9 @@
475
590
  {
476
591
  "args": [],
477
592
  "class_method": false,
593
+ "introduced": "10.15",
478
594
  "retval": {
595
+ "type_name": "NSTimeInterval",
479
596
  "typestr": "d",
480
597
  "typestr_special": false
481
598
  },
@@ -485,12 +602,16 @@
485
602
  {
486
603
  "args": [
487
604
  {
605
+ "name": "timeout",
606
+ "type_name": "NSTimeInterval",
488
607
  "typestr": "d",
489
608
  "typestr_special": false
490
609
  }
491
610
  ],
492
611
  "class_method": false,
612
+ "introduced": "10.15",
493
613
  "retval": {
614
+ "type_name": "void",
494
615
  "typestr": "v",
495
616
  "typestr_special": false
496
617
  },
@@ -505,6 +626,7 @@
505
626
  "nonatomic"
506
627
  ],
507
628
  "name": "shouldFetchSubresources",
629
+ "type_name": "BOOL",
508
630
  "typestr": "Z",
509
631
  "typestr_special": true
510
632
  },
@@ -513,6 +635,7 @@
513
635
  "nonatomic"
514
636
  ],
515
637
  "name": "timeout",
638
+ "type_name": "NSTimeInterval",
516
639
  "typestr": "d",
517
640
  "typestr_special": false
518
641
  }
@@ -522,11 +645,26 @@
522
645
  }
523
646
  },
524
647
  "enum": {
525
- "LPErrorMetadataFetchCancelled": 3,
526
- "LPErrorMetadataFetchFailed": 2,
527
- "LPErrorMetadataFetchNotAllowed": 5,
528
- "LPErrorMetadataFetchTimedOut": 4,
529
- "LPErrorUnknown": 1
648
+ "LPErrorMetadataFetchCancelled": {
649
+ "enum": "LPErrorCode",
650
+ "value": 3
651
+ },
652
+ "LPErrorMetadataFetchFailed": {
653
+ "enum": "LPErrorCode",
654
+ "value": 2
655
+ },
656
+ "LPErrorMetadataFetchNotAllowed": {
657
+ "enum": "LPErrorCode",
658
+ "value": 5
659
+ },
660
+ "LPErrorMetadataFetchTimedOut": {
661
+ "enum": "LPErrorCode",
662
+ "value": 4
663
+ },
664
+ "LPErrorUnknown": {
665
+ "enum": "LPErrorCode",
666
+ "value": 1
667
+ }
530
668
  },
531
669
  "enum_type": {
532
670
  "LPErrorCode": {
@@ -536,6 +674,8 @@
536
674
  "expressions": {},
537
675
  "externs": {
538
676
  "LPErrorDomain": {
677
+ "introduced": "10.15",
678
+ "type_name": "const NSErrorDomain",
539
679
  "typestr": "@"
540
680
  }
541
681
  },
@@ -557,6 +697,6 @@
557
697
  "LPLinkView.h",
558
698
  "LPMetadataProvider.h"
559
699
  ],
560
- "release": "10.16",
561
- "sdk": "/Users/ronald/Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.0.sdk"
700
+ "release": "26.5",
701
+ "sdk": "/Users/ronald/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX26.5.sdk"
562
702
  }
@@ -87,10 +87,10 @@ class oc_egg_info(egg_info.egg_info):
87
87
 
88
88
  def write_build_info(self):
89
89
  macos_version = subprocess.check_output(
90
- ["sw_vers", "-productversion"], text=True
90
+ ["sw_vers", "-productVersion"], text=True
91
91
  ).strip()
92
92
  macos_build = subprocess.check_output(
93
- ["sw_vers", "-buildversion"], text=True
93
+ ["sw_vers", "-buildVersion"], text=True
94
94
  ).strip()
95
95
  clang_version = (
96
96
  subprocess.check_output(["clang", "--version"], text=True)
@@ -228,7 +228,6 @@ Operating System :: MacOS :: MacOS X
228
228
  Programming Language :: Python
229
229
  Programming Language :: Python :: 3
230
230
  Programming Language :: Python :: 3 :: Only
231
- Programming Language :: Python :: 3.9
232
231
  Programming Language :: Python :: 3.10
233
232
  Programming Language :: Python :: 3.11
234
233
  Programming Language :: Python :: 3.12
@@ -236,7 +235,7 @@ Programming Language :: Python :: 3.13
236
235
  Programming Language :: Python :: 3.14
237
236
  Programming Language :: Python :: 3.15
238
237
  Programming Language :: Python :: Implementation :: CPython
239
- Programming Language :: Python :: Free Threading :: 2 - Beta
238
+ Programming Language :: Python :: Free Threading :: 3 - Stable
240
239
  Programming Language :: Objective C
241
240
  Topic :: Software Development :: Libraries :: Python Modules
242
241
  Topic :: Software Development :: User Interfaces
@@ -678,7 +677,7 @@ def setup(
678
677
  zip_safe=False,
679
678
  license="MIT",
680
679
  classifiers=CLASSIFIERS,
681
- python_requires=">=3.9",
680
+ python_requires=">=3.10",
682
681
  keywords=["PyObjC"] + [p for p in k["packages"] if p not in ("PyObjCTools",)],
683
682
  options=options,
684
683
  **k,
@@ -15,7 +15,7 @@ sys.path.insert(0, os.path.dirname(__file__))
15
15
 
16
16
  from pyobjc_setup import setup # noqa: E402
17
17
 
18
- VERSION = "12.0"
18
+ VERSION = "12.2"
19
19
 
20
20
  setup(
21
21
  name="pyobjc-framework-LinkPresentation",
@@ -1,3 +0,0 @@
1
- macOS 26.0.1 (25A362)
2
- Apple clang version 17.0.0 (clang-1700.3.19.1)
3
- SDK: macOS 26.0
@@ -1,3 +0,0 @@
1
- pyobjc-core>=12.0
2
- pyobjc-framework-Cocoa>=12.0
3
- pyobjc-framework-Quartz>=12.0