Add optional name attribute to entities

Entities can now carry an optional name attribute, and the YamlFile
class uses that to store the basename of the file, which eases debugging
tremendously.

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/datatypes/entity.py b/datatypes/entity.py
index d8d0ef7..02b5edf 100644
--- a/datatypes/entity.py
+++ b/datatypes/entity.py
@@ -13,20 +13,24 @@
 class Entity(object):
 
     def __init__(self, classes=Classes(), applications=Applications(),
-                 parameters=Parameters()):
+                 parameters=Parameters(), name=None):
         self._applications = applications
         self._classes = classes
         self._parameters = parameters
+        self._name = name
 
     applications = property(lambda self: self._applications)
     classes = property(lambda self: self._classes)
     parameters = property(lambda self: self._parameters)
+    name = property(lambda self: self._name)
 
     def merge(self, other):
         self.applications.merge(other.applications)
         self.classes.merge(other.classes)
         self.parameters.merge(other.parameters)
+        self._name = other.name
 
     def __repr__(self):
-        return '<Entity classes:{0} applications:{1}, parameters:{2}>'.format(
+        return '<Entity{0} classes:{1} applications:{2}, parameters:{3}>'.format(
+            '' if not self.name else " '%s'" % self.name,
             len(self.classes), len(self.applications), len(self.parameters))
diff --git a/storage/yaml_fs/yamlfile.py b/storage/yaml_fs/yamlfile.py
index 2a8b21a..b8cb154 100644
--- a/storage/yaml_fs/yamlfile.py
+++ b/storage/yaml_fs/yamlfile.py
@@ -8,6 +8,7 @@
 #
 import datatypes
 import yaml
+import os
 
 class YamlFile(object):
 
@@ -41,7 +42,8 @@
             parameters = {}
         parameters = datatypes.Parameters(parameters)
 
-        return datatypes.Entity(classes, applications, parameters)
+        return datatypes.Entity(classes, applications, parameters,
+                                name=os.path.basename(self._path))
     entity = property(lambda self: self._get_entity())
 
     def __repr__(self):