
    XhA                     8   d dl Z d dlmZmZ d dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZmZmZ ddlmZ ej"                  j%                  dd	      d
        Zd Zd Z ede      d        Z ede      d        Z ede      d        Zd Zd Z ed      d        Z ed      d        Zd Zg dZej"                  j%                  de      d        Zej"                  j%                  de      d        Z ej"                  j%                  de      d        Z!d Z"y)    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                 8    t        j                  |       |k(  sJ y N)r	   get_semver_version)versionexpecteds     T/var/www/html/myenv/lib/python3.12/site-packages/jupyterlab/tests/test_extensions.py(test_ExtensionManager_get_semver_versionr      s     ..w78CCC    c                    K   t        dddd      fd}| j                  t        d|       t               }|j                          d {   }|gdfk(  sJ y 7 w)N
extension1Extension 1 description prebuiltc                     K   diS w)Nr    )argskwargsr   s     r   mock_installedzGtest_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*   "   sf     !,0I2zZJ* 02M~^&(G..00J:,**** 1s   AAAAc                    K   t        dddd      t        dddd      fd}| j                  t        d|       t               }|j                  d	       d {   }|gd
fk(  sJ y 7 w)Nr   r   r   r   
extension2Extension 2 descriptionc                     K   dd fS wN)r   r,   r   r    r!   r   r,   s     r   	mock_listz>test_ExtensionManager_list_extensions_query.<locals>.mock_list5        (
CTII   list_packagesextr   r$   )r'   r1   r(   r)   r   r,   s       @@r   +test_ExtensionManager_list_extensions_queryr6   1   s|     !,0I2zZJ!,0I2zZJJ 0/9M&(G..u55J:z2A6666 6s   AA/A-A/z"tornado.httpclient.AsyncHTTPClient)new_callablec                 D  K   t        dddd      t        dddd      t        j                  dddigi      j                         | _        fd	}|j                  t        d
|       t        ddhi      }|j                  d       d {   }|gdfk(  sJ y 7 w)Nr   r   r   r   r,   r-   allowed_extensionsnamec                     K   dd fS wr/   r   r0   s     r   r1   zDtest_ExtensionManager_list_extensions_query_allow.<locals>.mock_listH   r2   r3   r4   allowed_extensions_urishttp://dummy-allowed-extensionext_optionsr5   r   r
   jsondumpsencodebodyr%   r   r&   mock_clientr'   r1   r(   r)   r   r,   s        @@r   1test_ExtensionManager_list_extensions_query_allowrG   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  K   t        dddd      t        dddd      t        j                  dddigi      j                         | _        fd	}|j                  t        d
|       t        ddhi      }|j                  d       d {   }|gdfk(  sJ y 7 w)Nr   r   r   r   r,   r-   blocked_extensionsr:   c                     K   dd fS wr/   r   r0   s     r   r1   zDtest_ExtensionManager_list_extensions_query_block.<locals>.mock_list]   r2   r3   r4   blocked_extensions_urishttp://dummy-blocked-extensionr>   r5   r   r@   rE   s        @@r   1test_ExtensionManager_list_extensions_query_blockrO   V   rH   rI   c                 P  K   t        dddd      t        dddd      t        j                  ddigddigd      j                         | _        fd	}|j                  t        d
|       t        dhdhd      }|j                  d       d {   }|gdfk(  sJ y 7 w)Nr   r   r   r   r,   r-   r:   )r9   rK   c                     K   dd fS wr/   r   r0   s     r   r1   zJtest_ExtensionManager_list_extensions_query_allow_block.<locals>.mock_listw   r2   r3   r4   r=   rN   )r<   rM   r>   r5   r   r@   rE   s        @@r   7test_ExtensionManager_list_extensions_query_allow_blockrR   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                     K   t               } | j                  d       d {   }|j                  dk(  sJ |j                  dk(  sJ y 7 'w)Nr   errorz%Extension installation not supported.)r   installstatusmessager(   results     r   test_ExtensionManager_installrZ      sI     &(G??<00F==G###>>DDDD 1   AA	(Ac                     K   t               } | j                  d       d {   }|j                  dk(  sJ |j                  dk(  sJ y 7 'w)Nr   rT   z Extension removal not supported.)r   	uninstallrV   rW   rX   s     r   test_ExtensionManager_uninstallr^      sK     &(G$$\22F==G###>>???? 3r[   z(jupyterlab.extensions.pypi.xmlrpc.clientc           	      Z  	K   dddiddddidddd	d
dd	ddddddidg}t        t        |D cg c]	  }|d   dg c}            }t        |      | _        t               }|D ci c]  }|d   ddi| c}		fd}||_        |j	                  dd       d {   \  }}|D cg c]  }|j
                   c}g dk(  sJ |dk(  sJ |j	                  ddd       d {   \  }}|D cg c]  }|j
                   c}g dk(  sJ y c c}w c c}w 7 zc c}w 7 :c c}w w)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                    K   |    S wr   r   )r:   lbr)   s      r   mock_pkg_metadatazKtest_ExtensionManager_list_extensions_query_sort.<locals>.mock_pkg_metadata   s     $s   	r      )per_page)rd   rh   rc      )pageru   )rj   rg   r`   )r   ServerProxyr   _fetch_package_metadatar&   r:   )
mocked_rpcclientextension_data	extensionproxyr(   rs   
first_pagepages_countsecond_pager)   s
            @r   0test_ExtensionManager_list_extensions_query_sortr      s     &K	
 (\	
 %I	

 2V	
 (KLK	
-N< P^!_99V#4g">!_`E $(U#; "$G O]AJ	&Iw<)<<J  '8G#$+$;$;B$;$KKJ,67yINN7 <    !%,%<%<RaRS%<%TTK,78yINN8 =   3 "` L7  U8sX   /D+D ,D+,D=%D+"D#D+.D(D+)D$*D+5D&D+D+&D+c                 H  K   t        dddddddd	      }t        d
ddddddddd
      }t        t        ddgddgddgddgddgd
dgd
dgg            }t        |      | _        t               }d }||_        |j                  d       d {   }|||gdfk(  sJ y 7 w)Nrd   4A JupyterLab extension for version control using gitre   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.0rl   rn   c                   K   | dk(  roi dddddd dd ddd	d
dd dddddddi ddddddddddddi dddddg d d!g d"g d#d$g d%g d&g d'g d(d)d*g d+d,d-d.d.d.d/d0d d1d d2d S i dd3dd4dd dd dd5d	d6dd dddddddd7d8d9d:dd;dd<dddddd=ddi dd>dddg d?d!g d"d@gd$g d%g d&g d'g d(dAd*g d+dBd-d.d.d.d/d0d d1d d2d S w)CNrd   r:   r   r   stable_versionbugtrack_urlpackage_urlr   release_urlz/https://pypi.org/project/jupyterlab-git/0.37.1/docs_urlri   re   download_urlr   rf   rb   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   )ra   zBug Trackerrk   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   )nrq   rr   s      r   rs   zJtest_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   rx   r   ry   r&   )rz   r   r,   r}   r(   rs   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 '8G#..u55J:z2A6666 6s   BB"B B"c                  |   K   d} t        t        dd| ii            }t        |      }|j                  | k(  sJ y w)Nz https://mylocal.pypi.server/pypir   base_urlconfigparent)r   r   r   r   )BASE_URLr   r(   s      r   +test_PyPiExtensionManager_custom_server_urlr     sC     1H)?*hAW(X!YZF"&1Gx'''s   :<)user
sys_prefixsystemlevelc                 x   K   t        t        dd| ii            }t        |      }|j                  | k(  sJ y w)Nr   r   r   r   r   r   r   r   r   r   r(   s      r   &test_PyPiExtensionManager_custom_levelr     s<     )?'5AQ(R!STF"&1G==E!!!   8:c                 x   K   t        t        dd| ii            }t        |      }|j                  | k(  sJ y wNr   r   r   r   r   r   s      r   /test_PyPiExtensionManager_inherits_custom_levelr     s;     7E:J(K!LMF"&1G==E!!!r   c                 x   K   t        t        dd| ii            }t        |      }|j                  | k(  sJ y wr   )r   r   r   r   r   s      r   test_PluginManager_custom_levelr     s;     7E:J(K!LMF6*G==E!!!r   c                  B   K   t               } | j                  dk(  sJ y w)Nr   )r   r   )r(   s    r    test_PluginManager_default_levelr     s     oG==L(((s   )#rA   unittest.mockr   r   pytesttraitlets.configr   r   jupyterlab.extensionsr   r   jupyterlab.extensions.managerr	   r
   r   r   r   markparametrizer   r*   r6   rG   rO   rR   rZ   r^   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   