docs: def compare(self, other):
          """
          Compares the version with another
  
          Parameters
          ----------
          other : Version
              The version to compare to
          """
          if self._req != other._req:
              raise ArcanaUsageError(
                  "Can't compare versions of different requirements {} and {}"
                  .format(self._req, other._req))
          # Compare main sequence
          if self._seq < other._seq:
              return -1
          elif self._seq > other._seq:
              return 1
          # If main sequence is equal check prerelease. If a prerelease is
          # None then it is a full release which is > then a prerelease so we
          # just assign it 'z' (which is greater than 'a', 'b' and 'rc')
          s = self._prerelease if self._prerelease is not None else ('z',)
          o = other._prerelease if other._prerelease is not None else ('z',)
          if s < o:
              return -1
          if s > o:
              return 1
          # If both main sequence and prereleases are equal, compare post release
          s = self._post if self._post is not None else 0
          o = other._post if other._post is not None else 0
          if s < o:
              return -1
          if s > o:
              return 1
          # If both main sequence and prereleases are equal, compare development
          # release
          s = self._dev if self._dev is not None else 0
          o = other._dev if other._dev is not None else 0
          if s < o:
              return -1
          if s > o:
              return 1
          assert self == other
          return 0