2 """Cache for Python objects, for making sure that we create only one
3 Python object per git object. This reduces memory consumption and
4 makes object comparison very cheap."""
6 def __init__(self
, create
):
10 def __getitem__(self
, name
):
11 if name
not in self
.__objects
:
12 self
.__objects
[name
] = self
.__create
(name
)
13 return self
.__objects
[name
]
15 def __contains__(self
, name
):
16 return name
in self
.__objects
18 def __setitem__(self
, name
, val
):
19 assert name
not in self
.__objects
20 self
.__objects
[name
] = val