teams-bots/write-message/venv/lib/python3.10/site-packages/Foundation/__init__.py

197 lines
5.5 KiB
Python

"""
Python mapping for the Foundation framework.
This module does not contain docstrings for the wrapped code, check Apple's
documentation for details on how to use these functions and classes.
"""
def _setup():
import sys
import CoreFoundation
import objc
from . import _Foundation, _metadata, _functiondefines, _context
from ._inlines import _inline_list_
dir_func, getattr_func = objc.createFrameworkDirAndGetattr(
name="Foundation",
frameworkIdentifier="com.apple.Foundation",
frameworkPath=objc.pathForFramework(
"/System/Library/Frameworks/Foundation.framework"
),
globals_dict=globals(),
inline_list=_inline_list_,
parents=(
_Foundation,
_functiondefines,
_context,
CoreFoundation,
),
metadict=_metadata.__dict__,
)
globals()["__dir__"] = dir_func
globals()["__getattr__"] = getattr_func
del sys.modules["Foundation._metadata"]
objc.addConvenienceForClass(
"NSAttributedString", (("__len__", lambda self: self.length()),)
)
objc.addConvenienceForBasicMapping("NSMergeConflict", True)
objc.addConvenienceForBasicMapping("NSUbiquitousKeyValueStore", False)
objc.addConvenienceForBasicMapping("NSUserDefaults", False)
NSNull = objc.lookUpClass("NSNull")
def nscache_getitem(self, key):
value = self.objectForKey_(key)
if value is None:
raise KeyError(key)
elif value is NSNull.null():
return None
else:
return value
def nscache_get(self, key, default=None):
value = self.objectForKey_(key)
if value is None:
return default
elif value is NSNull.null():
return None
return value
def nscache_setitem(self, key, value):
if value is None:
value = NSNull.null()
self.setObject_forKey_(value, key)
objc.addConvenienceForClass(
"NSCache",
(
("__getitem__", nscache_getitem),
("get", nscache_get),
("__setitem__", nscache_setitem),
("__delitem__", lambda self, key: self.removeObjectForKey_(key)),
("clear", lambda self: self.removeAllObjects()),
),
)
def hash_add(self, value):
if value is None:
value = NSNull.null()
self.addObject_(value)
def hash_contains(self, value):
if value is None:
value = NSNull.null()
return self.containsObject_(value)
def hash_remove(self, value):
if value is None:
value = NSNull.null()
self.removeObject_(value)
def hash_pop(self):
value = self.anyObject()
self.removeObject_(value)
if value is NSNull.null():
return None
else:
return value
objc.addConvenienceForClass(
"NSHashTable",
(
("__len__", lambda self: self.count()),
("clear", lambda self: self.removeAllObjects()),
("__iter__", lambda self: iter(self.objectEnumerator())),
("add", hash_add),
("remove", hash_remove),
("__contains__", hash_contains),
("pop", hash_pop),
),
)
objc.addConvenienceForClass(
"NSIndexPath", (("__len__", lambda self: self.count()),)
)
if sys.maxsize > 2**32:
NSNotFound = 0x7FFFFFFFFFFFFFFF
else:
NSNotFound = 0x7FFFFFFF
def indexset_iter(self):
value = self.firstIndex()
while value != NSNotFound:
yield value
value = self.indexGreaterThanIndex_(value)
def indexset_reversed(self):
value = self.lastIndex()
while value != NSNotFound:
yield value
value = self.indexLessThanIndex_(value)
NSIndexSet = objc.lookUpClass("NSIndexSet")
def indexset_eq(self, other):
if not isinstance(other, NSIndexSet):
return False
return self.isEqualToIndexSet_(other)
def indexset_ne(self, other):
if not isinstance(other, NSIndexSet):
return True
return not self.isEqualToIndexSet_(other)
def indexset_contains(self, value):
try:
return self.containsIndex_(value)
except ValueError:
return False
objc.addConvenienceForClass(
"NSIndexSet",
(
("__len__", lambda self: self.count()),
("__iter__", indexset_iter),
("__reversed__", indexset_reversed),
("__eq__", indexset_eq),
("__ne__", indexset_ne),
("__contains__", indexset_contains),
),
)
# Add 'update', '-=', '+='
objc.addConvenienceForClass(
"NSMutableIndexSet",
(
("clear", lambda self: self.removeAllIndexes()),
("add", lambda self, value: self.addIndex_(value)),
("remove", lambda self, value: self.removeIndex_(value)),
),
)
objc.addConvenienceForClass(
"NSLocale", (("__getitem__", lambda self, key: self.objectForKey_(key)),)
)
globals().pop("_setup")()
from objc import NSDecimal, YES, NO # isort:skip # noqa: E402, F401
import Foundation._context # isort:skip # noqa: E402
import Foundation._functiondefines # isort:skip # noqa: E402
import Foundation._nsindexset # isort:skip # noqa: E402
import Foundation._nsobject # isort:skip # noqa: E402, F401
import Foundation._nsurl # isort:skip # noqa: E402, F401