ó
    Ô›‘h  ã                   ób   • S r SSKrSSKJrJrJr  SSKJr  SSKJ	r	  SSK
JrJr   " S S\	5      rg)	z1Test handling of ``pyproject.toml`` configurationé    N)ÚcastÚOptionalÚUnion)ÚPath)ÚTestCase)Ú_load_pyproject_tomlÚ_IncrementalConfigc                   ó~   • \ rS rSrSrSS.S\S\\\S4   S\\	   4S jjr
S	 rS
 rS rS rS rS rS rS rS rSrg)ÚVerifyPyprojectDotTomlTestsé   z/Test the `_load_pyproject_toml` helper functionN©ÚpathÚtomlr   Úreturnc                ó6  • Uc  U R                  5       nO[        U5      n[        US5       nUR                  U5        SSS5         [	        U5      $ ! , (       d  f       N= f! [
         a+  n[        US5      (       a  UR                  SU 35        e SnAff = f)z¨
Read a TOML snipped from a temporary file with `_load_pyproject_toml`

@param toml: TOML content of the temporary file

@param path: Path to which the TOML is written
NÚwÚadd_notezWhile loading:

)ÚmktempÚstrÚopenÚwriter   Ú	ExceptionÚhasattrr   )Úselfr   r   Úpath_ÚfÚes         ÚdC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\incremental/tests/test_pyproject.pyÚ	_loadTomlÚ%VerifyPyprojectDotTomlTests._loadToml   s‹   € ð ‰<Ø—K‘K“M‰Eä˜“IˆEä�%˜Ô Ø�G‰G�DŒM÷ ð	Ü'¨Ó.Ð.÷	 Õûô
 ó 	Ü�q˜*×%Ñ%Ø—
‘
Ø(¨¨Ð/ôð ûð	ús#   ¬AÁ
A# Á
A Á#
BÁ-&BÂBc                 ó²   • [         R                  R                  [        [        U R                  5       5      S5      nU R                  [        [        U5        g)zN
An absent ``pyproject.toml`` file produces no result unless
there is opt-in.
úpyproject.tomlN)	Úosr   Újoinr   r   r   ÚassertRaisesÚFileNotFoundErrorr   )r   r   s     r   Útest_fileNotFoundÚ-VerifyPyprojectDotTomlTests.test_fileNotFound-   s:   € ô
 �w‰w�|‰|œD¤ d§k¡k£mÓ4Ð6FÓGˆØ×ÑÔ+Ô-AÀ4ÕHó    c                 óJ   • SnU R                  [        U R                  U5        g)zp
Syntactially invalid TOML produces an exception. The specific
exception varies by the underlying TOML library.
z[project]
name = "abcN)r%   r   r   ©r   r   s     r   Útest_brokenTomlÚ+VerifyPyprojectDotTomlTests.test_brokenToml5   s   € ð
 (ˆØ×Ñœ) T§^¡^°TÕ:r)   c                 óX   • S H$  nU R                  [        U R                  U5        M&     g)z@
`ValueError` is raised when we can't extract the project name.
)Ú
z[tool.notincremental]
z
[project]
z[tool.incremental]
z[project]
[tool.incremental]
N©r%   Ú
ValueErrorr   r+   s     r   Útest_nameMissingÚ,VerifyPyprojectDotTomlTests.test_nameMissing=   s&   € ó
ˆDð ×Ñœj¨$¯.©.¸$Ö?ò
r)   c                 óš   • S H3  nU R                  [        S5         U R                  U5        SSS5        M5     g! , (       d  f       MG  = f)z=
`TypeError` is raised when the project name isn't a string.
)z[project]
name = false
z[tool.incremental]
name = -1
z([tool.incremental]
[project]
name = 1.0
z!The project name must be a stringN)ÚassertRaisesRegexÚ	TypeErrorr   r+   s     r   Útest_nameInvalidOptInÚ1VerifyPyprojectDotTomlTests.test_nameInvalidOptInJ   s@   € ó
ˆDð
 ×'Ñ'¬	Ð3VÕWØ—‘˜tÔ$÷ XÑWò
÷
 XÖWús	   œ;»
A
	c                 óX   • S H$  nU R                  [        U R                  U5        M&     g)zU
`ValueError` is raised when the ``[tool]`` or ``[tool.incremental]``
isn't a table.
)ztool = false
z[tool]
incremental = false
z[tool]
incremental = 123
z[tool]
incremental = null
Nr0   r+   s     r   Útest_toolIncrementalInvalidÚ7VerifyPyprojectDotTomlTests.test_toolIncrementalInvalidV   s&   € ó

ˆDð ×Ñœj¨$¯.©.¸$Ö?ò
r)   c                 óX   • S H$  nU R                  [        U R                  U5        M&     g)z`
Raise `ValueError` when the ``[tool.incremental]`` section contains
keys other than ``"name"``
)z[tool.incremental]
foo = false
z-[tool.incremental]
name = "OK"
other = false
Nr0   r+   s     r   Ú!test_toolIncrementalUnexpecteKeysÚ=VerifyPyprojectDotTomlTests.test_toolIncrementalUnexpecteKeysc   s&   € ó

ˆDð ×Ñœj¨$¯.©.¸$Ö?ò	
r)   c                 óâ   • [        U R                  5       5      nUS-  S-  nUR                  SS9  S H9  nU R                  X1S-  S9nU R	                  U[        SS[        U5      S	95        M;     g
)zÁ
The package has opted-in to Incremental version management when
the ``[tool.incremental]`` section is a dict. The project name
is taken from ``[tool.incremental] name`` or ``[project] name``.
ÚsrcÚfooT©Úparents)z*[project]
name = "Foo"
[tool.incremental]
z [tool.incremental]
name = "Foo"
r"   r   ÚFoo©Úopt_inÚpackager   N©r   r   Úmkdirr   ÚassertEqualr	   r   )r   ÚrootÚpkgr   Úconfigs        r   Útest_setuptoolsOptInÚ0VerifyPyprojectDotTomlTests.test_setuptoolsOptInn   sz   € ô �D—K‘K“MÓ"ˆØ�U‰l˜UÑ"ˆØ�	‰	˜$ˆ	Ñó
ˆDð —^‘^ DÐ6FÑ/F�^ÐGˆFà×ÑØÜ"ØØ!Ü˜S›ñöò
r)   c                 óÜ   • [        U R                  5       5      nUR                  5         U R                  [        S5         U R                  SUS-  S9  SSS5        g! , (       d  f       g= f)z=
Raise `ValueError` when the package root can't be resolved.
z$Can't find the directory of project z[project]
name = "foo"
r"   r   N)r   r   rI   r5   r1   r   )r   rK   s     r   Útest_packagePathRequiredÚ4VerifyPyprojectDotTomlTests.test_packagePathRequired‡   sX   € ô �D—K‘K“MÓ"ˆØ�
‰
Œà×#Ñ#¤JÐ0VÕWØ�N‰NØ+ØÐ,Ñ,ð ñ ÷ X×WÖWús   Á AÁ
A+c           
      óÒ   • [        U R                  5       5      nUS-  S-  nUR                  SS9  U R                  SUS-  S9nU R	                  U[        SS	[        U5      S
95        g)zl
The ``[tool.incremental]`` table is not strictly required, but its
``opt_in=False`` indicates its absence.
r@   rA   TrB   z[project]
name = "Foo"
r"   r   FrD   rE   NrH   )r   rK   rL   rM   s       r   Útest_noToolIncrementalSectionÚ9VerifyPyprojectDotTomlTests.test_noToolIncrementalSection”   sw   € ô
 �D—K‘K“MÓ"ˆØ�U‰l˜UÑ"ˆØ�	‰	˜$ˆ	Ñà—‘Ø'ØÐ(Ñ(ð  ð 
ˆð
 	×ÑØÜØØÜ˜“Xñõ	
r)   © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r	   r   r'   r,   r2   r7   r:   r=   rN   rQ   rT   Ú__static_attributes__rV   r)   r   r   r      sj   † Ù9ð <@òØðØ"'¨¨c°4¨Ñ"8ðà	Ð$Ñ	%õò8Iò;ò@ò
%ò@ò	@òò2õ
r)   r   )r[   r#   Útypingr   r   r   Úpathlibr   Útwisted.trial.unittestr   Úincrementalr   r	   r   rV   r)   r   Ú<module>ra      s*   ðñ 8ã 	ß (Ñ (Ý Ý +ç @ô[
 (õ [
r)   