

def normalize(self, obj):
    '\n        Runs an object through the normalizer mechanism, with the goal of producing a value consisting only of "native types" (:obj:`unicode`, :obj:`int`, :obj:`long`, :obj:`float`, :obj:`dict`, :obj:`list`, etc).\n\n        The resolution order looks like this:\n\n        - Loop through :attr:`self.normalizer_overrides[type(obj)] <normalizer_overrides>` (taking parent classes into account), should be a callable taking (obj, pushrod), falls through on :obj:`NotImplemented`\n        - :attr:`self.normalizers[type(obj)] <normalizers>` (taking parent classes into account), should be a callable taking (obj, pushrod), falls through on :obj:`NotImplemented`\n\n        See :ref:`bundled-normalizers` for all default normalizers.\n\n        :param obj: The object to normalize.\n        '
    for cls in type(obj).__mro__:
        for override in self.normalizer_overrides[cls]:
            attempt = override(obj, self)
            if (attempt is not NotImplemented):
                return attempt
    attempt = normalizers.normalize_object(obj, self)
    if (attempt is not NotImplemented):
        return attempt
    for cls in type(obj).__mro__:
        if (cls in cls.normalizers):
            attempt = self.normalizers[cls](obj, self)
            if (attempt is not NotImplemented):
                return attempt
    return NotImplemented

dataset/ETHPy150Open teozkr/Flask-Pushrod/flask_pushrod/resolver.py Pushrod.normalize/VarMisuse@104/405 `self`->`cls`