pyobjc-framework-Contacts 10.2__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.
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/Contacts/__init__.py +8 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/Contacts/_metadata.py +25 -2
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/pyobjc_framework_Contacts.egg-info/PKG-INFO +5 -5
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/pyobjc_framework_Contacts.egg-info/SOURCES.txt +5 -4
- pyobjc_framework_contacts-11.0/Lib/pyobjc_framework_Contacts.egg-info/pyobjc-build-info.txt +3 -0
- pyobjc_framework_contacts-11.0/Lib/pyobjc_framework_Contacts.egg-info/requires.txt +2 -0
- pyobjc_framework_contacts-11.0/Modules/_Contacts.m +66 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Modules/pyobjc-api.h +1 -1
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Modules/pyobjc-compat.h +80 -5
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PKG-INFO +5 -5
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactstore.py +9 -2
- pyobjc_framework_contacts-11.0/metadata/raw/arm64-14.5.fwinfo +6369 -0
- pyobjc-framework-Contacts-10.2/metadata/raw/arm64-14.0.fwinfo → pyobjc_framework_contacts-11.0/metadata/raw/arm64-15.0.fwinfo +13 -2
- pyobjc_framework_contacts-11.0/metadata/raw/x86_64-14.5.fwinfo +6369 -0
- pyobjc-framework-Contacts-10.2/metadata/raw/x86_64-14.0.fwinfo → pyobjc_framework_contacts-11.0/metadata/raw/x86_64-15.0.fwinfo +13 -2
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/pyobjc_setup.py +121 -27
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/setup.py +1 -3
- pyobjc-framework-Contacts-10.2/Lib/pyobjc_framework_Contacts.egg-info/requires.txt +0 -2
- pyobjc-framework-Contacts-10.2/Modules/_Contacts.m +0 -35
- pyobjc-framework-Contacts-10.2/metadata/raw/arm64-12.0.fwinfo +0 -6284
- pyobjc-framework-Contacts-10.2/metadata/raw/x86_64-12.0.fwinfo +0 -6284
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Examples/print-contacts.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/pyobjc_framework_Contacts.egg-info/dependency_links.txt +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/pyobjc_framework_Contacts.egg-info/not-zip-safe +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Lib/pyobjc_framework_Contacts.egg-info/top_level.txt +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/License.txt +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/MANIFEST.in +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/Modules/_Contacts_protocols.m +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/__init__.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnchangehistoryevent.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnchangehistoryfetchrequest.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontact.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactfetchrequest.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactformatter.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactrelation.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactsstore.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactvcardserialization.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontainer.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnerror.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cngroup.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cninstantmessageaddress.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnlabeledvalue.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnphonenumber.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnpostaladdress.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnpostaladdressformatter.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnsaverequest.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cnsocialprofile.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_contacts.py +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/Contacts.fwinfo +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/metadata.ini +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/raw/arm64-12.3.fwinfo +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/raw/x86_64-10.15.fwinfo +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/raw/x86_64-10.16.fwinfo +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/metadata/raw/x86_64-12.3.fwinfo +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/pyproject.toml +0 -0
- {pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/setup.cfg +0 -0
|
@@ -36,6 +36,14 @@ def _setup():
|
|
|
36
36
|
globals()["__dir__"] = dir_func
|
|
37
37
|
globals()["__getattr__"] = getattr_func
|
|
38
38
|
|
|
39
|
+
for cls, sel in (
|
|
40
|
+
("CNFetchResult", b"init"),
|
|
41
|
+
("CNFetchResult", b"new"),
|
|
42
|
+
("CNContactFetchRequest", b"init"),
|
|
43
|
+
("CNContactFetchRequest", b"new"),
|
|
44
|
+
):
|
|
45
|
+
objc.registerUnavailableMethod(cls, sel)
|
|
46
|
+
|
|
39
47
|
del sys.modules["Contacts._metadata"]
|
|
40
48
|
|
|
41
49
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is generated by objective.metadata
|
|
2
2
|
#
|
|
3
|
-
# Last update:
|
|
3
|
+
# Last update: Tue Jun 11 10:07:49 2024
|
|
4
4
|
#
|
|
5
5
|
# flake8: noqa
|
|
6
6
|
|
|
@@ -31,7 +31,7 @@ else:
|
|
|
31
31
|
|
|
32
32
|
misc = {}
|
|
33
33
|
constants = """$CNContactBirthdayKey$CNContactDatesKey$CNContactDepartmentNameKey$CNContactEmailAddressesKey$CNContactFamilyNameKey$CNContactGivenNameKey$CNContactIdentifierKey$CNContactImageDataAvailableKey$CNContactImageDataKey$CNContactInstantMessageAddressesKey$CNContactJobTitleKey$CNContactMiddleNameKey$CNContactNamePrefixKey$CNContactNameSuffixKey$CNContactNicknameKey$CNContactNonGregorianBirthdayKey$CNContactNoteKey$CNContactOrganizationNameKey$CNContactPhoneNumbersKey$CNContactPhoneticFamilyNameKey$CNContactPhoneticGivenNameKey$CNContactPhoneticMiddleNameKey$CNContactPhoneticOrganizationNameKey$CNContactPostalAddressesKey$CNContactPreviousFamilyNameKey$CNContactPropertyAttribute$CNContactPropertyNotFetchedExceptionName$CNContactRelationsKey$CNContactSocialProfilesKey$CNContactStoreDidChangeNotification$CNContactThumbnailImageDataKey$CNContactTypeKey$CNContactUrlAddressesKey$CNContainerIdentifierKey$CNContainerNameKey$CNContainerTypeKey$CNErrorDomain$CNErrorUserInfoAffectedRecordIdentifiersKey$CNErrorUserInfoAffectedRecordsKey$CNErrorUserInfoKeyPathsKey$CNErrorUserInfoValidationErrorsKey$CNGroupIdentifierKey$CNGroupNameKey$CNInstantMessageAddressServiceKey$CNInstantMessageAddressUsernameKey$CNInstantMessageServiceAIM$CNInstantMessageServiceFacebook$CNInstantMessageServiceGaduGadu$CNInstantMessageServiceGoogleTalk$CNInstantMessageServiceICQ$CNInstantMessageServiceJabber$CNInstantMessageServiceMSN$CNInstantMessageServiceQQ$CNInstantMessageServiceSkype$CNInstantMessageServiceYahoo$CNLabelContactRelationAssistant$CNLabelContactRelationAunt$CNLabelContactRelationAuntFathersBrothersWife$CNLabelContactRelationAuntFathersElderBrothersWife$CNLabelContactRelationAuntFathersElderSister$CNLabelContactRelationAuntFathersSister$CNLabelContactRelationAuntFathersYoungerBrothersWife$CNLabelContactRelationAuntFathersYoungerSister$CNLabelContactRelationAuntMothersBrothersWife$CNLabelContactRelationAuntMothersElderSister$CNLabelContactRelationAuntMothersSister$CNLabelContactRelationAuntMothersYoungerSister$CNLabelContactRelationAuntParentsElderSister$CNLabelContactRelationAuntParentsSister$CNLabelContactRelationAuntParentsYoungerSister$CNLabelContactRelationBoyfriend$CNLabelContactRelationBrother$CNLabelContactRelationBrotherInLaw$CNLabelContactRelationBrotherInLawElderSistersHusband$CNLabelContactRelationBrotherInLawHusbandsBrother$CNLabelContactRelationBrotherInLawHusbandsSistersHusband$CNLabelContactRelationBrotherInLawSistersHusband$CNLabelContactRelationBrotherInLawSpousesBrother$CNLabelContactRelationBrotherInLawWifesBrother$CNLabelContactRelationBrotherInLawWifesSistersHusband$CNLabelContactRelationBrotherInLawYoungerSistersHusband$CNLabelContactRelationChild$CNLabelContactRelationChildInLaw$CNLabelContactRelationCoBrotherInLaw$CNLabelContactRelationCoFatherInLaw$CNLabelContactRelationCoMotherInLaw$CNLabelContactRelationCoParentInLaw$CNLabelContactRelationCoSiblingInLaw$CNLabelContactRelationCoSisterInLaw$CNLabelContactRelationColleague$CNLabelContactRelationCousin$CNLabelContactRelationCousinFathersBrothersDaughter$CNLabelContactRelationCousinFathersBrothersSon$CNLabelContactRelationCousinFathersSistersDaughter$CNLabelContactRelationCousinFathersSistersSon$CNLabelContactRelationCousinGrandparentsSiblingsChild$CNLabelContactRelationCousinGrandparentsSiblingsDaughter$CNLabelContactRelationCousinGrandparentsSiblingsSon$CNLabelContactRelationCousinMothersBrothersDaughter$CNLabelContactRelationCousinMothersBrothersSon$CNLabelContactRelationCousinMothersSistersDaughter$CNLabelContactRelationCousinMothersSistersSon$CNLabelContactRelationCousinOrSiblingsChild$CNLabelContactRelationCousinParentsSiblingsChild$CNLabelContactRelationCousinParentsSiblingsDaughter$CNLabelContactRelationCousinParentsSiblingsSon$CNLabelContactRelationDaughter$CNLabelContactRelationDaughterInLaw$CNLabelContactRelationDaughterInLawOrSisterInLaw$CNLabelContactRelationDaughterInLawOrStepdaughter$CNLabelContactRelationElderBrother$CNLabelContactRelationElderBrotherInLaw$CNLabelContactRelationElderCousin$CNLabelContactRelationElderCousinFathersBrothersDaughter$CNLabelContactRelationElderCousinFathersBrothersSon$CNLabelContactRelationElderCousinFathersSistersDaughter$CNLabelContactRelationElderCousinFathersSistersSon$CNLabelContactRelationElderCousinMothersBrothersDaughter$CNLabelContactRelationElderCousinMothersBrothersSon$CNLabelContactRelationElderCousinMothersSiblingsDaughterOrFathersSistersDaughter$CNLabelContactRelationElderCousinMothersSiblingsSonOrFathersSistersSon$CNLabelContactRelationElderCousinMothersSistersDaughter$CNLabelContactRelationElderCousinMothersSistersSon$CNLabelContactRelationElderCousinParentsSiblingsDaughter$CNLabelContactRelationElderCousinParentsSiblingsSon$CNLabelContactRelationElderSibling$CNLabelContactRelationElderSiblingInLaw$CNLabelContactRelationElderSister$CNLabelContactRelationElderSisterInLaw$CNLabelContactRelationEldestBrother$CNLabelContactRelationEldestSister$CNLabelContactRelationFather$CNLabelContactRelationFatherInLaw$CNLabelContactRelationFatherInLawHusbandsFather$CNLabelContactRelationFatherInLawOrStepfather$CNLabelContactRelationFatherInLawWifesFather$CNLabelContactRelationFemaleCousin$CNLabelContactRelationFemaleFriend$CNLabelContactRelationFemalePartner$CNLabelContactRelationFriend$CNLabelContactRelationGirlfriend$CNLabelContactRelationGirlfriendOrBoyfriend$CNLabelContactRelationGrandaunt$CNLabelContactRelationGrandchild$CNLabelContactRelationGrandchildOrSiblingsChild$CNLabelContactRelationGranddaughter$CNLabelContactRelationGranddaughterDaughtersDaughter$CNLabelContactRelationGranddaughterOrNiece$CNLabelContactRelationGranddaughterSonsDaughter$CNLabelContactRelationGrandfather$CNLabelContactRelationGrandfatherFathersFather$CNLabelContactRelationGrandfatherMothersFather$CNLabelContactRelationGrandmother$CNLabelContactRelationGrandmotherFathersMother$CNLabelContactRelationGrandmotherMothersMother$CNLabelContactRelationGrandnephew$CNLabelContactRelationGrandnephewBrothersGrandson$CNLabelContactRelationGrandnephewSistersGrandson$CNLabelContactRelationGrandniece$CNLabelContactRelationGrandnieceBrothersGranddaughter$CNLabelContactRelationGrandnieceSistersGranddaughter$CNLabelContactRelationGrandparent$CNLabelContactRelationGrandson$CNLabelContactRelationGrandsonDaughtersSon$CNLabelContactRelationGrandsonOrNephew$CNLabelContactRelationGrandsonSonsSon$CNLabelContactRelationGranduncle$CNLabelContactRelationGreatGrandchild$CNLabelContactRelationGreatGrandchildOrSiblingsGrandchild$CNLabelContactRelationGreatGranddaughter$CNLabelContactRelationGreatGrandfather$CNLabelContactRelationGreatGrandmother$CNLabelContactRelationGreatGrandparent$CNLabelContactRelationGreatGrandson$CNLabelContactRelationHusband$CNLabelContactRelationMaleCousin$CNLabelContactRelationMaleFriend$CNLabelContactRelationMalePartner$CNLabelContactRelationManager$CNLabelContactRelationMother$CNLabelContactRelationMotherInLaw$CNLabelContactRelationMotherInLawHusbandsMother$CNLabelContactRelationMotherInLawOrStepmother$CNLabelContactRelationMotherInLawWifesMother$CNLabelContactRelationNephew$CNLabelContactRelationNephewBrothersSon$CNLabelContactRelationNephewBrothersSonOrHusbandsSiblingsSon$CNLabelContactRelationNephewOrCousin$CNLabelContactRelationNephewSistersSon$CNLabelContactRelationNephewSistersSonOrWifesSiblingsSon$CNLabelContactRelationNiece$CNLabelContactRelationNieceBrothersDaughter$CNLabelContactRelationNieceBrothersDaughterOrHusbandsSiblingsDaughter$CNLabelContactRelationNieceOrCousin$CNLabelContactRelationNieceSistersDaughter$CNLabelContactRelationNieceSistersDaughterOrWifesSiblingsDaughter$CNLabelContactRelationParent$CNLabelContactRelationParentInLaw$CNLabelContactRelationParentsElderSibling$CNLabelContactRelationParentsSibling$CNLabelContactRelationParentsSiblingFathersElderSibling$CNLabelContactRelationParentsSiblingFathersSibling$CNLabelContactRelationParentsSiblingFathersYoungerSibling$CNLabelContactRelationParentsSiblingMothersElderSibling$CNLabelContactRelationParentsSiblingMothersSibling$CNLabelContactRelationParentsSiblingMothersYoungerSibling$CNLabelContactRelationParentsYoungerSibling$CNLabelContactRelationPartner$CNLabelContactRelationSibling$CNLabelContactRelationSiblingInLaw$CNLabelContactRelationSiblingsChild$CNLabelContactRelationSister$CNLabelContactRelationSisterInLaw$CNLabelContactRelationSisterInLawBrothersWife$CNLabelContactRelationSisterInLawElderBrothersWife$CNLabelContactRelationSisterInLawHusbandsBrothersWife$CNLabelContactRelationSisterInLawHusbandsSister$CNLabelContactRelationSisterInLawSpousesSister$CNLabelContactRelationSisterInLawWifesBrothersWife$CNLabelContactRelationSisterInLawWifesSister$CNLabelContactRelationSisterInLawYoungerBrothersWife$CNLabelContactRelationSon$CNLabelContactRelationSonInLaw$CNLabelContactRelationSonInLawOrBrotherInLaw$CNLabelContactRelationSonInLawOrStepson$CNLabelContactRelationSpouse$CNLabelContactRelationStepbrother$CNLabelContactRelationStepchild$CNLabelContactRelationStepdaughter$CNLabelContactRelationStepfather$CNLabelContactRelationStepmother$CNLabelContactRelationStepparent$CNLabelContactRelationStepsister$CNLabelContactRelationStepson$CNLabelContactRelationTeacher$CNLabelContactRelationUncle$CNLabelContactRelationUncleFathersBrother$CNLabelContactRelationUncleFathersElderBrother$CNLabelContactRelationUncleFathersElderSistersHusband$CNLabelContactRelationUncleFathersSistersHusband$CNLabelContactRelationUncleFathersYoungerBrother$CNLabelContactRelationUncleFathersYoungerSistersHusband$CNLabelContactRelationUncleMothersBrother$CNLabelContactRelationUncleMothersElderBrother$CNLabelContactRelationUncleMothersSistersHusband$CNLabelContactRelationUncleMothersYoungerBrother$CNLabelContactRelationUncleParentsBrother$CNLabelContactRelationUncleParentsElderBrother$CNLabelContactRelationUncleParentsYoungerBrother$CNLabelContactRelationWife$CNLabelContactRelationYoungerBrother$CNLabelContactRelationYoungerBrotherInLaw$CNLabelContactRelationYoungerCousin$CNLabelContactRelationYoungerCousinFathersBrothersDaughter$CNLabelContactRelationYoungerCousinFathersBrothersSon$CNLabelContactRelationYoungerCousinFathersSistersDaughter$CNLabelContactRelationYoungerCousinFathersSistersSon$CNLabelContactRelationYoungerCousinMothersBrothersDaughter$CNLabelContactRelationYoungerCousinMothersBrothersSon$CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter$CNLabelContactRelationYoungerCousinMothersSiblingsSonOrFathersSistersSon$CNLabelContactRelationYoungerCousinMothersSistersDaughter$CNLabelContactRelationYoungerCousinMothersSistersSon$CNLabelContactRelationYoungerCousinParentsSiblingsDaughter$CNLabelContactRelationYoungerCousinParentsSiblingsSon$CNLabelContactRelationYoungerSibling$CNLabelContactRelationYoungerSiblingInLaw$CNLabelContactRelationYoungerSister$CNLabelContactRelationYoungerSisterInLaw$CNLabelContactRelationYoungestBrother$CNLabelContactRelationYoungestSister$CNLabelDateAnniversary$CNLabelEmailiCloud$CNLabelHome$CNLabelOther$CNLabelPhoneNumberAppleWatch$CNLabelPhoneNumberHomeFax$CNLabelPhoneNumberMain$CNLabelPhoneNumberMobile$CNLabelPhoneNumberOtherFax$CNLabelPhoneNumberPager$CNLabelPhoneNumberWorkFax$CNLabelPhoneNumberiPhone$CNLabelSchool$CNLabelURLAddressHomePage$CNLabelWork$CNPostalAddressCityKey$CNPostalAddressCountryKey$CNPostalAddressISOCountryCodeKey$CNPostalAddressLocalizedPropertyNameAttribute$CNPostalAddressPostalCodeKey$CNPostalAddressPropertyAttribute$CNPostalAddressStateKey$CNPostalAddressStreetKey$CNPostalAddressSubAdministrativeAreaKey$CNPostalAddressSubLocalityKey$CNSocialProfileServiceFacebook$CNSocialProfileServiceFlickr$CNSocialProfileServiceGameCenter$CNSocialProfileServiceKey$CNSocialProfileServiceLinkedIn$CNSocialProfileServiceMySpace$CNSocialProfileServiceSinaWeibo$CNSocialProfileServiceTencentWeibo$CNSocialProfileServiceTwitter$CNSocialProfileServiceYelp$CNSocialProfileURLStringKey$CNSocialProfileUserIdentifierKey$CNSocialProfileUsernameKey$"""
|
|
34
|
-
enums = """$CNAuthorizationStatusAuthorized@3$CNAuthorizationStatusDenied@2$CNAuthorizationStatusNotDetermined@0$CNAuthorizationStatusRestricted@1$CNContactDisplayNameOrderFamilyNameFirst@2$CNContactDisplayNameOrderGivenNameFirst@1$CNContactDisplayNameOrderUserDefault@0$CNContactFormatterStyleFullName@0$CNContactFormatterStylePhoneticFullName@1$CNContactSortOrderFamilyName@3$CNContactSortOrderGivenName@2$CNContactSortOrderNone@0$CNContactSortOrderUserDefault@1$CNContactTypeOrganization@1$CNContactTypePerson@0$CNContainerTypeCardDAV@3$CNContainerTypeExchange@2$CNContainerTypeLocal@1$CNContainerTypeUnassigned@0$CNEntityTypeContacts@0$CNErrorCodeAuthorizationDenied@100$CNErrorCodeChangeHistoryExpired@603$CNErrorCodeChangeHistoryInvalidAnchor@604$CNErrorCodeChangeHistoryInvalidFetchRequest@605$CNErrorCodeClientIdentifierCollision@602$CNErrorCodeClientIdentifierDoesNotExist@601$CNErrorCodeClientIdentifierInvalid@600$CNErrorCodeCommunicationError@1$CNErrorCodeContainmentCycle@202$CNErrorCodeContainmentScope@203$CNErrorCodeDataAccessError@2$CNErrorCodeFeatureDisabledByUser@103$CNErrorCodeFeatureNotAvailable@104$CNErrorCodeInsertedRecordAlreadyExists@201$CNErrorCodeNoAccessableWritableContainers@101$CNErrorCodeParentContainerNotWritable@207$CNErrorCodeParentRecordDoesNotExist@204$CNErrorCodePolicyViolation@500$CNErrorCodePredicateInvalid@400$CNErrorCodeRecordDoesNotExist@200$CNErrorCodeRecordIdentifierInvalid@205$CNErrorCodeRecordNotWritable@206$CNErrorCodeUnauthorizedKeys@102$CNErrorCodeVCardMalformed@700$CNErrorCodeVCardSummarizationError@701$CNErrorCodeValidationConfigurationError@302$CNErrorCodeValidationMultipleErrors@300$CNErrorCodeValidationTypeMismatch@301$CNPostalAddressFormatterStyleMailingAddress@0$"""
|
|
34
|
+
enums = """$CNAuthorizationStatusAuthorized@3$CNAuthorizationStatusDenied@2$CNAuthorizationStatusLimited@4$CNAuthorizationStatusNotDetermined@0$CNAuthorizationStatusRestricted@1$CNContactDisplayNameOrderFamilyNameFirst@2$CNContactDisplayNameOrderGivenNameFirst@1$CNContactDisplayNameOrderUserDefault@0$CNContactFormatterStyleFullName@0$CNContactFormatterStylePhoneticFullName@1$CNContactSortOrderFamilyName@3$CNContactSortOrderGivenName@2$CNContactSortOrderNone@0$CNContactSortOrderUserDefault@1$CNContactTypeOrganization@1$CNContactTypePerson@0$CNContainerTypeCardDAV@3$CNContainerTypeExchange@2$CNContainerTypeLocal@1$CNContainerTypeUnassigned@0$CNEntityTypeContacts@0$CNErrorCodeAuthorizationDenied@100$CNErrorCodeChangeHistoryExpired@603$CNErrorCodeChangeHistoryInvalidAnchor@604$CNErrorCodeChangeHistoryInvalidFetchRequest@605$CNErrorCodeClientIdentifierCollision@602$CNErrorCodeClientIdentifierDoesNotExist@601$CNErrorCodeClientIdentifierInvalid@600$CNErrorCodeCommunicationError@1$CNErrorCodeContainmentCycle@202$CNErrorCodeContainmentScope@203$CNErrorCodeDataAccessError@2$CNErrorCodeFeatureDisabledByUser@103$CNErrorCodeFeatureNotAvailable@104$CNErrorCodeInsertedRecordAlreadyExists@201$CNErrorCodeNoAccessableWritableContainers@101$CNErrorCodeParentContainerNotWritable@207$CNErrorCodeParentRecordDoesNotExist@204$CNErrorCodePolicyViolation@500$CNErrorCodePredicateInvalid@400$CNErrorCodeRecordDoesNotExist@200$CNErrorCodeRecordIdentifierInvalid@205$CNErrorCodeRecordNotWritable@206$CNErrorCodeUnauthorizedKeys@102$CNErrorCodeVCardMalformed@700$CNErrorCodeVCardSummarizationError@701$CNErrorCodeValidationConfigurationError@302$CNErrorCodeValidationMultipleErrors@300$CNErrorCodeValidationTypeMismatch@301$CNPostalAddressFormatterStyleMailingAddress@0$"""
|
|
35
35
|
misc.update(
|
|
36
36
|
{
|
|
37
37
|
"CNEntityType": NewType("CNEntityType", int),
|
|
@@ -73,6 +73,18 @@ try:
|
|
|
73
73
|
)
|
|
74
74
|
r(b"CNChangeHistoryFetchRequest", b"shouldUnifyResults", {"retval": {"type": b"Z"}})
|
|
75
75
|
r(b"CNContact", b"areKeysAvailable:", {"retval": {"type": "Z"}})
|
|
76
|
+
r(
|
|
77
|
+
b"CNContact",
|
|
78
|
+
b"comparatorForNameSortOrder:",
|
|
79
|
+
{
|
|
80
|
+
"retval": {
|
|
81
|
+
"callable": {
|
|
82
|
+
"retval": {"type": b"v"},
|
|
83
|
+
"arguments": {0: {"type": b"^v"}},
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
)
|
|
76
88
|
r(b"CNContact", b"imageDataAvailable", {"retval": {"type": b"Z"}})
|
|
77
89
|
r(b"CNContact", b"isKeyAvailable:", {"retval": {"type": "Z"}})
|
|
78
90
|
r(b"CNContact", b"isUnifiedWithContactWithIdentifier:", {"retval": {"type": "Z"}})
|
|
@@ -237,6 +249,17 @@ try:
|
|
|
237
249
|
)
|
|
238
250
|
finally:
|
|
239
251
|
objc._updatingMetadata(False)
|
|
252
|
+
|
|
253
|
+
objc.registerNewKeywordsFromSelector("CNContactFetchRequest", b"initWithKeysToFetch:")
|
|
254
|
+
objc.registerNewKeywordsFromSelector("CNContactRelation", b"initWithName:")
|
|
255
|
+
objc.registerNewKeywordsFromSelector(
|
|
256
|
+
"CNInstantMessageAddress", b"initWithUsername:service:"
|
|
257
|
+
)
|
|
258
|
+
objc.registerNewKeywordsFromSelector("CNLabeledValue", b"initWithLabel:value:")
|
|
259
|
+
objc.registerNewKeywordsFromSelector("CNPhoneNumber", b"initWithStringValue:")
|
|
260
|
+
objc.registerNewKeywordsFromSelector(
|
|
261
|
+
"CNSocialProfile", b"initWithUrlString:username:userIdentifier:service:"
|
|
262
|
+
)
|
|
240
263
|
expressions = {}
|
|
241
264
|
|
|
242
265
|
# END OF FILE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyobjc-framework-Contacts
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.0
|
|
4
4
|
Summary: Wrappers for the framework Contacts on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -18,20 +18,20 @@ 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.
|
|
31
|
+
Requires-Python: >=3.9
|
|
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>=11.0
|
|
34
|
+
Requires-Dist: pyobjc-framework-Cocoa>=11.0
|
|
35
35
|
Project-URL: Documentation, https://pyobjc.readthedocs.io/en/latest/
|
|
36
36
|
Project-URL: Issue tracker, https://github.com/ronaldoussoren/pyobjc/issues
|
|
37
37
|
Project-URL: Repository, https://github.com/ronaldoussoren/pyobjc
|
|
@@ -10,6 +10,7 @@ Lib/pyobjc_framework_Contacts.egg-info/PKG-INFO
|
|
|
10
10
|
Lib/pyobjc_framework_Contacts.egg-info/SOURCES.txt
|
|
11
11
|
Lib/pyobjc_framework_Contacts.egg-info/dependency_links.txt
|
|
12
12
|
Lib/pyobjc_framework_Contacts.egg-info/not-zip-safe
|
|
13
|
+
Lib/pyobjc_framework_Contacts.egg-info/pyobjc-build-info.txt
|
|
13
14
|
Lib/pyobjc_framework_Contacts.egg-info/requires.txt
|
|
14
15
|
Lib/pyobjc_framework_Contacts.egg-info/top_level.txt
|
|
15
16
|
Modules/_Contacts.m
|
|
@@ -39,11 +40,11 @@ PyObjCTest/test_cnsocialprofile.py
|
|
|
39
40
|
PyObjCTest/test_contacts.py
|
|
40
41
|
metadata/Contacts.fwinfo
|
|
41
42
|
metadata/metadata.ini
|
|
42
|
-
metadata/raw/arm64-12.0.fwinfo
|
|
43
43
|
metadata/raw/arm64-12.3.fwinfo
|
|
44
|
-
metadata/raw/arm64-14.
|
|
44
|
+
metadata/raw/arm64-14.5.fwinfo
|
|
45
|
+
metadata/raw/arm64-15.0.fwinfo
|
|
45
46
|
metadata/raw/x86_64-10.15.fwinfo
|
|
46
47
|
metadata/raw/x86_64-10.16.fwinfo
|
|
47
|
-
metadata/raw/x86_64-12.0.fwinfo
|
|
48
48
|
metadata/raw/x86_64-12.3.fwinfo
|
|
49
|
-
metadata/raw/x86_64-14.
|
|
49
|
+
metadata/raw/x86_64-14.5.fwinfo
|
|
50
|
+
metadata/raw/x86_64-15.0.fwinfo
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#define PY_SSIZE_T_CLEAN
|
|
2
|
+
#include "Python.h"
|
|
3
|
+
#include "pyobjc-api.h"
|
|
4
|
+
|
|
5
|
+
#import <Contacts/Contacts.h>
|
|
6
|
+
|
|
7
|
+
/* We include the source code here instead of
|
|
8
|
+
* using the linker due to limitations in pyobjc-api.h
|
|
9
|
+
*/
|
|
10
|
+
#include "_Contacts_protocols.m"
|
|
11
|
+
|
|
12
|
+
static PyMethodDef mod_methods[] = {
|
|
13
|
+
{0, 0, 0, 0} /* sentinel */
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
static int mod_exec_module(PyObject* m)
|
|
17
|
+
{
|
|
18
|
+
return 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static struct PyModuleDef_Slot mod_slots[] = {
|
|
22
|
+
{
|
|
23
|
+
.slot = Py_mod_exec,
|
|
24
|
+
.value = (void*)mod_exec_module
|
|
25
|
+
},
|
|
26
|
+
#if PY_VERSION_HEX >= 0x030c0000
|
|
27
|
+
{
|
|
28
|
+
/* This extension does not use the CPython API other than initializing
|
|
29
|
+
* the module, hence is safe with subinterpreters and per-interpreter
|
|
30
|
+
* GILs
|
|
31
|
+
*/
|
|
32
|
+
.slot = Py_mod_multiple_interpreters,
|
|
33
|
+
.value = Py_MOD_PER_INTERPRETER_GIL_SUPPORTED,
|
|
34
|
+
},
|
|
35
|
+
#endif
|
|
36
|
+
#if PY_VERSION_HEX >= 0x030d0000
|
|
37
|
+
{
|
|
38
|
+
/* The code in this extension should be safe to use without the GIL */
|
|
39
|
+
.slot = Py_mod_gil,
|
|
40
|
+
.value = Py_MOD_GIL_NOT_USED,
|
|
41
|
+
},
|
|
42
|
+
#endif
|
|
43
|
+
{ /* Sentinel */
|
|
44
|
+
.slot = 0,
|
|
45
|
+
.value = 0
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
static struct PyModuleDef mod_module = {
|
|
50
|
+
.m_base = PyModuleDef_HEAD_INIT,
|
|
51
|
+
.m_name = "_Contacts",
|
|
52
|
+
.m_doc = NULL,
|
|
53
|
+
.m_size = 0,
|
|
54
|
+
.m_methods = mod_methods,
|
|
55
|
+
.m_slots = mod_slots,
|
|
56
|
+
.m_traverse = NULL,
|
|
57
|
+
.m_clear = NULL,
|
|
58
|
+
.m_free = NULL,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
PyObject* PyInit__Contacts(void);
|
|
62
|
+
|
|
63
|
+
PyObject* __attribute__((__visibility__("default"))) PyInit__Contacts(void)
|
|
64
|
+
{
|
|
65
|
+
return PyModuleDef_Init(&mod_module);
|
|
66
|
+
}
|
|
@@ -83,7 +83,7 @@ struct pyobjc_api {
|
|
|
83
83
|
PyObject* _Nullable (*_Nonnull unsupported_method_caller)(
|
|
84
84
|
PyObject* _Nonnull, PyObject* _Nonnull, PyObject* _Nonnull const* _Nonnull,
|
|
85
85
|
size_t);
|
|
86
|
-
void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state);
|
|
86
|
+
void (*_Nonnull err_python_to_objc_gil)(PyGILState_STATE* _Nonnull state) __attribute__((__noreturn__));
|
|
87
87
|
int (*_Nonnull simplify_sig)(const char* signature, char* buf, size_t buflen);
|
|
88
88
|
void (*_Nonnull free_c_array)(int, Py_buffer*);
|
|
89
89
|
int (*_Nonnull py_to_c_array)(BOOL, BOOL, const char* _Nonnull, PyObject* _Nonnull,
|
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
|
|
12
12
|
NS_ASSUME_NONNULL_BEGIN
|
|
13
13
|
|
|
14
|
+
#ifdef USE_STATIC_ANALYZER
|
|
15
|
+
#define CLANG_SUPPRESS [[clang::suppress]]
|
|
16
|
+
#else
|
|
17
|
+
#define CLANG_SUPPRESS
|
|
18
|
+
#endif
|
|
19
|
+
|
|
14
20
|
/*
|
|
15
21
|
*
|
|
16
22
|
* Start of compiler definitions
|
|
@@ -153,10 +159,6 @@ extern PyObject* _Nullable PyObject_VectorcallMethod(
|
|
|
153
159
|
|
|
154
160
|
extern int PyObjC_Cmp(PyObject* o1, PyObject* o2, int* result);
|
|
155
161
|
|
|
156
|
-
extern PyObject* _Nullable PyObjCBytes_InternFromString(const char* v);
|
|
157
|
-
extern PyObject* _Nullable PyObjCBytes_InternFromStringAndSize(const char* v,
|
|
158
|
-
Py_ssize_t l);
|
|
159
|
-
|
|
160
162
|
/*
|
|
161
163
|
* A micro optimization: when using Python 3.3 or later it
|
|
162
164
|
* is possible to access a 'char*' with an ASCII representation
|
|
@@ -238,7 +240,80 @@ _PyObjCTuple_GetItem(PyObject* tuple, Py_ssize_t idx)
|
|
|
238
240
|
PyGILState_Release(_GILState); \
|
|
239
241
|
} while (0)
|
|
240
242
|
|
|
241
|
-
|
|
243
|
+
#if PY_VERSION_HEX < 0x030a0000
|
|
244
|
+
|
|
245
|
+
static inline PyObject* Py_NewRef(PyObject* o)
|
|
246
|
+
{
|
|
247
|
+
Py_INCREF(o);
|
|
248
|
+
return o;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
static inline PyObject* Py_XNewRef(PyObject* o)
|
|
252
|
+
{
|
|
253
|
+
Py_XINCREF(o);
|
|
254
|
+
return o;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
#endif /* PY_VERSION_HEX < 0x030a0000 */
|
|
258
|
+
|
|
259
|
+
#if PY_VERSION_HEX < 0x030d0000
|
|
260
|
+
#define Py_BEGIN_CRITICAL_SECTION(value) { (void)(value);
|
|
261
|
+
#define Py_END_CRITICAL_SECTION() }
|
|
262
|
+
#define Py_EXIT_CRITICAL_SECTION() ((void)0)
|
|
263
|
+
|
|
264
|
+
#define Py_BEGIN_CRITICAL_SECTION2(value1, value2) { (void)(value1); (void)(value2);
|
|
265
|
+
#define Py_END_CRITICAL_SECTION2() }
|
|
266
|
+
#define Py_EXIT_CRITICAL_SECTION2() ((void)0)
|
|
267
|
+
|
|
268
|
+
#define PyObjC_ATOMIC
|
|
269
|
+
|
|
270
|
+
#else
|
|
271
|
+
|
|
272
|
+
#ifdef Py_GIL_DISABLED
|
|
273
|
+
#define Py_EXIT_CRITICAL_SECTION() PyCriticalSection_End(&_py_cs)
|
|
274
|
+
#define Py_EXIT_CRITICAL_SECTION2() PyCriticalSection2_End(&_py_cs2)
|
|
275
|
+
#define PyObjC_ATOMIC _Atomic
|
|
276
|
+
#else
|
|
277
|
+
#define Py_EXIT_CRITICAL_SECTION() ((void)0)
|
|
278
|
+
#define Py_EXIT_CRITICAL_SECTION2() ((void)0)
|
|
279
|
+
#define PyObjC_ATOMIC
|
|
280
|
+
#endif
|
|
281
|
+
|
|
282
|
+
#endif
|
|
283
|
+
|
|
284
|
+
#if PY_VERSION_HEX < 0x030d0000
|
|
285
|
+
static inline int PyDict_GetItemRef(PyObject *p, PyObject *key, PyObject * _Nonnull* _Nullable result)
|
|
286
|
+
{
|
|
287
|
+
*result = PyDict_GetItemWithError(p, key);
|
|
288
|
+
if (*result == NULL) {
|
|
289
|
+
if (PyErr_Occurred()) {
|
|
290
|
+
return -1;
|
|
291
|
+
} else {
|
|
292
|
+
return 0;
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
Py_INCREF(*result);
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
static inline PyObject* _Nullable PyList_GetItemRef(PyObject* l, Py_ssize_t i)
|
|
301
|
+
{
|
|
302
|
+
PyObject* result = PyList_GetItem(l, i);
|
|
303
|
+
Py_XINCREF(result);
|
|
304
|
+
return result;
|
|
305
|
+
}
|
|
306
|
+
#endif
|
|
307
|
+
|
|
308
|
+
#if PY_VERSION_HEX < 0x030c0000
|
|
309
|
+
static inline PyObject* PyType_GetDict(PyTypeObject* type)
|
|
310
|
+
{
|
|
311
|
+
PyObject* result = type->tp_dict;
|
|
312
|
+
Py_INCREF(result);
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
315
|
+
#endif
|
|
316
|
+
|
|
242
317
|
|
|
243
318
|
NS_ASSUME_NONNULL_END
|
|
244
319
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyobjc-framework-Contacts
|
|
3
|
-
Version:
|
|
3
|
+
Version: 11.0
|
|
4
4
|
Summary: Wrappers for the framework Contacts on macOS
|
|
5
5
|
Home-page: https://github.com/ronaldoussoren/pyobjc
|
|
6
6
|
Author: Ronald Oussoren
|
|
@@ -18,20 +18,20 @@ 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.
|
|
31
|
+
Requires-Python: >=3.9
|
|
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>=11.0
|
|
34
|
+
Requires-Dist: pyobjc-framework-Cocoa>=11.0
|
|
35
35
|
|
|
36
36
|
|
|
37
37
|
Wrappers for the "Contacts" framework on macOS 10.11.
|
{pyobjc-framework-Contacts-10.2 → pyobjc_framework_contacts-11.0}/PyObjCTest/test_cncontactstore.py
RENAMED
|
@@ -3,9 +3,16 @@ import Contacts
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class TestCNContactStore(TestCase):
|
|
6
|
-
def
|
|
7
|
-
self.assertIsEnumType(Contacts.CNAuthorizationStatus)
|
|
6
|
+
def test_constants(self):
|
|
8
7
|
self.assertIsEnumType(Contacts.CNEntityType)
|
|
8
|
+
self.assertEqual(Contacts.CNEntityTypeContacts, 0)
|
|
9
|
+
|
|
10
|
+
self.assertIsEnumType(Contacts.CNAuthorizationStatus)
|
|
11
|
+
self.assertEqual(Contacts.CNAuthorizationStatusNotDetermined, 0)
|
|
12
|
+
self.assertEqual(Contacts.CNAuthorizationStatusRestricted, 1)
|
|
13
|
+
self.assertEqual(Contacts.CNAuthorizationStatusDenied, 2)
|
|
14
|
+
self.assertEqual(Contacts.CNAuthorizationStatusAuthorized, 3)
|
|
15
|
+
self.assertEqual(Contacts.CNAuthorizationStatusLimited, 4)
|
|
9
16
|
|
|
10
17
|
def test_methods(self):
|
|
11
18
|
self.assertArgIsOut(
|