(filename)
| 3 | |
| 4 | @contextmanager |
| 5 | def pickled(filename): |
| 6 | if os.path.isfile(filename): |
| 7 | data = pickle.load(open(filename)) |
| 8 | else: |
| 9 | data = {} |
| 10 | |
| 11 | def getter(item, type): |
| 12 | if item in data: |
| 13 | return data[item] |
| 14 | else: |
| 15 | data[item] = type() |
| 16 | return data[item] |
| 17 | |
| 18 | yield getter |
| 19 | |
| 20 | pickle.dump(data, open(filename, "w")) |
| 21 | |
| 22 | # Here is an example usage: |
| 23 | with pickled("foo.db") as p: |
no test coverage detected