2121 an equivalent string -- ie. one that will generate an equivalent
2222 version number instance)
2323 * __repr__ generates Python code to recreate the version number instance
24- * __cmp__ compares the current instance with either another instance
24+ * _cmp compares the current instance with either another instance
2525 of the same class or a string (which will be parsed to an instance
2626 of the same class, thus must follow the same rules)
2727"""
@@ -32,7 +32,7 @@ class Version:
3232 """Abstract base class for version numbering classes. Just provides
3333 constructor (__init__) and reproducer (__repr__), because those
3434 seem to be the same for all version numbering classes; and route
35- rich comparisons to __cmp__ .
35+ rich comparisons to _cmp .
3636 """
3737
3838 def __init__ (self , vstring = None ):
@@ -43,37 +43,37 @@ def __repr__ (self):
4343 return "%s ('%s')" % (self .__class__ .__name__ , str (self ))
4444
4545 def __eq__ (self , other ):
46- c = self .__cmp__ (other )
46+ c = self ._cmp (other )
4747 if c is NotImplemented :
4848 return c
4949 return c == 0
5050
5151 def __ne__ (self , other ):
52- c = self .__cmp__ (other )
52+ c = self ._cmp (other )
5353 if c is NotImplemented :
5454 return c
5555 return c != 0
5656
5757 def __lt__ (self , other ):
58- c = self .__cmp__ (other )
58+ c = self ._cmp (other )
5959 if c is NotImplemented :
6060 return c
6161 return c < 0
6262
6363 def __le__ (self , other ):
64- c = self .__cmp__ (other )
64+ c = self ._cmp (other )
6565 if c is NotImplemented :
6666 return c
6767 return c <= 0
6868
6969 def __gt__ (self , other ):
70- c = self .__cmp__ (other )
70+ c = self ._cmp (other )
7171 if c is NotImplemented :
7272 return c
7373 return c > 0
7474
7575 def __ge__ (self , other ):
76- c = self .__cmp__ (other )
76+ c = self ._cmp (other )
7777 if c is NotImplemented :
7878 return c
7979 return c >= 0
@@ -91,7 +91,7 @@ def __ge__(self, other):
9191# (if not identical to) the string supplied to parse
9292# __repr__ (self) - generate Python code to recreate
9393# the instance
94- # __cmp__ (self, other) - compare two version numbers ('other' may
94+ # _cmp (self, other) - compare two version numbers ('other' may
9595# be an unparsed version string, or another
9696# instance of your version class)
9797
@@ -169,30 +169,39 @@ def __str__ (self):
169169 return vstring
170170
171171
172- def __cmp__ (self , other ):
172+ def _cmp (self , other ):
173173 if isinstance (other , str ):
174174 other = StrictVersion (other )
175175
176- compare = cmp ( self .version , other .version )
177- if ( compare == 0 ): # have to compare prerelease
178-
179- # case 1: neither has prerelease; they're equal
180- # case 2: self has prerelease, other doesn't; other is greater
181- # case 3: self doesn't have prerelease, other does: self is greater
182- # case 4: both have prerelease: must compare them!
176+ if self .version != other .version :
177+ # numeric versions don't match
178+ # prerelease stuff doesn't matter
179+ if self . version < other . version :
180+ return - 1
181+ else :
182+ return 1
183183
184- if (not self .prerelease and not other .prerelease ):
184+ # have to compare prerelease
185+ # case 1: neither has prerelease; they're equal
186+ # case 2: self has prerelease, other doesn't; other is greater
187+ # case 3: self doesn't have prerelease, other does: self is greater
188+ # case 4: both have prerelease: must compare them!
189+
190+ if (not self .prerelease and not other .prerelease ):
191+ return 0
192+ elif (self .prerelease and not other .prerelease ):
193+ return - 1
194+ elif (not self .prerelease and other .prerelease ):
195+ return 1
196+ elif (self .prerelease and other .prerelease ):
197+ if self .prerelease == other .prerelease :
185198 return 0
186- elif ( self .prerelease and not other .prerelease ) :
199+ elif self .prerelease < other .prerelease :
187200 return - 1
188- elif ( not self . prerelease and other . prerelease ) :
201+ else :
189202 return 1
190- elif (self .prerelease and other .prerelease ):
191- return cmp (self .prerelease , other .prerelease )
192-
193- else : # numeric versions don't match --
194- return compare # prerelease stuff doesn't matter
195-
203+ else :
204+ assert False , "never get here"
196205
197206# end class StrictVersion
198207
@@ -325,7 +334,7 @@ def __repr__ (self):
325334 return "LooseVersion ('%s')" % str (self )
326335
327336
328- def __cmp__ (self , other ):
337+ def _cmp (self , other ):
329338 if isinstance (other , str ):
330339 other = LooseVersion (other )
331340
0 commit comments