Source code for gillespy2.core.sortableobject

# GillesPy2 is a modeling toolkit for biochemical simulation.
# Copyright (C) 2019-2023 GillesPy2 developers.

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

[docs]class SortableObject(object): """Base class for GillesPy2 objects that are sortable.""" def __eq__(self, other): return str(self) == str(other) def __ne__(self, other): return not self.__eq__(other) def __gt__(self, other): return not self.__le__(other) def __ge__(self, other): return not self.__lt__(other) def __lt__(self, other): return str(self) < str(other) def __le__(self, other): return str(self) <= str(other) def __cmp__(self, other): return cmp(str(self), str(other)) def __hash__(self): if hasattr(self, '_hash'): return self._hash if hasattr(self, 'id'): self._hash = hash(self.id) elif hasattr(self, 'name'): self._hash = hash(self.name) else: self._hash = hash(self) return self._hash