Return true if app has customized method `attr`. Note: This is used for optimizations in cases where we know how the default behavior works, but need to account for someone using inheritance to override a method/property.
(app, attr)
| 93 | |
| 94 | |
| 95 | def app_has_custom(app, attr): |
| 96 | """Return true if app has customized method `attr`. |
| 97 | |
| 98 | Note: |
| 99 | This is used for optimizations in cases where we know |
| 100 | how the default behavior works, but need to account |
| 101 | for someone using inheritance to override a method/property. |
| 102 | """ |
| 103 | return mro_lookup(app.__class__, attr, stop={Celery, object}, |
| 104 | monkey_patched=[__name__]) |
| 105 | |
| 106 | |
| 107 | def _unpickle_appattr(reverse_name, args): |