Andriy Kornatskyy avatar Andriy Kornatskyy committed 8634229

Fixed issue #4: Add ability for Checker to simulate plain python class.

Comments (0)

Files changed (1)

src/wheezy/validation/checker.py

         """ Returns a result of validation limited to attributes in
             `kwargs` which represents attributes of model being validated.
         """
-        m = dict.fromkeys([k for k, i in self.validator.rules] +
-                          [k for k, i in self.validator.inner])
+        m = Model(dict.fromkeys([k for k, i in self.validator.rules] +
+                                [k for k, i in self.validator.inner]))
         m.update(kwargs)
         results = {}
         self.validator.validate(m, results, self.stop,
         """
         results = self.check(**kwargs)
         return results and results[0][1] or None
+
+
+# region: internal details
+
+class Model(dict):
+    __slots__ = ()
+
+    def __setattr__(self, key, value):
+        return super(Model, self).__setitem__(key, value)
+
+    def __getattr__(self, name):
+        try:
+            return super(Model, self).__getitem__(name)
+        except KeyError:
+            raise AttributeError(name)
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.