22 lines
724 B
Python
22 lines
724 B
Python
# Access WeakSet through the weakref module.
|
|
# This code is separated-out because it is needed
|
|
# by abc.py to load everything else at startup.
|
|
|
|
from java.util import WeakHashMap
|
|
from java.util.Collections import newSetFromMap, synchronizedMap
|
|
from jythonlib import set_builder, MapMaker
|
|
|
|
__all__ = ['WeakSet']
|
|
|
|
|
|
class WeakSet(set):
|
|
|
|
def __new__(cls, data=None):
|
|
def _build():
|
|
# Although not specified in the docs, WeakSet supports equality on
|
|
# keys, as seen in test_weakset and its use of testing class
|
|
# SomeClass. Therefore we cannot use MapMaker in this case.
|
|
return newSetFromMap(synchronizedMap(WeakHashMap()))
|
|
|
|
return set_builder(_build, cls)(data)
|