@@ -5,30 +5,6 @@ class ItemInterpreterDestroyed(Exception):
55 """Raised when trying to get an item whose interpreter was destroyed."""
66
77
8- class classonly :
9- """A non-data descriptor that makes a value only visible on the class.
10-
11- This is like the "classmethod" builtin, but does not show up on
12- instances of the class. It may be used as a decorator.
13- """
14-
15- def __init__ (self , value ):
16- self .value = value
17- self .getter = classmethod (value ).__get__
18- self .name = None
19-
20- def __set_name__ (self , cls , name ):
21- if self .name is not None :
22- raise TypeError ('already used' )
23- self .name = name
24-
25- def __get__ (self , obj , cls ):
26- if obj is not None :
27- raise AttributeError (self .name )
28- # called on the class
29- return self .getter (None , cls )
30-
31-
328class UnboundItem :
339 """Represents a cross-interpreter item no longer bound to an interpreter.
3410
@@ -37,37 +13,9 @@ class UnboundItem:
3713 """
3814
3915 __slots__ = ()
40-
41- @classonly
42- def singleton (cls , kind , module , name = 'UNBOUND' ):
43- doc = cls .__doc__
44- if doc :
45- doc = doc .replace (
46- 'cross-interpreter container' , kind ,
47- ).replace (
48- 'cross-interpreter' , kind ,
49- )
50- subclass = type (
51- f'Unbound{ kind .capitalize ()} Item' ,
52- (cls ,),
53- {
54- "_MODULE" : module ,
55- "_NAME" : name ,
56- "__doc__" : doc ,
57- },
58- )
59- return object .__new__ (subclass )
60-
6116 _MODULE = __name__
6217 _NAME = 'UNBOUND'
6318
64- def __new__ (cls ):
65- raise Exception (f'use { cls ._MODULE } .{ cls ._NAME } ' )
66-
67- def __repr__ (self ):
68- return f'{ self ._MODULE } .{ self ._NAME } '
69- # return f'interpreters._queues.UNBOUND'
70-
7119 def __hash__ (self ):
7220 return hash ((self ._NAME , self ._MODULE ))
7321
@@ -79,8 +27,12 @@ def __eq__(self, other):
7927 return True
8028 return repr (other ) == repr (self )
8129
30+ def __repr__ (self ):
31+ return f'{ self ._MODULE } .{ self ._NAME } '
32+ # return f'interpreters._queues.UNBOUND'
33+
8234
83- UNBOUND = object . __new__ ( UnboundItem )
35+ UNBOUND = UnboundItem ( )
8436UNBOUND_ERROR = object ()
8537UNBOUND_REMOVE = object ()
8638
0 commit comments