
    ^hA                     &   S SK r S SKJrJr  S SKrS SKJrJr  S SKJ	r	J
r
  S SKJrJrJr  SSKJr  \R"                  R%                  SS	5      S
 5       rS rS r\" S\S9S 5       r\" S\S9S 5       r\" S\S9S 5       rS rS r\" S5      S 5       r\" S5      S 5       rS r/ SQr\R"                  R%                  S\5      S 5       r\R"                  R%                  S\5      S 5       r \R"                  R%                  S\5      S 5       r!S r"g)    N)Mockpatch)ConfigConfigurable)PyPIExtensionManagerReadOnlyExtensionManager)ExtensionManagerExtensionPackagePluginManager   )fake_client_factoryzversion, expected)	)1r   )1.0r   )1.0.0r   )z1.0.0a52z1.0.0-alpha.52)z1.0.0b3z1.0.0-beta.3)z	1.0.0rc22z1.0.0-rc.22)z1.0.0rc23.post2z1.0.0-rc.23)z1.0.0rc24.dev2z1.0.0-rc.24)z1.0.0rc25.post4.dev2z1.0.0-rc.25c                 <    [         R                  " U 5      U:X  d   eg N)r	   get_semver_version)versionexpecteds     Z/home/james-whalen/.local/lib/python3.13/site-packages/jupyterlab/tests/test_extensions.py(test_ExtensionManager_get_semver_versionr      s     ..w78CCC    c                    ^#    [        SSSS5      mU4S jnU R                  [        SU5        [        5       nUR                  5       I S h  vN nUT/S4:X  d   eg  N7f)N
extension1Extension 1 description prebuiltc                     >#    ST0$ 7f)Nr    )argskwargsr   s     r   mock_installedGtest_ExtensionManager_list_extensions_installed.<locals>.mock_installed%   s     j))s   _get_installed_extensionsr   r
   setattrr   list_extensions)monkeypatchr"   manager
extensionsr   s       @r   /test_ExtensionManager_list_extensions_installedr+   "   se     !,0I2zZJ* 02M~^&(G..00J:,**** 1s   A	AAAc                    ^^#    [        SSSS5      m[        SSSS5      mUU4S jnU R                  [        SU5        [        5       nUR                  S	5      I S h  vN nUTT/S
4:X  d   eg  N7f)Nr   r   r   r   
extension2Extension 2 descriptionc                     >#    TTS.S 4$ 7fN)r   r-   r   r    r!   r   r-   s     r   	mock_list>test_ExtensionManager_list_extensions_query.<locals>.mock_list5        (
CTII   list_packagesextr   r%   )r(   r2   r)   r*   r   r-   s       @@r   +test_ExtensionManager_list_extensions_queryr8   1   s{     !,0I2zZJ!,0I2zZJJ 0/9M&(G..u55J:z2A6666 6s   AA1A/A1z"tornado.httpclient.AsyncHTTPClient)new_callablec                 D  ^^#    [        SSSS5      m[        SSSS5      m[        R                  " SSS0/05      R                  5       U l        UU4S	 jnUR                  [        S
U5        [        SS10S9nUR                  S5      I S h  vN nUT/S4:X  d   eg  N7f)Nr   r   r   r   r-   r.   allowed_extensionsnamec                     >#    TTS.S 4$ 7fr0   r   r1   s     r   r2   Dtest_ExtensionManager_list_extensions_query_allow.<locals>.mock_listH   r4   r5   r6   allowed_extensions_urishttp://dummy-allowed-extensionext_optionsr7   r   r
   jsondumpsencodebodyr&   r   r'   mock_clientr(   r2   r)   r*   r   r-   s        @@r   1test_ExtensionManager_list_extensions_query_allowrJ   A        !,0I2zZJ!,0I2zZJzz#76<:P9Q"RSZZ\KJ 0/9M&.1Q0RSG ..u55J:,**** 6   B	B BB c                 D  ^^#    [        SSSS5      m[        SSSS5      m[        R                  " SSS0/05      R                  5       U l        UU4S	 jnUR                  [        S
U5        [        SS10S9nUR                  S5      I S h  vN nUT/S4:X  d   eg  N7f)Nr   r   r   r   r-   r.   blocked_extensionsr<   c                     >#    TTS.S 4$ 7fr0   r   r1   s     r   r2   Dtest_ExtensionManager_list_extensions_query_block.<locals>.mock_list]   r4   r5   r6   blocked_extensions_urishttp://dummy-blocked-extensionrA   r7   r   rC   rH   s        @@r   1test_ExtensionManager_list_extensions_query_blockrS   V   rK   rL   c                 P  ^^#    [        SSSS5      m[        SSSS5      m[        R                  " SS0/SS0/S.5      R                  5       U l        UU4S	 jnUR                  [        S
U5        [        S1S1S.S9nUR                  S5      I S h  vN nUT/S4:X  d   eg  N7f)Nr   r   r   r   r-   r.   r<   )r;   rN   c                     >#    TTS.S 4$ 7fr0   r   r1   s     r   r2   Jtest_ExtensionManager_list_extensions_query_allow_block.<locals>.mock_listw   r4   r5   r6   r@   rR   )r?   rQ   rA   r7   r   rC   rH   s        @@r   7test_ExtensionManager_list_extensions_query_allow_blockrW   k   s     !,0I2zZJ!,0I2zZJzz$*L#9":$*L#9":	

 fh J 0/9M&(H'I(H'I
G ..u55J:,**** 6s   BB&B$B&c                     #    [        5       n U R                  S5      I S h  vN nUR                  S:X  d   eUR                  S:X  d   eg  N)7f)Nr   errorz%Extension installation not supported.)r   installstatusmessager)   results     r   test_ExtensionManager_installr_      sH     &(G??<00F==G###>>DDDD 1   AA*Ac                     #    [        5       n U R                  S5      I S h  vN nUR                  S:X  d   eUR                  S:X  d   eg  N)7f)Nr   rY   z Extension removal not supported.)r   	uninstallr[   r\   r]   s     r   test_ExtensionManager_uninstallrc      sJ     &(G$$\22F==G###>>???? 3r`   z(jupyterlab.extensions.pypi.xmlrpc.clientc           	      N  ^	#    SSS0S.SSS0S.SSS	.S
SS	.SSS.SSS0S./n[        [        U Vs/ s H	  o"S   S/PM     snS9S9n[        US9U l        [        5       nU Vs0 s H  o"S   SS0UE_M     snm	U	4S jnXTl        UR	                  SSS9I S h  vN u  pgU Vs/ s H  o"R
                  PM     sn/ SQ:X  d   eUS:X  d   eUR	                  SSSS9I S h  vN u  pU Vs/ s H  o"R
                  PM     sn/ SQ:X  d   eg s  snf s  snf  N|s  snf  N<s  snf 7f)Njupyterlab-apodHomepagez-https://github.com/jupyterlab/jupyterlab_apod)r<   project_urlsjupyterlab-gitlabz>https://github.com/jupyterlab-contrib/jupyterlab-gitlab/issuesjupyterlab-git,https://github.com/jupyterlab/jupyterlab-git)r<   project_urljupyterlab-rainbow-bracketsz9https://github.com/krassowski/jupyterlab-rainbow-bracketsnbdimez!https://github.com/jupyter/nbdime)r<   	home_pageriseSource Codez*https://github.com/jupyterlab-contrib/riser<   r   return_valuebrowser   c                    >#    TU    $ 7fr   r   )r<   lbr*   s      r   mock_pkg_metadataKtest_ExtensionManager_list_extensions_query_sort.<locals>.mock_pkg_metadata   s     $s   	r      )per_page)ri   rm   rh      )pager{   )ro   rl   re   )r   ServerProxyr   _fetch_package_metadatar'   r<   )
mocked_rpcclientextension_data	extensionproxyr)   rx   
first_pagepages_countsecond_pager*   s
            @r   0test_ExtensionManager_list_extensions_query_sortr      s     &K	
 (\	
 %I	

 2V	
 (KLK	
-N< P^!_P^9V#4g">P^!_`E $(U#; "$G O]N\&Iw<)<<nJ  '8#$+$;$;B$;$KKJ,67JyNNJ7 <    !%,%<%<RaRS%<%TTK,78KyNNK8 =   3 "` L7  U8sX   /D%D#D%%D8"D%D
D%%D:'D%!D"
D%,D D%D% D%c                 (  #    [        SSSSSSSSS	9n[        S
SSSSSSSSSS9
n[        [        SS/SS/SS/SS/SS/S
S/S
S//S9S9n[        US9U l        [        5       nS nXTl        UR                  S5      I S h  vN nXaU/S4:X  d   eg  N7f)Nri   4A JupyterLab extension for version control using gitrj   r   0.37.1Jupyter Development TeamBSD-3-Clause(https://pypi.org/project/jupyterlab-git/)r<   descriptionhomepage_urlpkg_typelatest_versionauthorlicensepackage_manager_urljupyterlab-github)JupyterLab viewer for GitHub repositoriesChttps://github.com/jupyterlab/jupyterlab-github/blob/main/README.md3.0.1Ian Rose6https://github.com/jupyterlab/jupyterlab-github/issues+https://pypi.org/project/jupyterlab-github//https://github.com/jupyterlab/jupyterlab-github)
r<   r   r   r   r   r   r   bug_tracker_urlr   repository_urlz0.33.0z0.34.0z0.34.1z0.37.0z3.0.0rq   rs   c                   #    U S:X  ao  0 SS_SS_SS _SS _SS_S	S
_SS _SS_SS_SS_S0 _SS_SS_SS_SS_SS_SS_0 SS_SS_S/ S Q_S!/ _S"/ S#Q_S$/ _S%/ _S&/ _S'/ _S(S)_S*/ _S+S,_S-S.S.S.S/._S0S _S1S _S2S _E$ 0 SS3_SS4_SS _SS _SS5_S	S6_SS _SS_SS_SS_SS7S8S9S:._SS;_SS<_SS_SS_SS=_SS_0 SS>_SS_S/ S?Q_S!/ _S"S@/_S$/ _S%/ _S&/ _S'/ _S(SA_S*/ _S+SB_S-S.S.S.S/._S0S _S1S _S2S _E$ 7f)CNri   r<   r   r   stable_versionbugtrack_urlpackage_urlr   release_urlz/https://pypi.org/project/jupyterlab-git/0.37.1/docs_urlrn   rj   download_urlr   rk   rg   r   r   author_email
maintainermaintainer_emailsummaryr   r   r   keywordsz7Jupyter,JupyterLab,JupyterLab3,jupyterlab-extension,GitplatformLinuxclassifiers)Framework :: Jupyter"Framework :: Jupyter :: JupyterLab'Framework :: Jupyter :: JupyterLab :: 30Framework :: Jupyter :: JupyterLab :: Extensions<Framework :: Jupyter :: JupyterLab :: Extensions :: PrebuiltzIntended Audience :: Developersz%Intended Audience :: Science/Research&License :: OSI Approved :: BSD LicenseProgramming Language :: Python#Programming Language :: Python :: 3z&Programming Language :: Python :: 3.10%Programming Language :: Python :: 3.6%Programming Language :: Python :: 3.7%Programming Language :: Python :: 3.8%Programming Language :: Python :: 3.9requiresrequires_dist)zjupyter-serverznbdime (~=3.1)nbformat	packagingpexpectzcoverage ; extra == 'dev'z#jupyterlab (~=3.0) ; extra == 'dev'zpre-commit ; extra == 'dev'zpytest ; extra == 'dev'zpytest-asyncio ; extra == 'dev'zpytest-cov ; extra == 'dev'z!pytest-tornasync ; extra == 'dev'zcoverage ; extra == 'tests'z%jupyterlab (~=3.0) ; extra == 'tests'zpre-commit ; extra == 'tests'zpytest ; extra == 'tests'z!pytest-asyncio ; extra == 'tests'zpytest-cov ; extra == 'tests'z#pytest-tornasync ; extra == 'tests'z!hybridcontents ; extra == 'tests'zjupytext ; extra == 'tests'providesprovides_dist	obsoletesobsoletes_distrequires_pythonz<4,>=3.6requires_external_pypi_ordering7   	downloads)last_day	last_week
last_monthcheesecake_code_kwalitee_idcheesecake_documentation_idcheesecake_installability_idr   r   r   z1https://pypi.org/project/jupyterlab-github/3.0.1/r   r   r   )rf   zBug Trackerrp   r   zjupyter@googlegroups.comr   zJupyter,JupyterLab,JupyterLab3)r   r   r   r   r   r   r   r   r   r   r   r   zjupyterlab (~=3.0)z>=3.6   r   )nrv   rw   s      r   rx   Jtest_PyPiExtensionManager_list_extensions_query.<locals>.mock_pkg_metadata  s    V $$SH(H8H !$H 	H
 IH PH DH KH H rH H 4H H bH #BH  Q!H" >#H$ U%H& G'H(   )HJ BKHL   "MHz B{H|  }H~ RH@ !"AHB ":CHD $REHF !"GHH "2RPIHJ .tKHL .tMHN /OH	
V3+373 !$3 	3
 L3 R3 D3 R3 3 r3  e#[#T!3  *!3"  :#3$ b%3& #B'3( F)3* >+3, <-3. G/30   13L BM3N  "6!7O3P BQ3R  S3T RU3V !"W3X "7Y3Z $R[3\ !"]3^ "2RP_3` .ta3b .tc3d /e3W	
s   C(C*gitr   )r
   r   r~   r   r   r'   )r   r   r-   r   r)   rx   r*   s          r   /test_PyPiExtensionManager_list_extensions_queryr      s     !JC)F	J " ?ZPIHJ !8,!8,!8,!8,!8,$g.$g.

E $(U#; "$G@
D '8#..u55Jz2A6666 6s   A=B?B Bc                  r   #    Sn [        [        SSU 005      S9n[        US9nUR                  U :X  d   eg 7f)Nz https://mylocal.pypi.server/pypir   base_urlconfigparent)r   r   r   r   )BASE_URLr   r)   s      r   +test_PyPiExtensionManager_custom_server_urlr     sB     1H)?*hAW(X!YZF"&1Gx'''s   57)user
sys_prefixsystemlevelc                 n   #    [        [        SSU 005      S9n[        US9nUR                  U :X  d   eg 7f)Nr   r   r   r   r   r   r   r   r   r   r)   s      r   &test_PyPiExtensionManager_custom_levelr     s;     )?'5AQ(R!STF"&1G==E!!!   35c                 n   #    [        [        SSU 005      S9n[        US9nUR                  U :X  d   eg 7fNr   r   r   r   r   r   s      r   /test_PyPiExtensionManager_inherits_custom_levelr     s:     7E:J(K!LMF"&1G==E!!!r   c                 n   #    [        [        SSU 005      S9n[        US9nUR                  U :X  d   eg 7fr   )r   r   r   r   r   s      r   test_PluginManager_custom_levelr     s:     7E:J(K!LMF6*G==E!!!r   c                  D   #    [        5       n U R                  S:X  d   eg 7f)Nr   )r   r   )r)   s    r    test_PluginManager_default_levelr     s     oG==L(((s    )#rD   unittest.mockr   r   pytesttraitlets.configr   r   jupyterlab.extensionsr   r   jupyterlab.extensions.managerr	   r
   r   r   r   markparametrizer   r+   r8   rJ   rS   rW   r_   rc   r   r   r   LEVELSr   r   r   r   r   r   r   <module>r      sv    %  1 P [ [ ! 
DD+7  +:MN+ O+( +:MN+ O+( +:MN+ O+8E@ 12@ 3@F 12o7 3o7d( 
* &)" *" &)" *" &)" *")r   