From 26e5da0e7b2c11c845c16082a2ed5f6d481e3be5 Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Tue, 31 Mar 2009 15:44:18 +0000 Subject: [PATCH] added _mixins to the classes to indicate which all attributes/methods/properties are being mixed in. --- lastfm/mixins/_chartable.py | 8 +++++++- lastfm/mixins/_searchable.py | 4 ++++ lastfm/mixins/_sharable.py | 4 ++++ lastfm/mixins/_shoutable.py | 4 ++++ lastfm/mixins/_taggable.py | 4 ++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lastfm/mixins/_chartable.py b/lastfm/mixins/_chartable.py index ebe7771..737cf26 100644 --- a/lastfm/mixins/_chartable.py +++ b/lastfm/mixins/_chartable.py @@ -424,9 +424,14 @@ def chartable(chart_types): cls.weekly_chart_list = weekly_chart_list cls.monthly_chart_list = monthly_chart_list + if not hasattr(cls, '_default_params'): cls._default_params = _default_params + if not hasattr(cls, '_mixins'): + cls._mixins = [] + cls._mixins.extend(['weekly_chart_list', 'monthly_chart_list']) + method_names = [ 'get_weekly_%s_chart', 'recent_weekly_%s_chart', 'weekly_%s_chart_list', 'get_monthly_%s_chart', 'recent_monthly_%s_chart', 'monthly_%s_chart_list', @@ -437,7 +442,8 @@ def chartable(chart_types): for chart_type in chart_types: for method_name in method_names: setattr(cls, method_name % chart_type, locals()[method_name % chart_type]) - + cls._mixins.append(method_name % chart_type) + return cls return wrapper diff --git a/lastfm/mixins/_searchable.py b/lastfm/mixins/_searchable.py index d0e0399..ac0a673 100644 --- a/lastfm/mixins/_searchable.py +++ b/lastfm/mixins/_searchable.py @@ -46,4 +46,8 @@ def searchable(cls): if not hasattr(cls, '_search_yield_func'): cls._search_yield_func = _search_yield_func + if not hasattr(cls, '_mixins'): + cls._mixins = [] + cls._mixins.append('search') + return cls diff --git a/lastfm/mixins/_sharable.py b/lastfm/mixins/_sharable.py index 0ded3a7..80db747 100644 --- a/lastfm/mixins/_sharable.py +++ b/lastfm/mixins/_sharable.py @@ -31,4 +31,8 @@ def sharable(cls): if not hasattr(cls, '_default_params'): cls._default_params = _default_params + if not hasattr(cls, '_mixins'): + cls._mixins = [] + cls._mixins.append('share') + return cls \ No newline at end of file diff --git a/lastfm/mixins/_shoutable.py b/lastfm/mixins/_shoutable.py index cd126bd..e8fc1d5 100644 --- a/lastfm/mixins/_shoutable.py +++ b/lastfm/mixins/_shoutable.py @@ -40,6 +40,10 @@ def shoutable(cls): cls.recent_shout = recent_shout if not hasattr(cls, '_default_params'): cls._default_params = _default_params + + if not hasattr(cls, '_mixins'): + cls._mixins = [] + cls._mixins.extend(['shouts', 'recent_shout']) return cls diff --git a/lastfm/mixins/_taggable.py b/lastfm/mixins/_taggable.py index 6e3d985..adc10d5 100644 --- a/lastfm/mixins/_taggable.py +++ b/lastfm/mixins/_taggable.py @@ -73,5 +73,9 @@ def taggable(cls): cls.remove_tag = remove_tag if not hasattr(cls, '_default_params'): cls._default_params = _default_params + + if not hasattr(cls, '_mixins'): + cls._mixins = [] + cls._mixins.extend(['tags', 'add_tags', 'remove_tag']) return cls \ No newline at end of file