File: _weakrefset.py

package info (click to toggle)
jython 2.7.2%2Brepack1-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 62,676 kB
  • sloc: python: 640,908; java: 306,458; xml: 1,984; sh: 522; ansic: 126; makefile: 76
file content (21 lines) | stat: -rw-r--r-- 724 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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)