pyobjc-framework-Photos 12.2.2__tar.gz → 13.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/Photos/__init__.py +2 -2
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/Photos/_metadata.py +84 -5
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/pyobjc_framework_Photos.egg-info/PKG-INFO +5 -5
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/pyobjc_framework_Photos.egg-info/SOURCES.txt +3 -2
- pyobjc_framework_photos-13.0/Lib/pyobjc_framework_Photos.egg-info/pyobjc-build-info.txt +3 -0
- pyobjc_framework_photos-13.0/Lib/pyobjc_framework_Photos.egg-info/requires.txt +2 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Modules/_Photos.m +9 -2
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Modules/_Photos_protocols.m +8 -5
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Modules/pyobjc-api.h +18 -4
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Modules/pyobjc-compat.h +0 -18
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PKG-INFO +5 -5
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phadjustmentdata.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phasset.py +4 -4
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phassetchangerequest.py +14 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phassetresourcecreationoptions.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phassetresourcemanager.py +1 -1
- pyobjc_framework_photos-13.0/PyObjCTest/test_phassetresourceuploadjoboptions.py +13 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phchange.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phcloudidentifier.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phcollection.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phcontenteditinginput.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phcontenteditingoutput.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phfetchoptions.py +7 -2
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phfetchresult.py +1 -1
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phimagemanager.py +21 -18
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phlivephotoeditingcontext.py +21 -21
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_photostypes.py +111 -74
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phphotolibrary.py +41 -11
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/metadata/Photos.fwinfo +2 -130
- pyobjc_framework_photos-12.2.2/metadata/raw/arm64-26.5.fwinfo → pyobjc_framework_photos-13.0/metadata/raw/arm64-27.fwinfo +1190 -4
- pyobjc_framework_photos-12.2.2/metadata/raw/x86_64-26.5.fwinfo → pyobjc_framework_photos-13.0/metadata/raw/x86_64-27.fwinfo +1190 -4
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/pyobjc_setup.py +7 -7
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/setup.py +1 -1
- pyobjc_framework_photos-12.2.2/Lib/pyobjc_framework_Photos.egg-info/pyobjc-build-info.txt +0 -3
- pyobjc_framework_photos-12.2.2/Lib/pyobjc_framework_Photos.egg-info/requires.txt +0 -2
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/pyobjc_framework_Photos.egg-info/dependency_links.txt +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/pyobjc_framework_Photos.egg-info/not-zip-safe +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/Lib/pyobjc_framework_Photos.egg-info/top_level.txt +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/License.txt +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/MANIFEST.in +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/__init__.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_pherror.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phlivephoto.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_photos.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phpersistentchange.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phpersistentchangefetchresult.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phproject.py +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/metadata/metadata.ini +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/pyproject.toml +0 -0
- {pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/setup.cfg +0 -0
|
@@ -13,10 +13,10 @@ def _setup():
|
|
|
13
13
|
import objc
|
|
14
14
|
from . import _metadata, _Photos
|
|
15
15
|
|
|
16
|
-
if objc.macos_available(10, 15):
|
|
16
|
+
if objc.macos_available(10, 15): # pragma: no branch
|
|
17
17
|
identifier = "com.apple.Photos"
|
|
18
18
|
else:
|
|
19
|
-
identifier = "com.apple.PhotoKit.Photos"
|
|
19
|
+
identifier = "com.apple.PhotoKit.Photos" # pragma: no cover
|
|
20
20
|
|
|
21
21
|
dir_func, getattr_func = objc.createFrameworkDirAndGetattr(
|
|
22
22
|
name="Photos",
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
# This file is generated by objective.metadata
|
|
2
2
|
#
|
|
3
|
-
# Last update: Thu May 28 22:50:12 2026
|
|
4
|
-
#
|
|
5
3
|
# flake8: noqa
|
|
6
4
|
|
|
7
5
|
import objc, sys
|
|
@@ -31,7 +29,7 @@ else:
|
|
|
31
29
|
|
|
32
30
|
misc = {}
|
|
33
31
|
constants = """$PHContentEditingInputCancelledKey$PHContentEditingInputErrorKey$PHContentEditingInputResultIsInCloudKey$PHImageCancelledKey$PHImageErrorKey$PHImageManagerMaximumSize@{CGSize=dd}$PHImageResultIsDegradedKey$PHImageResultIsInCloudKey$PHImageResultRequestIDKey$PHLivePhotoEditingErrorDomain$PHLivePhotoInfoCancelledKey$PHLivePhotoInfoErrorKey$PHLivePhotoInfoIsDegradedKey$PHLivePhotoShouldRenderAtPlaybackTime$PHLocalIdentifierNotFound$PHLocalIdentifiersErrorKey$PHPhotosErrorDomain$"""
|
|
34
|
-
enums = """$PHAccessLevelAddOnly@1$PHAccessLevelReadWrite@2$PHAssetBurstSelectionTypeAutoPick@1$PHAssetBurstSelectionTypeNone@0$PHAssetBurstSelectionTypeUserPick@2$PHAssetCollectionSubtypeAlbumCloudShared@101$PHAssetCollectionSubtypeAlbumImported@6$PHAssetCollectionSubtypeAlbumMyPhotoStream@100$PHAssetCollectionSubtypeAlbumRegular@2$PHAssetCollectionSubtypeAlbumSyncedAlbum@5$PHAssetCollectionSubtypeAlbumSyncedEvent@3$PHAssetCollectionSubtypeAlbumSyncedFaces@4$PHAssetCollectionSubtypeAny@9223372036854775807$PHAssetCollectionSubtypeSmartAlbumAllHidden@205$PHAssetCollectionSubtypeSmartAlbumAnimated@214$PHAssetCollectionSubtypeSmartAlbumBursts@207$PHAssetCollectionSubtypeSmartAlbumCinematic@218$PHAssetCollectionSubtypeSmartAlbumDepthEffect@212$PHAssetCollectionSubtypeSmartAlbumFavorites@203$PHAssetCollectionSubtypeSmartAlbumGeneric@200$PHAssetCollectionSubtypeSmartAlbumLivePhotos@213$PHAssetCollectionSubtypeSmartAlbumLongExposures@215$PHAssetCollectionSubtypeSmartAlbumPanoramas@201$PHAssetCollectionSubtypeSmartAlbumRAW@217$PHAssetCollectionSubtypeSmartAlbumRecentlyAdded@206$PHAssetCollectionSubtypeSmartAlbumScreenRecordings@220$PHAssetCollectionSubtypeSmartAlbumScreenshots@211$PHAssetCollectionSubtypeSmartAlbumSelfPortraits@210$PHAssetCollectionSubtypeSmartAlbumSlomoVideos@208$PHAssetCollectionSubtypeSmartAlbumSpatial@219$PHAssetCollectionSubtypeSmartAlbumTimelapses@204$PHAssetCollectionSubtypeSmartAlbumUnableToUpload@216$PHAssetCollectionSubtypeSmartAlbumUserLibrary@209$PHAssetCollectionSubtypeSmartAlbumVideos@202$PHAssetCollectionTypeAlbum@1$PHAssetCollectionTypeMoment@3$PHAssetCollectionTypeSmartAlbum@2$PHAssetEditOperationContent@2$PHAssetEditOperationDelete@1$PHAssetEditOperationProperties@3$PHAssetMediaSubtypeNone@0$PHAssetMediaSubtypePhotoDepthEffect@16$PHAssetMediaSubtypePhotoHDR@2$PHAssetMediaSubtypePhotoLive@8$PHAssetMediaSubtypePhotoPanorama@1$PHAssetMediaSubtypePhotoScreenshot@4$PHAssetMediaSubtypeSpatialMedia@1024$PHAssetMediaSubtypeVideoCinematic@2097152$PHAssetMediaSubtypeVideoHighFrameRate@131072$PHAssetMediaSubtypeVideoScreenRecording@524288$PHAssetMediaSubtypeVideoStreamed@65536$PHAssetMediaSubtypeVideoTimelapse@262144$PHAssetMediaTypeAudio@3$PHAssetMediaTypeImage@1$PHAssetMediaTypeUnknown@0$PHAssetMediaTypeVideo@2$PHAssetPlaybackStyleImage@1$PHAssetPlaybackStyleImageAnimated@2$PHAssetPlaybackStyleLivePhoto@3$PHAssetPlaybackStyleUnsupported@0$PHAssetPlaybackStyleVideo@4$PHAssetPlaybackStyleVideoLooping@5$PHAssetResourceTypeAdjustmentBasePairedVideo@11$PHAssetResourceTypeAdjustmentBasePhoto@8$PHAssetResourceTypeAdjustmentBaseVideo@12$PHAssetResourceTypeAdjustmentData@7$PHAssetResourceTypeAlternatePhoto@4$PHAssetResourceTypeAudio@3$PHAssetResourceTypeFullSizePairedVideo@10$PHAssetResourceTypeFullSizePhoto@5$PHAssetResourceTypeFullSizeVideo@6$PHAssetResourceTypePairedVideo@9$PHAssetResourceTypePhoto@1$PHAssetResourceTypePhotoProxy@19$PHAssetResourceTypeVideo@2$PHAssetResourceUploadJobActionAcknowledge@1$PHAssetResourceUploadJobActionProcess@3$PHAssetResourceUploadJobActionRetry@2$PHAssetResourceUploadJobStateCancelled@5$PHAssetResourceUploadJobStateFailed@3$PHAssetResourceUploadJobStatePending@2$PHAssetResourceUploadJobStateRegistered@1$PHAssetResourceUploadJobStateSucceeded@4$PHAssetResourceUploadJobTypeDownloadOnly@1$PHAssetResourceUploadJobTypeUpload@0$PHAssetSourceTypeCloudShared@2$PHAssetSourceTypeNone@0$PHAssetSourceTypeUserLibrary@1$PHAssetSourceTypeiTunesSynced@4$PHAuthorizationStatusAuthorized@3$PHAuthorizationStatusDenied@2$PHAuthorizationStatusLimited@4$PHAuthorizationStatusNotDetermined@0$PHAuthorizationStatusRestricted@1$PHCollectionEditOperationAddContent@3$PHCollectionEditOperationCreateContent@4$PHCollectionEditOperationDelete@6$PHCollectionEditOperationDeleteContent@1$PHCollectionEditOperationRearrangeContent@5$PHCollectionEditOperationRemoveContent@2$PHCollectionEditOperationRename@7$PHCollectionListSubtypeAny@9223372036854775807$PHCollectionListSubtypeMomentListCluster@1$PHCollectionListSubtypeMomentListYear@2$PHCollectionListSubtypeRegularFolder@100$PHCollectionListSubtypeSmartFolderEvents@200$PHCollectionListSubtypeSmartFolderFaces@201$PHCollectionListTypeFolder@2$PHCollectionListTypeMomentList@1$PHCollectionListTypeSmartFolder@3$PHImageContentModeAspectFill@1$PHImageContentModeAspectFit@0$PHImageContentModeDefault@0$PHImageRequestOptionsDeliveryModeFastFormat@2$PHImageRequestOptionsDeliveryModeHighQualityFormat@1$PHImageRequestOptionsDeliveryModeOpportunistic@0$PHImageRequestOptionsResizeModeExact@2$PHImageRequestOptionsResizeModeFast@1$PHImageRequestOptionsResizeModeNone@0$PHImageRequestOptionsVersionCurrent@0$PHImageRequestOptionsVersionOriginal@2$PHImageRequestOptionsVersionUnadjusted@1$PHInvalidAssetResourceDataRequestID@0$PHInvalidImageRequestID@0$PHLivePhotoEditingErrorCodeAborted@1$PHLivePhotoEditingErrorCodeUnknown@0$PHLivePhotoFrameTypePhoto@0$PHLivePhotoFrameTypeVideo@1$PHLivePhotoRequestIDInvalid@0$PHObjectTypeAsset@1$PHObjectTypeAssetCollection@2$PHObjectTypeCollectionList@3$PHPhotosErrorAccessRestricted@3310$PHPhotosErrorAccessUserDenied@3311$PHPhotosErrorChangeNotSupported@3300$PHPhotosErrorIdentifierNotFound@3201$PHPhotosErrorInternalError@-1$PHPhotosErrorInvalid@-1$PHPhotosErrorInvalidResource@3302$PHPhotosErrorLibraryInFileProviderSyncRoot@5423$PHPhotosErrorLibraryVolumeOffline@3114$PHPhotosErrorLimitExceeded@3307$PHPhotosErrorMissingResource@3303$PHPhotosErrorMultipleIdentifiersFound@3202$PHPhotosErrorNetworkAccessRequired@3164$PHPhotosErrorNetworkError@3169$PHPhotosErrorNotEnoughSpace@3305$PHPhotosErrorOperationInterrupted@3301$PHPhotosErrorPersistentChangeDetailsUnavailable@3210$PHPhotosErrorPersistentChangeTokenExpired@3105$PHPhotosErrorRelinquishingLibraryBundleToWriter@3142$PHPhotosErrorRequestNotSupportedForAsset@3306$PHPhotosErrorSwitchingSystemPhotoLibrary@3143$PHPhotosErrorUserCancelled@3072$PHVideoRequestOptionsDeliveryModeAutomatic@0$PHVideoRequestOptionsDeliveryModeFastFormat@3$PHVideoRequestOptionsDeliveryModeHighQualityFormat@1$PHVideoRequestOptionsDeliveryModeMediumQualityFormat@2$PHVideoRequestOptionsVersionCurrent@0$PHVideoRequestOptionsVersionOriginal@1$"""
|
|
32
|
+
enums = """$PHAccessLevelAddOnly@1$PHAccessLevelReadWrite@2$PHAssetAdjustmentsStateCameraAutoAdjusted@3$PHAssetAdjustmentsStateNone@0$PHAssetAdjustmentsStateUserAdjusted@2$PHAssetBurstSelectionTypeAutoPick@1$PHAssetBurstSelectionTypeNone@0$PHAssetBurstSelectionTypeUserPick@2$PHAssetCollectionSubtypeAlbumCloudShared@101$PHAssetCollectionSubtypeAlbumImported@6$PHAssetCollectionSubtypeAlbumMyPhotoStream@100$PHAssetCollectionSubtypeAlbumRegular@2$PHAssetCollectionSubtypeAlbumSyncedAlbum@5$PHAssetCollectionSubtypeAlbumSyncedEvent@3$PHAssetCollectionSubtypeAlbumSyncedFaces@4$PHAssetCollectionSubtypeAny@9223372036854775807$PHAssetCollectionSubtypeSmartAlbumAllHidden@205$PHAssetCollectionSubtypeSmartAlbumAnimated@214$PHAssetCollectionSubtypeSmartAlbumBursts@207$PHAssetCollectionSubtypeSmartAlbumCinematic@218$PHAssetCollectionSubtypeSmartAlbumDepthEffect@212$PHAssetCollectionSubtypeSmartAlbumFavorites@203$PHAssetCollectionSubtypeSmartAlbumGeneric@200$PHAssetCollectionSubtypeSmartAlbumLivePhotos@213$PHAssetCollectionSubtypeSmartAlbumLongExposures@215$PHAssetCollectionSubtypeSmartAlbumPanoramas@201$PHAssetCollectionSubtypeSmartAlbumRAW@217$PHAssetCollectionSubtypeSmartAlbumRecentlyAdded@206$PHAssetCollectionSubtypeSmartAlbumScreenRecordings@220$PHAssetCollectionSubtypeSmartAlbumScreenshots@211$PHAssetCollectionSubtypeSmartAlbumSelfPortraits@210$PHAssetCollectionSubtypeSmartAlbumSlomoVideos@208$PHAssetCollectionSubtypeSmartAlbumSpatial@219$PHAssetCollectionSubtypeSmartAlbumTimelapses@204$PHAssetCollectionSubtypeSmartAlbumUnableToUpload@216$PHAssetCollectionSubtypeSmartAlbumUserLibrary@209$PHAssetCollectionSubtypeSmartAlbumVideos@202$PHAssetCollectionTypeAlbum@1$PHAssetCollectionTypeMoment@3$PHAssetCollectionTypeSmartAlbum@2$PHAssetEditOperationContent@2$PHAssetEditOperationDelete@1$PHAssetEditOperationProperties@3$PHAssetMediaSubtypeNone@0$PHAssetMediaSubtypePhotoAnimation@64$PHAssetMediaSubtypePhotoDepthEffect@16$PHAssetMediaSubtypePhotoHDR@2$PHAssetMediaSubtypePhotoLive@8$PHAssetMediaSubtypePhotoPanorama@1$PHAssetMediaSubtypePhotoScreenshot@4$PHAssetMediaSubtypeSpatialMedia@1024$PHAssetMediaSubtypeVideoCinematic@2097152$PHAssetMediaSubtypeVideoHighFrameRate@131072$PHAssetMediaSubtypeVideoScreenRecording@524288$PHAssetMediaSubtypeVideoStreamed@65536$PHAssetMediaSubtypeVideoTimelapse@262144$PHAssetMediaTypeAudio@3$PHAssetMediaTypeImage@1$PHAssetMediaTypeUnknown@0$PHAssetMediaTypeVideo@2$PHAssetPlaybackStyleImage@1$PHAssetPlaybackStyleImageAnimated@2$PHAssetPlaybackStyleLivePhoto@3$PHAssetPlaybackStyleUnsupported@0$PHAssetPlaybackStyleVideo@4$PHAssetPlaybackStyleVideoLooping@5$PHAssetPlaybackVariationAutoloop@1$PHAssetPlaybackVariationLongExposure@3$PHAssetPlaybackVariationMirror@2$PHAssetPlaybackVariationNone@0$PHAssetRatingFive@5$PHAssetRatingFour@4$PHAssetRatingOne@1$PHAssetRatingThree@3$PHAssetRatingTwo@2$PHAssetRatingUnset@0$PHAssetResourceTypeAdjustmentBasePairedVideo@11$PHAssetResourceTypeAdjustmentBasePhoto@8$PHAssetResourceTypeAdjustmentBaseVideo@12$PHAssetResourceTypeAdjustmentData@7$PHAssetResourceTypeAlternatePhoto@4$PHAssetResourceTypeAudio@3$PHAssetResourceTypeFullSizePairedVideo@10$PHAssetResourceTypeFullSizePhoto@5$PHAssetResourceTypeFullSizeVideo@6$PHAssetResourceTypePairedVideo@9$PHAssetResourceTypePhoto@1$PHAssetResourceTypePhotoProxy@19$PHAssetResourceTypeVideo@2$PHAssetResourceUploadJobActionAcknowledge@1$PHAssetResourceUploadJobActionProcess@3$PHAssetResourceUploadJobActionRetry@2$PHAssetResourceUploadJobStateCancelled@5$PHAssetResourceUploadJobStateFailed@3$PHAssetResourceUploadJobStatePending@2$PHAssetResourceUploadJobStateRegistered@1$PHAssetResourceUploadJobStateSucceeded@4$PHAssetResourceUploadJobTypeDownloadOnly@1$PHAssetResourceUploadJobTypeUpload@0$PHAssetSourceTypeCloudShared@2$PHAssetSourceTypeNone@0$PHAssetSourceTypeUserLibrary@1$PHAssetSourceTypeiTunesSynced@4$PHAuthorizationStatusAuthorized@3$PHAuthorizationStatusDenied@2$PHAuthorizationStatusLimited@4$PHAuthorizationStatusNotDetermined@0$PHAuthorizationStatusRestricted@1$PHCollectionEditOperationAddContent@3$PHCollectionEditOperationCreateContent@4$PHCollectionEditOperationDelete@6$PHCollectionEditOperationDeleteContent@1$PHCollectionEditOperationRearrangeContent@5$PHCollectionEditOperationRemoveContent@2$PHCollectionEditOperationRename@7$PHCollectionListSubtypeAny@9223372036854775807$PHCollectionListSubtypeMomentListCluster@1$PHCollectionListSubtypeMomentListYear@2$PHCollectionListSubtypeRegularFolder@100$PHCollectionListSubtypeRootFolder@101$PHCollectionListSubtypeSmartFolderEvents@200$PHCollectionListSubtypeSmartFolderFaces@201$PHCollectionListTypeFolder@2$PHCollectionListTypeMomentList@1$PHCollectionListTypeSmartFolder@3$PHImageContentModeAspectFill@1$PHImageContentModeAspectFit@0$PHImageContentModeDefault@0$PHImageRequestOptionsDeliveryModeFastFormat@2$PHImageRequestOptionsDeliveryModeHighQualityFormat@1$PHImageRequestOptionsDeliveryModeOpportunistic@0$PHImageRequestOptionsResizeModeExact@2$PHImageRequestOptionsResizeModeFast@1$PHImageRequestOptionsResizeModeNone@0$PHImageRequestOptionsVersionCurrent@0$PHImageRequestOptionsVersionOriginal@2$PHImageRequestOptionsVersionUnadjusted@1$PHInvalidAssetResourceDataRequestID@0$PHInvalidImageRequestID@0$PHLivePhotoEditingErrorCodeAborted@1$PHLivePhotoEditingErrorCodeUnknown@0$PHLivePhotoFrameTypePhoto@0$PHLivePhotoFrameTypeVideo@1$PHLivePhotoRequestIDInvalid@0$PHObjectTypeAsset@1$PHObjectTypeAssetCollection@2$PHObjectTypeCollectionList@3$PHOriginalResourceChoiceCompressed@0$PHOriginalResourceChoiceRaw@1$PHPhotosErrorAccessRestricted@3310$PHPhotosErrorAccessUserDenied@3311$PHPhotosErrorChangeNotSupported@3300$PHPhotosErrorIdentifierNotFound@3201$PHPhotosErrorInternalError@-1$PHPhotosErrorInvalid@-1$PHPhotosErrorInvalidResource@3302$PHPhotosErrorLibraryInFileProviderSyncRoot@5423$PHPhotosErrorLibraryVolumeOffline@3114$PHPhotosErrorLimitExceeded@3307$PHPhotosErrorMissingResource@3303$PHPhotosErrorMultipleIdentifiersFound@3202$PHPhotosErrorNetworkAccessRequired@3164$PHPhotosErrorNetworkError@3169$PHPhotosErrorNotEnoughSpace@3305$PHPhotosErrorOperationInterrupted@3301$PHPhotosErrorPersistentChangeDetailsUnavailable@3210$PHPhotosErrorPersistentChangeTokenExpired@3105$PHPhotosErrorRelinquishingLibraryBundleToWriter@3142$PHPhotosErrorRequestNotSupportedForAsset@3306$PHPhotosErrorSwitchingSystemPhotoLibrary@3143$PHPhotosErrorUserCancelled@3072$PHVideoRequestOptionsDeliveryModeAutomatic@0$PHVideoRequestOptionsDeliveryModeFastFormat@3$PHVideoRequestOptionsDeliveryModeHighQualityFormat@1$PHVideoRequestOptionsDeliveryModeMediumQualityFormat@2$PHVideoRequestOptionsVersionCurrent@0$PHVideoRequestOptionsVersionOriginal@1$"""
|
|
35
33
|
misc.update(
|
|
36
34
|
{
|
|
37
35
|
"PHLivePhotoEditingErrorCode": NewType("PHLivePhotoEditingErrorCode", int),
|
|
@@ -40,13 +38,16 @@ misc.update(
|
|
|
40
38
|
"PHVideoRequestOptionsDeliveryMode", int
|
|
41
39
|
),
|
|
42
40
|
"PHAuthorizationStatus": NewType("PHAuthorizationStatus", int),
|
|
41
|
+
"PHAssetAdjustmentsState": NewType("PHAssetAdjustmentsState", int),
|
|
43
42
|
"PHAssetPlaybackStyle": NewType("PHAssetPlaybackStyle", int),
|
|
44
43
|
"PHCollectionListSubtype": NewType("PHCollectionListSubtype", int),
|
|
45
44
|
"PHAssetResourceType": NewType("PHAssetResourceType", int),
|
|
46
45
|
"PHObjectType": NewType("PHObjectType", int),
|
|
46
|
+
"PHAssetRating": NewType("PHAssetRating", int),
|
|
47
47
|
"PHAssetMediaSubtype": NewType("PHAssetMediaSubtype", int),
|
|
48
48
|
"PHCollectionEditOperation": NewType("PHCollectionEditOperation", int),
|
|
49
49
|
"UIImageOrientation": NewType("UIImageOrientation", int),
|
|
50
|
+
"PHImageRequestOptionsVersion": NewType("PHImageRequestOptionsVersion", int),
|
|
50
51
|
"PHLivePhotoFrameType": NewType("PHLivePhotoFrameType", int),
|
|
51
52
|
"PHAssetBurstSelectionType": NewType("PHAssetBurstSelectionType", int),
|
|
52
53
|
"PHAssetSourceType": NewType("PHAssetSourceType", int),
|
|
@@ -54,12 +55,13 @@ misc.update(
|
|
|
54
55
|
"PHImageRequestOptionsDeliveryMode": NewType(
|
|
55
56
|
"PHImageRequestOptionsDeliveryMode", int
|
|
56
57
|
),
|
|
58
|
+
"PHAssetPlaybackVariation": NewType("PHAssetPlaybackVariation", int),
|
|
57
59
|
"PHAssetCollectionSubtype": NewType("PHAssetCollectionSubtype", int),
|
|
60
|
+
"PHOriginalResourceChoice": NewType("PHOriginalResourceChoice", int),
|
|
61
|
+
"PHAssetResourceUploadJobType": NewType("PHAssetResourceUploadJobType", int),
|
|
58
62
|
"PHAssetResourceUploadJobAction": NewType(
|
|
59
63
|
"PHAssetResourceUploadJobAction", int
|
|
60
64
|
),
|
|
61
|
-
"PHAssetResourceUploadJobType": NewType("PHAssetResourceUploadJobType", int),
|
|
62
|
-
"PHImageRequestOptionsVersion": NewType("PHImageRequestOptionsVersion", int),
|
|
63
65
|
"PHVideoRequestOptionsVersion": NewType("PHVideoRequestOptionsVersion", int),
|
|
64
66
|
"PHAssetCollectionType": NewType("PHAssetCollectionType", int),
|
|
65
67
|
"PHAssetMediaType": NewType("PHAssetMediaType", int),
|
|
@@ -93,6 +95,11 @@ try:
|
|
|
93
95
|
b"photoLibraryDidChange:",
|
|
94
96
|
{"required": True, "retval": {"type": b"v"}, "arguments": {2: {"type": b"@"}}},
|
|
95
97
|
)
|
|
98
|
+
r(
|
|
99
|
+
b"NSObject",
|
|
100
|
+
b"photoLibraryPersistentChangesDidUpdate:",
|
|
101
|
+
{"required": True, "retval": {"type": b"v"}, "arguments": {2: {"type": b"@"}}},
|
|
102
|
+
)
|
|
96
103
|
r(b"NSObject", b"renderScale", {"required": True, "retval": {"type": "d"}})
|
|
97
104
|
r(b"NSObject", b"time", {"required": True, "retval": {"type": "{CMTime=qiIq}"}})
|
|
98
105
|
r(b"NSObject", b"type", {"required": True, "retval": {"type": "q"}})
|
|
@@ -124,6 +131,11 @@ try:
|
|
|
124
131
|
r(b"PHAssetChangeRequest", b"isHidden", {"retval": {"type": b"Z"}})
|
|
125
132
|
r(b"PHAssetChangeRequest", b"setFavorite:", {"arguments": {2: {"type": b"Z"}}})
|
|
126
133
|
r(b"PHAssetChangeRequest", b"setHidden:", {"arguments": {2: {"type": b"Z"}}})
|
|
134
|
+
r(
|
|
135
|
+
b"PHAssetChangeRequest",
|
|
136
|
+
b"setLivePhotoVideoPlaybackEnabled:",
|
|
137
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
138
|
+
)
|
|
127
139
|
r(
|
|
128
140
|
b"PHAssetCreationRequest",
|
|
129
141
|
b"supportsAssetResourceTypes:",
|
|
@@ -205,6 +217,16 @@ try:
|
|
|
205
217
|
}
|
|
206
218
|
},
|
|
207
219
|
)
|
|
220
|
+
r(
|
|
221
|
+
b"PHAssetResourceUploadJobOptions",
|
|
222
|
+
b"preventsExpensiveNetworkAccess",
|
|
223
|
+
{"retval": {"type": b"Z"}},
|
|
224
|
+
)
|
|
225
|
+
r(
|
|
226
|
+
b"PHAssetResourceUploadJobOptions",
|
|
227
|
+
b"setPreventsExpensiveNetworkAccess:",
|
|
228
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
229
|
+
)
|
|
208
230
|
r(
|
|
209
231
|
b"PHCachingImageManager",
|
|
210
232
|
b"allowsCachingHighQualityImages",
|
|
@@ -288,6 +310,16 @@ try:
|
|
|
288
310
|
}
|
|
289
311
|
},
|
|
290
312
|
)
|
|
313
|
+
r(
|
|
314
|
+
b"PHContentEditingInputRequestOptions",
|
|
315
|
+
b"setSkipsDisplaySizeImage:",
|
|
316
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
317
|
+
)
|
|
318
|
+
r(
|
|
319
|
+
b"PHContentEditingInputRequestOptions",
|
|
320
|
+
b"skipsDisplaySizeImage",
|
|
321
|
+
{"retval": {"type": b"Z"}},
|
|
322
|
+
)
|
|
291
323
|
r(
|
|
292
324
|
b"PHContentEditingOutput",
|
|
293
325
|
b"renderedContentURLForType:error:",
|
|
@@ -295,12 +327,18 @@ try:
|
|
|
295
327
|
)
|
|
296
328
|
r(b"PHFetchOptions", b"includeAllBurstAssets", {"retval": {"type": b"Z"}})
|
|
297
329
|
r(b"PHFetchOptions", b"includeHiddenAssets", {"retval": {"type": "Z"}})
|
|
330
|
+
r(b"PHFetchOptions", b"prefetchAssetExtendedMetadata", {"retval": {"type": b"Z"}})
|
|
298
331
|
r(
|
|
299
332
|
b"PHFetchOptions",
|
|
300
333
|
b"setIncludeAllBurstAssets:",
|
|
301
334
|
{"arguments": {2: {"type": b"Z"}}},
|
|
302
335
|
)
|
|
303
336
|
r(b"PHFetchOptions", b"setIncludeHiddenAssets:", {"arguments": {2: {"type": "Z"}}})
|
|
337
|
+
r(
|
|
338
|
+
b"PHFetchOptions",
|
|
339
|
+
b"setPrefetchAssetExtendedMetadata:",
|
|
340
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
341
|
+
)
|
|
304
342
|
r(
|
|
305
343
|
b"PHFetchOptions",
|
|
306
344
|
b"setWantsIncrementalChangeDetails:",
|
|
@@ -527,6 +565,7 @@ try:
|
|
|
527
565
|
)
|
|
528
566
|
r(b"PHImageRequestOptions", b"isNetworkAccessAllowed", {"retval": {"type": "Z"}})
|
|
529
567
|
r(b"PHImageRequestOptions", b"isSynchronous", {"retval": {"type": "Z"}})
|
|
568
|
+
r(b"PHImageRequestOptions", b"preferHDR", {"retval": {"type": b"Z"}})
|
|
530
569
|
r(
|
|
531
570
|
b"PHImageRequestOptions",
|
|
532
571
|
b"progressHandler",
|
|
@@ -555,6 +594,7 @@ try:
|
|
|
555
594
|
b"setNetworkAccessAllowed:",
|
|
556
595
|
{"arguments": {2: {"type": "Z"}}},
|
|
557
596
|
)
|
|
597
|
+
r(b"PHImageRequestOptions", b"setPreferHDR:", {"arguments": {2: {"type": b"Z"}}})
|
|
558
598
|
r(
|
|
559
599
|
b"PHImageRequestOptions",
|
|
560
600
|
b"setProgressHandler:",
|
|
@@ -671,6 +711,7 @@ try:
|
|
|
671
711
|
b"isNetworkAccessAllowed",
|
|
672
712
|
{"retval": {"type": b"Z"}},
|
|
673
713
|
)
|
|
714
|
+
r(b"PHLivePhotoRequestOptions", b"preferHDR", {"retval": {"type": b"Z"}})
|
|
674
715
|
r(
|
|
675
716
|
b"PHLivePhotoRequestOptions",
|
|
676
717
|
b"progressHandler",
|
|
@@ -694,6 +735,11 @@ try:
|
|
|
694
735
|
b"setNetworkAccessAllowed:",
|
|
695
736
|
{"arguments": {2: {"type": b"Z"}}},
|
|
696
737
|
)
|
|
738
|
+
r(
|
|
739
|
+
b"PHLivePhotoRequestOptions",
|
|
740
|
+
b"setPreferHDR:",
|
|
741
|
+
{"arguments": {2: {"type": b"Z"}}},
|
|
742
|
+
)
|
|
697
743
|
r(
|
|
698
744
|
b"PHLivePhotoRequestOptions",
|
|
699
745
|
b"setProgressHandler:",
|
|
@@ -739,11 +785,22 @@ try:
|
|
|
739
785
|
}
|
|
740
786
|
},
|
|
741
787
|
)
|
|
788
|
+
r(
|
|
789
|
+
b"PHPhotoLibrary",
|
|
790
|
+
b"disableUploadJobExtensionWithError:",
|
|
791
|
+
{"retval": {"type": b"Z"}, "arguments": {2: {"type_modifier": b"o"}}},
|
|
792
|
+
)
|
|
793
|
+
r(
|
|
794
|
+
b"PHPhotoLibrary",
|
|
795
|
+
b"enableUploadJobExtensionWithOptions:error:",
|
|
796
|
+
{"retval": {"type": b"Z"}, "arguments": {3: {"type_modifier": b"o"}}},
|
|
797
|
+
)
|
|
742
798
|
r(
|
|
743
799
|
b"PHPhotoLibrary",
|
|
744
800
|
b"fetchPersistentChangesSinceToken:error:",
|
|
745
801
|
{"arguments": {3: {"type_modifier": b"o"}}},
|
|
746
802
|
)
|
|
803
|
+
r(b"PHPhotoLibrary", b"isUploadJobExtensionEnabled", {"retval": {"type": b"Z"}})
|
|
747
804
|
r(
|
|
748
805
|
b"PHPhotoLibrary",
|
|
749
806
|
b"performChanges:completionHandler:",
|
|
@@ -812,6 +869,19 @@ try:
|
|
|
812
869
|
}
|
|
813
870
|
},
|
|
814
871
|
)
|
|
872
|
+
r(
|
|
873
|
+
b"PHPhotoLibrary",
|
|
874
|
+
b"setUploadJobExtensionEnabled:error:",
|
|
875
|
+
{
|
|
876
|
+
"retval": {"type": b"Z"},
|
|
877
|
+
"arguments": {2: {"type": b"Z"}, 3: {"type_modifier": b"o"}},
|
|
878
|
+
},
|
|
879
|
+
)
|
|
880
|
+
r(
|
|
881
|
+
b"PHPhotoLibrary",
|
|
882
|
+
b"setUploadJobExtensionOptions:error:",
|
|
883
|
+
{"retval": {"type": b"Z"}, "arguments": {3: {"type_modifier": b"o"}}},
|
|
884
|
+
)
|
|
815
885
|
r(b"PHProject", b"hasProjectPreview", {"retval": {"type": "Z"}})
|
|
816
886
|
r(b"PHVideoRequestOptions", b"isNetworkAccessAllowed", {"retval": {"type": b"Z"}})
|
|
817
887
|
r(
|
|
@@ -864,6 +934,9 @@ finally:
|
|
|
864
934
|
objc.registerNewKeywordsFromSelector(
|
|
865
935
|
"PHAdjustmentData", b"initWithFormatIdentifier:formatVersion:data:"
|
|
866
936
|
)
|
|
937
|
+
objc.registerNewKeywordsFromSelector(
|
|
938
|
+
"PHCloudIdentifier", b"initWithArchivalStringValue:"
|
|
939
|
+
)
|
|
867
940
|
objc.registerNewKeywordsFromSelector("PHCloudIdentifier", b"initWithStringValue:")
|
|
868
941
|
objc.registerNewKeywordsFromSelector(
|
|
869
942
|
"PHContentEditingOutput", b"initWithContentEditingInput:"
|
|
@@ -903,5 +976,11 @@ objc.registerNewKeywords(
|
|
|
903
976
|
"creationRequestForCollectionListWithTitle_",
|
|
904
977
|
)
|
|
905
978
|
expressions = {}
|
|
979
|
+
formal_protocols = {
|
|
980
|
+
"PHLivePhotoFrame": "PHLivePhotoFrame",
|
|
981
|
+
"PHPhotoLibraryAvailabilityObserver": "PHPhotoLibraryAvailabilityObserver",
|
|
982
|
+
"PHPhotoLibraryChangeObserver": "PHPhotoLibraryChangeObserver",
|
|
983
|
+
"PHPhotoLibraryPersistentChangesObserver": "PHPhotoLibraryPersistentChangesObserver",
|
|
984
|
+
}
|
|
906
985
|
|
|
907
986
|
# END OF FILE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyobjc-framework-Photos
|
|
3
|
-
Version:
|
|
3
|
+
Version: 13.0
|
|
4
4
|
Summary: Wrappers for the framework Photos on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -17,21 +17,21 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
19
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.14
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.15
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.16
|
|
26
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
27
|
Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
|
|
28
28
|
Classifier: Programming Language :: Objective C
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
31
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.11
|
|
32
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
33
|
-
Requires-Dist: pyobjc-core>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
33
|
+
Requires-Dist: pyobjc-core>=13.0
|
|
34
|
+
Requires-Dist: pyobjc-framework-Cocoa>=13.0
|
|
35
35
|
Dynamic: author
|
|
36
36
|
Dynamic: author-email
|
|
37
37
|
Dynamic: classifier
|
|
@@ -22,6 +22,7 @@ PyObjCTest/test_phasset.py
|
|
|
22
22
|
PyObjCTest/test_phassetchangerequest.py
|
|
23
23
|
PyObjCTest/test_phassetresourcecreationoptions.py
|
|
24
24
|
PyObjCTest/test_phassetresourcemanager.py
|
|
25
|
+
PyObjCTest/test_phassetresourceuploadjoboptions.py
|
|
25
26
|
PyObjCTest/test_phchange.py
|
|
26
27
|
PyObjCTest/test_phcloudidentifier.py
|
|
27
28
|
PyObjCTest/test_phcollection.py
|
|
@@ -41,5 +42,5 @@ PyObjCTest/test_phphotolibrary.py
|
|
|
41
42
|
PyObjCTest/test_phproject.py
|
|
42
43
|
metadata/Photos.fwinfo
|
|
43
44
|
metadata/metadata.ini
|
|
44
|
-
metadata/raw/arm64-
|
|
45
|
-
metadata/raw/x86_64-
|
|
45
|
+
metadata/raw/arm64-27.fwinfo
|
|
46
|
+
metadata/raw/x86_64-27.fwinfo
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
#include "Python.h"
|
|
3
3
|
#include "pyobjc-api.h"
|
|
4
4
|
|
|
5
|
+
#ifdef USE_STATIC_ANALYZER
|
|
6
|
+
#include "../../pyobjc-core/Modules/objc/python-api-used.h"
|
|
7
|
+
#endif
|
|
8
|
+
|
|
5
9
|
#import <Photos/Photos.h>
|
|
6
10
|
|
|
7
11
|
/* We include the source code here instead of
|
|
@@ -9,6 +13,8 @@
|
|
|
9
13
|
*/
|
|
10
14
|
#include "_Photos_protocols.m"
|
|
11
15
|
|
|
16
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
17
|
+
|
|
12
18
|
static PyMethodDef mod_methods[] = {
|
|
13
19
|
{0, 0, 0, 0} /* sentinel */
|
|
14
20
|
};
|
|
@@ -54,10 +60,11 @@ static struct PyModuleDef mod_module = {
|
|
|
54
60
|
.m_free = NULL,
|
|
55
61
|
};
|
|
56
62
|
|
|
57
|
-
PyObject* PyInit__Photos(void);
|
|
63
|
+
PyObject* _Nullable PyInit__Photos(void);
|
|
58
64
|
|
|
59
|
-
PyObject* __attribute__((__visibility__("default")))
|
|
65
|
+
PyObject* _Nullable __attribute__((__visibility__("default")))
|
|
60
66
|
PyInit__Photos(void)
|
|
61
67
|
{
|
|
62
68
|
return PyModuleDef_Init(&mod_module);
|
|
63
69
|
}
|
|
70
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
// LCOV_EXCL_START
|
|
2
|
+
// This function is only present to ensure protocols are
|
|
3
|
+
// available at runtime.
|
|
4
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
5
|
+
|
|
6
6
|
static void __attribute__((__used__))
|
|
7
7
|
use_protocols(void)
|
|
8
8
|
{
|
|
@@ -20,3 +20,6 @@ use_protocols(void)
|
|
|
20
20
|
Py_XDECREF(p);
|
|
21
21
|
#endif
|
|
22
22
|
}
|
|
23
|
+
|
|
24
|
+
NS_ASSUME_NONNULL_END
|
|
25
|
+
// LCOV_EXCL_STOP
|
|
@@ -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-Photos
|
|
3
|
-
Version:
|
|
3
|
+
Version: 13.0
|
|
4
4
|
Summary: Wrappers for the framework Photos on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -17,21 +17,21 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
17
17
|
Classifier: Programming Language :: Python
|
|
18
18
|
Classifier: Programming Language :: Python :: 3
|
|
19
19
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.13
|
|
24
23
|
Classifier: Programming Language :: Python :: 3.14
|
|
25
24
|
Classifier: Programming Language :: Python :: 3.15
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.16
|
|
26
26
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
27
27
|
Classifier: Programming Language :: Python :: Free Threading :: 3 - Stable
|
|
28
28
|
Classifier: Programming Language :: Objective C
|
|
29
29
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
30
30
|
Classifier: Topic :: Software Development :: User Interfaces
|
|
31
|
-
Requires-Python: >=3.
|
|
31
|
+
Requires-Python: >=3.11
|
|
32
32
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
33
|
-
Requires-Dist: pyobjc-core>=
|
|
34
|
-
Requires-Dist: pyobjc-framework-Cocoa>=
|
|
33
|
+
Requires-Dist: pyobjc-core>=13.0
|
|
34
|
+
Requires-Dist: pyobjc-framework-Cocoa>=13.0
|
|
35
35
|
Dynamic: author
|
|
36
36
|
Dynamic: author-email
|
|
37
37
|
Dynamic: classifier
|
|
@@ -4,20 +4,20 @@ import Photos
|
|
|
4
4
|
|
|
5
5
|
class TestPHAsset(TestCase):
|
|
6
6
|
@min_os_level("10.13")
|
|
7
|
-
def
|
|
7
|
+
def test_methods(self):
|
|
8
8
|
self.assertResultIsBOOL(Photos.PHAsset.isHidden)
|
|
9
9
|
self.assertResultIsBOOL(Photos.PHAsset.isFavorite)
|
|
10
10
|
|
|
11
11
|
@min_os_level("10.13")
|
|
12
12
|
@max_os_level("10.14")
|
|
13
|
-
def
|
|
13
|
+
def test_methods10_13_removed_in_10_15(self):
|
|
14
14
|
self.assertResultIsBOOL(Photos.PHAsset.isSyncFailureHidden)
|
|
15
15
|
|
|
16
16
|
@min_os_level("10.15")
|
|
17
|
-
def
|
|
17
|
+
def test_methods10_15(self):
|
|
18
18
|
self.assertResultIsBOOL(Photos.PHAsset.representsBurst)
|
|
19
19
|
self.assertResultIsBOOL(Photos.PHAsset.canPerformEditOperation_)
|
|
20
20
|
|
|
21
21
|
@min_os_level("13.0")
|
|
22
|
-
def
|
|
22
|
+
def test_methods13_0(self):
|
|
23
23
|
self.assertResultIsBOOL(Photos.PHAsset.hasAdjustments)
|
|
@@ -5,7 +5,7 @@ import Photos
|
|
|
5
5
|
|
|
6
6
|
class TestPHAssetChangeRequest(TestCase):
|
|
7
7
|
@min_os_level("10.15")
|
|
8
|
-
def
|
|
8
|
+
def test_methods(self):
|
|
9
9
|
self.assertResultIsBOOL(Photos.PHAssetChangeRequest.isFavorite)
|
|
10
10
|
self.assertArgIsBOOL(Photos.PHAssetChangeRequest.setFavorite_, 0)
|
|
11
11
|
|
|
@@ -37,3 +37,16 @@ class TestPHAssetChangeRequest(TestCase):
|
|
|
37
37
|
self.assertIsInstance(Photos.PHContentEditingInputResultIsInCloudKey, str)
|
|
38
38
|
self.assertIsInstance(Photos.PHContentEditingInputCancelledKey, str)
|
|
39
39
|
self.assertIsInstance(Photos.PHContentEditingInputErrorKey, str)
|
|
40
|
+
|
|
41
|
+
@min_os_level("27.0")
|
|
42
|
+
def test_methods27_0(self):
|
|
43
|
+
self.assertArgIsBOOL(
|
|
44
|
+
Photos.PHAssetChangeRequest.setLivePhotoVideoPlaybackEnabled_, 0
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
self.assertResultIsBOOL(
|
|
48
|
+
Photos.PHContentEditingInputRequestOptions.skipsDisplaySizeImage
|
|
49
|
+
)
|
|
50
|
+
self.assertArgIsBOOL(
|
|
51
|
+
Photos.PHContentEditingInputRequestOptions.setSkipsDisplaySizeImage_, 0
|
|
52
|
+
)
|
|
@@ -4,7 +4,7 @@ import Photos
|
|
|
4
4
|
|
|
5
5
|
class TestPHAssetResourceCreationOptions(TestCase):
|
|
6
6
|
@min_os_level("10.15")
|
|
7
|
-
def
|
|
7
|
+
def test_methods(self):
|
|
8
8
|
self.assertResultIsBOOL(Photos.PHAssetResourceCreationOptions.shouldMoveFile)
|
|
9
9
|
self.assertArgIsBOOL(
|
|
10
10
|
Photos.PHAssetResourceCreationOptions.setShouldMoveFile_, 0
|
|
@@ -7,7 +7,7 @@ PHAssetResourceProgressHandler = b"vd"
|
|
|
7
7
|
|
|
8
8
|
class TestPHAssetResourceManager(TestCase):
|
|
9
9
|
@min_os_level("10.15")
|
|
10
|
-
def
|
|
10
|
+
def test_methods(self):
|
|
11
11
|
self.assertResultIsBOOL(
|
|
12
12
|
Photos.PHContentEditingInputRequestOptions.isNetworkAccessAllowed
|
|
13
13
|
)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from PyObjCTools.TestSupport import TestCase, min_os_level
|
|
2
|
+
import Photos
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestPHAssetResourceUploadJobOptions(TestCase):
|
|
6
|
+
@min_os_level("27.0")
|
|
7
|
+
def test_methods(self):
|
|
8
|
+
self.assertResultIsBOOL(
|
|
9
|
+
Photos.PHAssetResourceUploadJobOptions.preventsExpensiveNetworkAccess
|
|
10
|
+
)
|
|
11
|
+
self.assertArgIsBOOL(
|
|
12
|
+
Photos.PHAssetResourceUploadJobOptions.setPreventsExpensiveNetworkAccess_, 0
|
|
13
|
+
)
|
|
@@ -4,7 +4,7 @@ import Photos
|
|
|
4
4
|
|
|
5
5
|
class TestPHChange(TestCase):
|
|
6
6
|
@min_os_level("10.13")
|
|
7
|
-
def
|
|
7
|
+
def test_methods(self):
|
|
8
8
|
self.assertResultIsBOOL(Photos.PHObjectChangeDetails.assetContentChanged)
|
|
9
9
|
self.assertResultIsBOOL(Photos.PHObjectChangeDetails.objectWasDeleted)
|
|
10
10
|
|
{pyobjc_framework_photos-12.2.2 → pyobjc_framework_photos-13.0}/PyObjCTest/test_phcollection.py
RENAMED
|
@@ -4,7 +4,7 @@ import Photos
|
|
|
4
4
|
|
|
5
5
|
class TestPHCollection(TestCase):
|
|
6
6
|
@min_os_level("10.15")
|
|
7
|
-
def
|
|
7
|
+
def test_methods10_15(self):
|
|
8
8
|
self.assertResultIsBOOL(Photos.PHCollection.canContainAssets)
|
|
9
9
|
self.assertResultIsBOOL(Photos.PHCollection.canContainCollections)
|
|
10
10
|
self.assertResultIsBOOL(Photos.PHCollection.canPerformEditOperation_)
|