cdgriffith / cdgriffith/Box

Caching a box resuts in read error

Open
#260 1 comment 1 reaction 0 assignees View on GitHub
bug
Dominant language
Python
Stars
2.8k
Forks
135
PR merge metrics
No merged PRs in 30d

Description

I have a use case where I want to cache boxes and read them back again. Below is a MWE using `joblib` for caching but I also found it doesn't work Flask caching. I think some metadata is lost when caching the box, so the retrieved box somehow is not a box with `box_dots = True`.

## Code

```{python}

import box
print(box.__version__)
from box import Box
import joblib
print(joblib.__version__)
b2 = Box(
{
"l1": {
"time_range_selected_utc": {
"left": "2023-03-01 10:00:00",
"right": "2023-06-01 10:00:00",
}
}
},
box_dots=True,
conversion_box=False,
frozen_box=False,
)
print(b2.l1.time_range_selected_utc.left)
print(b2["l1.time_range_selected_utc.right"])
print(b2["l1.time_range_selected_utc.left"])

joblib.dump(b2, "boxdump.joblib")

b3 = joblib.load("boxdump.joblib")
print(b3.l1.time_range_selected_utc.left)
print(b3["l1.time_range_selected_utc.right"]) # this will fail
print(b3["l1.time_range_selected_utc.left"])
```

## Output

```
7.1.1
1.3.2
2023-03-01 10:00:00
2023-06-01 10:00:00
2023-03-01 10:00:00
2023-03-01 10:00:00
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
File [~/opt/miniconda3/envs/om3/lib/python3.9/site-packages/box/box.py:592](https://file+.vscode-resource.vscode-cdn.net/Users/sriki/Documents/cpnet/OmegaMuller/~/opt/miniconda3/envs/om3/lib/python3.9/site-packages/box/box.py:592), in box.box.Box.__getitem__()

KeyError: 'l1.time_range_selected_utc.right'

During handling of the above exception, another exception occurred:

KeyError Traceback (most recent call last)
File [~/opt/miniconda3/envs/om3/lib/python3.9/site-packages/box/box.py:592](https://file+.vscode-resource.vscode-cdn.net/Users/sriki/Documents/cpnet/OmegaMuller/~/opt/miniconda3/envs/om3/lib/python3.9/site-packages/box/box.py:592), in box.box.Box.__getitem__()

KeyError: 'time_range_selected_utc.right'

...
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.