
    hI                     r    S r SSKJrJr  SSKrSSKrSSKrSSKJrJ	r	  SSKJ
r
Jr  SSKJr   " S S\5      rg)	z
Tests for L{incremental}.
    )divisionabsolute_importN)getVersionStringIncomparableVersions)Version_inf)TestCasec                      \ rS rSrS rS r\R                  " \R                  S:  S5      S 5       r
S rS rS	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S  r$S! r%S" r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2S/ r3S0 r4S1 r5S2 r6S3 r7S4 r8S5 r9S6 r:S7 r;S8 r<S9r=g:);VersionsTests   c           
      ~    [        SSSSSSSS9nU R                  UR                  5       UR                  5       5        g)z5
The local version is the same as the short version.
dummy   r         release_candidatepostdevN)r   assertEquallocalshort)selfvas     e/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/incremental/tests/test_version.pytest_localIsShortVersionsTests.test_localIsShort   s6     WaAJRXXZ0    c           	      `   [        SSSS5      n[        SSSS5      nU R                  X:  5        U R                  X!:  5        U R                  X:  5        U R                  X!:*  5        U R                  X:g  5        U R                  U[        SSSS5      :H  5        U R                  X":H  5        g)z2
Versions can be compared for equality and order.
r   r   r   Nr   
assertTruer   r   vbs      r   test_versionComparison$VersionsTests.test_versionComparison        WaA&WaA&  !!!ggq!Q778!r   )r   zComparisons do not raise on py2c                    [        SSSS5      n[        5       nU R                  [        5         X:    SSS5        U R                  [        5         X:    SSS5        U R                  [        5         X:    SSS5        U R                  [        5         X:*    SSS5        U R	                  X:H  5        U R                  X:g  5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ny= f! , (       d  f       Nh= f)z-
Versions can be compared with non-versions.
r   r   r   N)r   objectassertRaises	TypeErrorassertFalser!   )r   vos      r    test_versionComparisonNonVersion.VersionsTests.test_versionComparisonNonVersion*   s    
 GQ1%Hy)E * y)E * y)F * y)F * 	  *) *) *) *)s/   CC2C*C;
C
C'*
C8;
D	c           	      `   [        SSSS5      n[        SSSS5      nU R                  X:  5        U R                  X!:  5        U R                  X:  5        U R                  X!:*  5        U R                  X:g  5        U R                  U[        SSSS5      :H  5        U R                  X":H  5        g)z-
Version package names are case insensitive.
r   r   r   DuMmYNr    r"   s      r   %test_versionComparisonCaseInsensitive3VersionsTests.test_versionComparisonCaseInsensitiveA   r&   r   c                     [        SSSS5      n[        SSSS5      nU R                  X:  5        U R                  X:  5        U R                  X!5        g)z9
NEXT releases are always larger than numbered releases.
whateverNEXTr   r   Nr   r!   r+   assertNotEqualsr"   s      r   test_comparingNEXTReleases(VersionsTests.test_comparingNEXTReleasesO   sP     ZA.ZAq) !R$r   c                 p   U R                  [        5         [        SSSSSSSS9  SSS5        U R                  [        5         [        SSSSSSSS9  SSS5        U R                  [        5         [        SSSSSSSS9  SSS5        U R                  [        5         [        SSSSSSSS9  SSS5        U R                  [        5         [        SSSSSSSS9  SSS5        g! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       No= f! , (       d  f       g= f)zB
NEXT releases must always have the rest of the numbers set to 0.
r5   r6   r   r   r   Nr)   
ValueErrorr   r   s    r   test_NEXTMustBeAlone"VersionsTests.test_NEXTMustBeAloneY   s     z*J1qQ + z*J1qQ + z*J1qQ + z*J1qQ + z*J1qQ +* +* +* +* +* +*s;   C#C40DD
D'#
C14
D
D
D$'
D5c                 ^    [        SSSS5      n[        SSSS5      nU R                  X!5        g)z(
NEXT releases are equal to each other.
r5   r6   r   N)r   assertEqualsr"   s      r   test_comparingNEXTReleasesEqual-VersionsTests.test_comparingNEXTReleasesEquall   s2     ZA.ZA."!r   c                     [        SSSSSS9n[        SSSS5      nU R                  X:  5        U R                  X:  5        U R                  X!5        g)z@
Prereleases are always less than versions without prereleases.
r5   r   r   
prereleaseNr7   r"   s      r   %test_comparingPrereleasesWithReleases3VersionsTests.test_comparingPrereleasesWithReleasest   sR     ZAqQ7ZAq) !R$r   c                     [        SSSSSS9  U R                  U R                  /5      nU R                  [	        U5      S5        U R                  US   S   S5        g)z0
Passing 'prerelease' to Version is deprecated.
r5   r   r   rF   messagezvPassing prerelease to incremental.Version was deprecated in Incremental 16.9.0. Please pass release_candidate instead.N)r   flushWarningstest_prereleaseDeprecatedr   len)r   warningss     r   rM   'VersionsTests.test_prereleaseDeprecated~   sa     	
Aq!2%%t'E'E&FGX*QK	"I	
r   c                     [        SSSSSS9nUR                    U R                  U R                  /5      nU R	                  [        U5      S5        U R	                  US   S   S5        g)z4
Accessing 'prerelease' on a Version is deprecated.
r5   r   r   r   rK   zuAccessing incremental.Version.prerelease was deprecated in Incremental 16.9.0. Use Version.release_candidate instead.N)r   rG   rL   "test_prereleaseAttributeDeprecatedr   rN   )r   r   rO   s      r   rS   0VersionsTests.test_prereleaseAttributeDeprecated   sj     ZAqA>
%%t'N'N&OPX*QK	"I	
r   c                     [        SSSSSS9n[        SSSS5      nU R                  X:  5        U R                  X:  5        U R                  X!5        g)zN
Release Candidates are always less than versions without release
candidates.
r5   r   r   rR   Nr7   r"   s      r   +test_comparingReleaseCandidatesWithReleases9VersionsTests.test_comparingReleaseCandidatesWithReleases   sR    
 ZAqA>ZAq) !R$r   c                     [        SSSSSS9n[        SSSS5      nU R                  X:  5        U R                  X:  5        U R                  X!5        g)zG
Post releases are always greater than versions without post
releases.
r5   r   r   r   Nr7   r"   s      r   &test_comparingPostReleasesWithReleases4VersionsTests.test_comparingPostReleasesWithReleases   sR    
 ZAqq1ZAq) !R$r   c                     [        SSSSSS9n[        SSSSSS9nU R                  X:  5        U R                  X:  5        U R                  X!5        g)zO
Dev releases are always greater than postreleases based on previous
releases.
r5   r   r   r   rY   Nr7   r"   s      r   1test_comparingDevReleasesWithPreviousPostReleases?VersionsTests.test_comparingDevReleasesWithPreviousPostReleases   sT    
 ZAqa0ZAqq1 !R$r   c                     [        SSSSSS9n[        SSSS5      nU R                  X:  5        U R                  X:  5        U R                  X!5        g)zB
Dev releases are always less than versions without dev releases.
r5   r   r   r]   Nr7   r"   s      r   %test_comparingDevReleasesWithReleases3VersionsTests.test_comparingDevReleasesWithReleases   sR     ZAqa0ZAq) !R$r   c                     [        SSSSSS9n[        SSSSSS9nU R                  X:H  5        U R                  X:g  5        g)z.
Release Candidates are equal to prereleases.
r5   r   r   rR   rF   N)r   r!   r+   r"   s      r   test_rcEqualspreVersionsTests.test_rcEqualspre   sF     ZAqA>ZAqQ7!"r   c           
      ~    U R                  [        5         [        SSSSSSS9  SSS5        g! , (       d  f       g= f)z7
Release Candidate and prerelease can't both be given.
r5   r   r   )rG   r   Nr<   r>   s    r   test_rcOrpreButNotBoth$VersionsTests.test_rcOrpreButNotBoth   s0     z*J1aAK +**s   .
<c                 Z   [        SSSSSS9n[        SSSSSS9nU R                  X:  5        U R                  X!:  5        U R                  X:*  5        U R                  X!:  5        U R                  X:g  5        U R                  U[        SSSSSS9:H  5        U R                  X:H  5        g)zN
The value specified as the release candidate is used in version
comparisons.
r5   r   r   rR   r   Nr    r"   s      r   test_comparingReleaseCandidates-VersionsTests.test_comparingReleaseCandidates   s    
 ZAqA>ZAqA>  !!!gj!QQOOP!r   c                 Z   [        SSSSSS9n[        SSSSSS9nU R                  X:  5        U R                  X!:  5        U R                  X:*  5        U R                  X!:  5        U R                  X:g  5        U R                  U[        SSSSSS9:H  5        U R                  X:H  5        g)zH
The value specified as the postrelease is used in version comparisons.
r5   r   r   rY   r   Nr    r"   s      r   test_comparingPost VersionsTests.test_comparingPost   s     ZAqq1ZAqq1  !!!gj!QBBC!r   c                 Z   [        SSSSSS9n[        SSSSSS9nU R                  X:  5        U R                  X!:  5        U R                  X:*  5        U R                  X!:  5        U R                  X:g  5        U R                  U[        SSSSSS9:H  5        U R                  X:H  5        g)zH
The value specified as the dev release is used in version comparisons.
r5   r   r   r]   r   Nr    r"   s      r   test_comparingDevVersionsTests.test_comparingDev   s     ZAqa0ZAqa0  !!!gj!QqAAB!r   c                 `   [        SSSSSSS9n[        SSSSSSS9nU R                  X:  5        U R                  X!:  5        U R                  X:*  5        U R                  X!:  5        U R                  X:g  5        U R                  U[        SSSSSSS9:H  5        U R                  X:H  5        gz^
The value specified as the dev release and release candidate is used in
version comparisons.
r5   r   r   r   r   r   Nr    r"   s      r   test_comparingDevAndRC$VersionsTests.test_comparingDevAndRC       
 ZAqA1EZAqA1E  !!!gj!QQTUVVW!r   c                 `   [        SSSSSSS9n[        SSSSSSS9nU R                  X:  5        U R                  X!:  5        U R                  X:*  5        U R                  X!:  5        U R                  X:g  5        U R                  U[        SSSSSSS9:H  5        U R                  X:H  5        grs   r    r"   s      r   test_comparingDevAndRCDifferent-VersionsTests.test_comparingDevAndRCDifferent  rw   r   c                 P   U R                  [        [        5        U R                  [        [        :  5        U R                  [        [        :  5        U R                  [        [        :  5        U R                  [        [        :*  5        U R                  [        [        :g  5        g)z:
L{_inf} is equal to L{_inf}.

This is a regression test.
N)r   r   r+   r!   r>   s    r   test_infComparisonSelf$VersionsTests.test_infComparisonSelf  sj     	t$%%%%&r   c                 8   [        5       nU R                  [        U:  5        U R                  [        U:  5        U R                  [        U:  5        U R                  [        U:*  5        U R                  [        U:g  5        U R                  [        U:H  5        g)z+
L{_inf} is greater than any other object.
N)r(   r!   r   r+   )r   r-   s     r   test_infComparison VersionsTests.test_infComparison*  sq     Hq!"	"#	"#r   c                     U R                  [        [        R                  [	        SSSS5      [	        SSSS5      5        g)z?
The package names of the Version objects need to be the same.
r   r   r   dumymN)r)   r   operatoreqr   r>   s    r   test_disallowBuggyComparisons+VersionsTests.test_disallowBuggyComparisons6  s8     	 KKGQ1%GQ1%		
r   c                 n    [        SSSS5      nSnU R                  UR                  U5      [        5        g)zP
Comparing a L{Version} to some other object type results in
C{NotImplemented}.
r   r   r   )r   r   r   r   N)r   r   __cmp__NotImplementedr"   s      r   test_notImplementedComparisons,VersionsTests.test_notImplementedComparisonsA  s1    
 WaA&B8r   c           
      R    U R                  [        [        SSSS5      5      S5        g)z]
Calling C{repr} on a version returns a human-readable string
representation of the version.
r   r   r   r   zVersion('dummy', 1, 2, 3)Nr   reprr   r>   s    r   	test_reprVersionsTests.test_reprJ  s%    
 	ggq!Q78:UVr   c                 P    U R                  [        [        SSSSSS95      S5        g)	z
Calling C{repr} on a version with a prerelease returns a human-readable
string representation of the version including the prerelease as a
release candidate..
r   r   r   r      rF   .Version('dummy', 1, 2, 3, release_candidate=4)Nr   r>   s    r   test_reprWithPrerelease%VersionsTests.test_reprWithPrereleaseQ  s*     	!Qa89<	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)	z
Calling C{repr} on a version with a release candidate returns a
human-readable string representation of the version including the rc.
r   r   r   r   r   rR   r   Nr   r>   s    r   test_reprWithReleaseCandidate+VersionsTests.test_reprWithReleaseCandidate\  s*    
 	!QQ?@<	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)	z
Calling C{repr} on a version with a postrelease returns a
human-readable string representation of the version including the
postrelease.
r   r   r   r   r   rY   z!Version('dummy', 1, 2, 3, post=4)Nr   r>   s    r   test_reprWithPostVersionsTests.test_reprWithPostf  s*     	!Q235X	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)	z
Calling C{repr} on a version with a dev release returns a
human-readable string representation of the version including the dev
release.
r   r   r   r   r   r]   z Version('dummy', 1, 2, 3, dev=4)Nr   r>   s    r   test_reprWithDevVersionsTests.test_reprWithDevp  s*     	!Qq124V	
r   c           
      R    U R                  [        [        SSSS5      5      S5        g)z\
Calling C{str} on a version returns a human-readable string
representation of the version.
r   r   r   r   z[dummy, version 1.2.3]Nr   strr   r>   s    r   test_strVersionsTests.test_strz  s%    
 	WWaA679QRr   c                 P    U R                  [        [        SSSSSS95      S5        g)z_
Calling C{str} on a version with a prerelease includes the prerelease
as a release candidate.
r   r   r   rF   [dummy, version 1.0.0rc1]Nr   r>   s    r   test_strWithPrerelease$VersionsTests.test_strWithPrerelease  s*    
 	AqQ78:U	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)zV
Calling C{str} on a version with a release candidate includes the
release candidate.
r   r   r   rR   r   Nr   r>   s    r   test_strWithReleaseCandidate*VersionsTests.test_strWithReleaseCandidate  s*    
 	AqA>?'	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)zJ
Calling C{str} on a version with a postrelease includes the
postrelease.
r   r   r   rY   z[dummy, version 1.0.0.post1]Nr   r>   s    r   test_strWithPostVersionsTests.test_strWithPost  s*    
 	Aqq124R	
r   c                 R    U R                  [        [        SSSSSSS95      S5        g)zz
Calling C{str} on a version with a release candidate and dev release
includes the release candidate and the dev release.
r   r   r   r   rt   z[dummy, version 1.0.0rc1.dev2]Nr   r>   s    r   "test_strWithDevAndReleaseCandidate0VersionsTests.test_strWithDevAndReleaseCandidate  s,    
 	AqA1EF,	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)zJ
Calling C{str} on a version with a dev release includes the dev
release.
r   r   r   r]   z[dummy, version 1.0.0.dev1]Nr   r>   s    r   test_strWithDevVersionsTests.test_strWithDev  s*    
 	Aqa013P	
r   c                 R    U R                  [        [        SSSSSSS95      S5        g)zn
Calling C{str} on a version with a postrelease and dev release
includes the postrelease and the dev release.
r   r   r   r   r   r   z![dummy, version 1.0.0.post1.dev2]Nr   r>   s    r   test_strWithDevAndPost$VersionsTests.test_strWithDevAndPost  s,    
 	Aqqa89/	
r   c                 \    U R                  [        SSSS5      R                  5       S5        g )Nr   r   r   r   z1.2.3)r   r   r   r>   s    r   	testShortVersionsTests.testShort  s&    !Q288:GDr   c                 R    U R                  S[        [        SSSS5      5      5        g)zZ
L{getVersionString} returns a string with the package name and the
short version number.
zTwisted 8.0.0Twisted   r   Nr   r   r   r>   s    r   test_getVersionString#VersionsTests.test_getVersionString  s'    
 	*:79aQRTU;V*WXr   c                 P    U R                  [        [        SSSSSS95      S5        g)zM
L{getVersionString} includes the prerelease as a release candidate, if
any.
r5   r   r   r   rF   whatever 8.0.0rc1Nr   r>   s    r   #test_getVersionStringWithPrerelease1VersionsTests.test_getVersionStringWithPrerelease  s*    
 	WZAqQGH	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)z=
L{getVersionString} includes the release candidate, if any.
r5   r   r   r   rR   r   Nr   r>   s    r   )test_getVersionStringWithReleaseCandidate7VersionsTests.test_getVersionStringWithReleaseCandidate  s*     	WZAqANO	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)z7
L{getVersionString} includes the postrelease, if any.
r5   r   r   r   rY   zwhatever 8.0.0.post1Nr   r>   s    r   test_getVersionStringWithPost+VersionsTests.test_getVersionStringWithPost  s*     	WZAqqAB"	
r   c                 P    U R                  [        [        SSSSSS95      S5        g)z7
L{getVersionString} includes the dev release, if any.
r5   r   r   r   r]   zwhatever 8.0.0.dev1Nr   r>   s    r   test_getVersionStringWithDev*VersionsTests.test_getVersionStringWithDev  s*     	WZAqa@ACX	
r   c                 R    U R                  [        [        SSSSSSS95      S5        g)	zM
L{getVersionString} includes the dev release and release candidate, if
any.
r5   r   r   r   r   rt   zwhatever 8.0.0rc2.dev1Nr   r>   s    r   !test_getVersionStringWithDevAndRC/VersionsTests.test_getVersionStringWithDevAndRC  s-    
 	WZAqASTUV$	
r   c                 R    U R                  [        [        SSSSSSS95      S5        g)	zG
L{getVersionString} includes the dev release and postrelease, if
any.
r5   r   r   r   r   r   zwhatever 8.0.0.post2.dev1Nr   r>   s    r   #test_getVersionStringWithDevAndPost1VersionsTests.test_getVersionStringWithDevAndPost  s,    
 	WZAqqaHI'	
r   c                 \    U R                  [        SSSS5      R                  5       S5        g)zH
The C{base} method returns just "NEXT" when NEXT is the major version.
foor6   r   Nr   r   baser>   s    r   test_baseWithNEXTVersionsTests.test_baseWithNEXT  s(     	15::<fEr   c                 \    U R                  [        SSSS5      R                  5       S5        g)zI
The C{base} method returns a very simple representation of the version.
r   r   r   z1.0.0Nr   r>   s    r   	test_baseVersionsTests.test_base  s(     	1a0557Ar   c           
      Z    U R                  [        SSSSSS9R                  5       S5        g)@
The base version includes 'rcX' for versions with prereleases.
r   r   r   r   rF   1.0.0rc8Nr   r>   s    r   test_baseWithPrerelease%VersionsTests.test_baseWithPrerelease  s*     	1aA>CCEzRr   c           
      Z    U R                  [        SSSSSS9R                  5       S5        g)zC
The base version includes 'postX' for versions with postreleases.
r   r   r   r   rY   z1.0.0.post8Nr   r>   s    r   test_baseWithPostVersionsTests.test_baseWithPost  s*     	1aa8==?Or   c           
      Z    U R                  [        SSSSSS9R                  5       S5        g)zB
The base version includes 'devX' for versions with dev releases.
r   r   r   r   r]   z
1.0.0.dev8Nr   r>   s    r   test_baseWithDevVersionsTests.test_baseWithDev  s*     	1aQ7<<>Mr   c           
      Z    U R                  [        SSSSSS9R                  5       S5        g)r   r   r   r   r   rR   r   Nr   r>   s    r   test_baseWithReleaseCandidate+VersionsTests.test_baseWithReleaseCandidate  s-     	E1aa8==?	
r   c                 \    U R                  [        SSSSSSS9R                  5       S5        g)	z]
The base version includes 'rcXdevX' for versions with dev releases and
a release candidate.
r   r   r   r   r   rt   z1.0.0rc2.dev8Nr   r>   s    r   test_baseWithDevAndRC#VersionsTests.test_baseWithDevAndRC"  s/    
 	E1aaQ?DDF	
r   c                 \    U R                  [        SSSSSSS9R                  5       S5        g)	zY
The base version includes 'postXdevX' for versions with dev releases
and a postrelease.
r   r   r   r   r   r   z1.0.0.post2.dev8Nr   r>   s    r   test_baseWithDevAndPost%VersionsTests.test_baseWithDevAndPost+  s0    
 	E1a2779;M	
r    N)>__name__
__module____qualname____firstlineno__r   r$   unittestskipIfsysversion_infor.   r2   r9   r?   rC   rH   rM   rS   rV   rZ   r^   ra   rd   rg   rj   rm   rp   ru   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      s=   1" __S%%,.OP  Q ,"%R&"%

	%	%	%%#L"""""'
$	
9W	



S





EY





FBSPN


r   r   )__doc__
__future__r   r   r   r   r   incrementalr   r   r   r   twisted.trial.unittestr	   r   r   r   r   <module>r      s/    1 
   > % +^
H ^
r   