From 5d370edd2828861d1d15f6f0e960b4b37fc5f006 Mon Sep 17 00:00:00 2001
From: Tamas Gal <tgal@km3net.de>
Date: Fri, 2 Oct 2020 12:29:12 +0200
Subject: [PATCH] Use AttrDict for definitions

---
 km3io/definitions/__init__.py | 8 ++++++++
 km3io/tools.py                | 7 +++++++
 2 files changed, 15 insertions(+)

diff --git a/km3io/definitions/__init__.py b/km3io/definitions/__init__.py
index f9d18d3..22a8c7d 100644
--- a/km3io/definitions/__init__.py
+++ b/km3io/definitions/__init__.py
@@ -1,5 +1,7 @@
 #!/usr/bin/env python3
 
+from km3io.tools import AttrDict
+
 from .mc_header import data as mc_header
 
 from .trigger import data as trigger
@@ -8,6 +10,12 @@ from .reconstruction import data as reconstruction
 from .w2list_genhen import data as w2list_genhen
 from .w2list_gseagen import data as w2list_gseagen
 
+trigger = AttrDict(trigger)
+fitparameters = AttrDict(fitparameters)
+reconstruction = AttrDict(reconstruction)
+w2list_genhen = AttrDict(w2list_genhen)
+w3list_gseagen = AttrDict(w2list_gseagen)
+
 trigger_idx = {v: k for k, v in trigger.items()}
 fitparameters_idx = {v: k for k, v in fitparameters.items()}
 reconstruction_idx = {v: k for k, v in reconstruction.items()}
diff --git a/km3io/tools.py b/km3io/tools.py
index 0b856e2..d66a45d 100644
--- a/km3io/tools.py
+++ b/km3io/tools.py
@@ -11,6 +11,13 @@ BASKET_CACHE_SIZE = 110 * 1024**2
 BASKET_CACHE = uproot.cache.ThreadSafeArrayCache(BASKET_CACHE_SIZE)
 
 
+class AttrDict(dict):
+    """A dictionary which allows access to its key through attributes."""
+    def __init__(self, *args, **kwargs):
+        super(AttrDict, self).__init__(*args, **kwargs)
+        self.__dict__ = self
+
+
 class cached_property:
     """A simple cache decorator for properties."""
     def __init__(self, function):
-- 
GitLab