2 """Cache to ensure only one Python object is created per Git object.
4 This reduces memory consumption and makes object comparison very cheap.
8 def __init__(self
, create
):
10 self
.__create
= create
12 def __getitem__(self
, name
):
13 if name
not in self
.__objects
:
14 self
.__objects
[name
] = self
.__create
(name
)
15 return self
.__objects
[name
]
17 def __contains__(self
, name
):
18 return name
in self
.__objects
20 def __setitem__(self
, name
, val
):
21 assert name
not in self
.__objects
22 self
.__objects
[name
] = val