Browse Source

Change improve Python performance of handling core objects.

Add explicit not-/equal, hash methods to TVEpisode, TVShow object.
Add hash methods to ParseResult.
Add hash, notequal methods to SimpleNamespace.
pull/1289/head
Prinz23 5 years ago
committed by JackDandy
parent
commit
ebdba1c208
  1. 1
      CHANGES.md
  2. 6
      sickbeard/classes.py
  3. 4
      sickbeard/name_parser/parser.py
  4. 26
      sickbeard/tv.py

1
CHANGES.md

@ -1,6 +1,7 @@
### 0.22.0 (2019-xx-xx xx:xx:xx UTC)
* Fix creating show list when there is no list at the cycle of backlog search spread
* Change improve Python performance of handling core objects
[develop changelog]

6
sickbeard/classes.py

@ -527,6 +527,12 @@ class SimpleNamespace(object):
def __eq__(self, other):
return self.__dict__ == other.__dict__
def __ne__(self, o):
return not self.__eq__(o)
def __hash__(self):
return hash(tuple(self.__dict__))
class LoadingMessage(object):
def __init__(self):

4
sickbeard/name_parser/parser.py

@ -729,6 +729,10 @@ class ParseResult(LegacyParseResult):
return True
def __hash__(self):
return hash((self.series_name, self.season_number, tuple(self.episode_numbers), self.extra_info,
self.release_group, self.air_date, tuple(self.ab_episode_numbers)))
def __str__(self):
if None is not self.series_name:
to_return = self.series_name + u' - '

26
sickbeard/tv.py

@ -1805,6 +1805,19 @@ class TVShow(TVShowBase):
my_db = db.DBConnection()
my_db.upsert('imdb_info', newValueDict, control_value_dict)
def __ne__(self, o):
# type: (TVShow) -> bool
return not self.__eq__(o)
def __eq__(self, o):
# type: (TVShow) -> bool
if not isinstance(o, TVShow):
return False
return o._tvid == self._tvid and o._prodid == self._prodid
def __hash__(self):
return hash((self._tvid, self._prodid))
def __repr__(self):
return 'TVShow(%s)' % self.__str__()
@ -2608,6 +2621,19 @@ class TVEpisode(TVEpisodeBase):
else:
self.hastbn = False
def __ne__(self, o):
# type: (TVEpisode) -> bool
return not self.__eq__(o)
def __eq__(self, o):
# type: (TVEpisode) -> bool
if not isinstance(o, TVEpisode):
return False
return o._show_obj == self._show_obj and o._epid == self._epid
def __hash__(self):
return hash((self._show_obj, self._epid))
def __repr__(self):
return 'TVEpisode(%s)' % self.__str__()

Loading…
Cancel
Save