
    MhA                        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                            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                            de          d             Zej                            de          d             Z ej                            de          d             Z!d Z"dS )    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                 :    t          j        |           |k    sJ d S N)r	   get_semver_version)versionexpecteds     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyterlab/tests/test_extensions.py(test_ExtensionManager_get_semver_versionr      s&     .w778CCCCCC    c                    K   t          dddd          fd}|                     t          d|           t                      }|                                 d {V }|gdfk    sJ d S )N
extension1Extension 1 description prebuiltc                     K   diS )Nr    )argskwargsr   s     r   mock_installedzGtest_ExtensionManager_list_extensions_installed.<locals>.mock_installed%   s      j))r   _get_installed_extensionsr   r
   setattrr   list_extensions)monkeypatchr"   manager
extensionsr   s       @r   /test_ExtensionManager_list_extensions_installedr*   "   s      !,0I2zZZJ* * * * * 02M~^^^&((G..00000000J:,*******r   c                   K   t          dddd          t          dddd          fd}|                     t          d|           t                      }|                    d	           d {V }|gd
fk    sJ d S )Nr   r   r   r   
extension2Extension 2 descriptionc                     K   dd fS N)r   r,   r   r    r!   r   r,   s     r   	mock_listz>test_ExtensionManager_list_extensions_query.<locals>.mock_list5         (
CCTIIr   list_packagesextr   r$   )r'   r1   r(   r)   r   r,   s       @@r   +test_ExtensionManager_list_extensions_queryr5   1   s      !,0I2zZZJ!,0I2zZZJJ J J J J J 0/9MMM&((G..u55555555J:z2A6666666r   z"tornado.httpclient.AsyncHTTPClient)new_callablec                 l  K   t          dddd          t          dddd          t          j        dddigi                                          | _        fd	}|                    t          d
|           t          ddhi          }|                    d           d {V }|gdfk    sJ d S )Nr   r   r   r   r,   r-   allowed_extensionsnamec                     K   dd fS r/   r   r0   s     r   r1   zDtest_ExtensionManager_list_extensions_query_allow.<locals>.mock_listH   r2   r   r3   allowed_extensions_urishttp://dummy-allowed-extensionext_optionsr4   r   r
   jsondumpsencodebodyr%   r   r&   mock_clientr'   r1   r(   r)   r   r,   s        @@r   1test_ExtensionManager_list_extensions_query_allowrF   A         !,0I2zZZJ!,0I2zZZJz#76<:P9Q"RSSZZ\\KJ J J J J J 0/9MMM&.1Q0RS  G ..u55555555J:,*******r   c                 l  K   t          dddd          t          dddd          t          j        dddigi                                          | _        fd	}|                    t          d
|           t          ddhi          }|                    d           d {V }|gdfk    sJ d S )Nr   r   r   r   r,   r-   blocked_extensionsr9   c                     K   dd fS r/   r   r0   s     r   r1   zDtest_ExtensionManager_list_extensions_query_block.<locals>.mock_list]   r2   r   r3   blocked_extensions_urishttp://dummy-blocked-extensionr=   r4   r   r?   rD   s        @@r   1test_ExtensionManager_list_extensions_query_blockrM   V   rG   r   c                 x  K   t          dddd          t          dddd          t          j        ddigddigd                                          | _        fd	}|                    t          d
|           t          dhdhd          }|                    d           d {V }|gdfk    sJ d S )Nr   r   r   r   r,   r-   r9   )r8   rI   c                     K   dd fS r/   r   r0   s     r   r1   zJtest_ExtensionManager_list_extensions_query_allow_block.<locals>.mock_listw   r2   r   r3   r<   rL   )r;   rK   r=   r4   r   r?   rD   s        @@r   7test_ExtensionManager_list_extensions_query_allow_blockrP   k   s      !,0I2zZZJ!,0I2zZZJz$*L#9":$*L#9":	
 	
 
 fhh J J J J J J 0/9MMM&(H'I(H'I
 
  G ..u55555555J:,*******r   c                     K   t                      } |                     d           d {V }|j        dk    sJ |j        dk    sJ d S )Nr   errorz%Extension installation not supported.)r   installstatusmessager(   results     r   test_ExtensionManager_installrX      sa      &((G??<00000000F=G####>DDDDDDDr   c                     K   t                      } |                     d           d {V }|j        dk    sJ |j        dk    sJ d S )Nr   rR   z Extension removal not supported.)r   	uninstallrT   rU   rV   s     r   test_ExtensionManager_uninstallr[      sc      &((G$$\22222222F=G####>???????r   z(jupyterlab.extensions.pypi.xmlrpc.clientc                   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 |D                                 }t          |          | _        t                      }d |D             fd}||_        |                    dd           d {V \  }}d |D             g dk    sJ |dk    sJ |                    ddd           d {V \  }}d |D             g dk    sJ d S ) Njupyterlab-apodHomepagez-https://github.com/jupyterlab/jupyterlab_apod)r9   project_urlsjupyterlab-gitlabz>https://github.com/jupyterlab-contrib/jupyterlab-gitlab/issuesjupyterlab-git,https://github.com/jupyterlab/jupyterlab-git)r9   project_urljupyterlab-rainbow-bracketsz9https://github.com/krassowski/jupyterlab-rainbow-bracketsnbdimez!https://github.com/jupyter/nbdime)r9   	home_pageriseSource Codez*https://github.com/jupyterlab-contrib/risec                 "    g | ]}|d          dgS )r9   r   r   .0	extensions     r   
<listcomp>zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<listcomp>   s"    !_!_!_99V#4g">!_!_!_r   return_valuebrowsec                 (    i | ]}|d          ddi|S )r9   r   r   r   rj   s     r   
<dictcomp>zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<dictcomp>   s6       AJ	&Iw<)<  r   c                    K   |          S r   r   )r9   lbr)   s      r   mock_pkg_metadatazKtest_ExtensionManager_list_extensions_query_sort.<locals>.mock_pkg_metadata   s      $r   r      )per_pagec                     g | ]	}|j         
S r   r9   rj   s     r   rm   zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<listcomp>   s    777yIN777r   )ra   re   r`      )pagery   c                     g | ]	}|j         
S r   r{   rj   s     r   rm   zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<listcomp>   s    888yIN888r   )rg   rd   r]   )r   ServerProxyr   _fetch_package_metadatar&   )	mocked_rpcclientextension_dataproxyr(   rw   
first_pagepages_countsecond_pager)   s	           @r   0test_ExtensionManager_list_extensions_query_sortr      s      &K	
 	
 (\	
 	
 %I	
 	

 2V	
 	
 (KLLK	
 	
-N< !_!_P^!_!_!_```  E $(U#;#;#; "$$G N\  J          '8G#$+$;$;B$;$K$KKKKKKKJ77J777 < < <     !%,%<%<RaRS%<%T%TTTTTTTK88K888 = = =      r   c                 x  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 }||_        |                    d           d {V }|||gdfk    sJ d S )Nra   4A JupyterLab extension for version control using gitrb   r   0.37.1Jupyter Development TeamBSD-3-Clause(https://pypi.org/project/jupyterlab-git/)r9   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)
r9   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.0rn   rp   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 nqi 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 )CNra   r9   r   r   stable_versionbugtrack_urlpackage_urlr   release_urlz/https://pypi.org/project/jupyterlab-git/0.37.1/docs_urlrf   rb   download_urlr   rc   r_   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   )r^   zBug Trackerrh   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   )nru   rv   s      r   rw   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 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PPIHJ .tKHL .tMHN /OH H HT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, <-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P_3` .ta3b .tc3d /e3 3W	
r   gitr   )r
   r   r   r   r   r&   )r   r   r,   r   r(   rw   r)   s          r   /test_PyPiExtensionManager_list_extensions_queryr      sO     !JC)F	 	 	J " ?ZPIH  J !8,!8,!8,!8,!8,$g.$g.

 

 

  E $(U#;#;#; "$$G@
 @
 @
D '8G#..u55555555J:z2A6666666r   c                     K   d} t          t          dd| ii                    }t          |          }|j        | k    sJ d S )Nz https://mylocal.pypi.server/pypir   base_urlconfigparent)r   r   r   r   )BASE_URLr   r(   s      r   +test_PyPiExtensionManager_custom_server_urlr     sX      1H)?*hAW(X!Y!YZZZF"&111Gx''''''r   )user
sys_prefixsystemlevelc                    K   t          t          dd| ii                    }t          |          }|j        | k    sJ d S )Nr   r   r   r   r   r   r   r   r   r   r(   s      r   &test_PyPiExtensionManager_custom_levelr     sR      )?'5AQ(R!S!STTTF"&111G=E!!!!!!r   c                    K   t          t          dd| ii                    }t          |          }|j        | k    sJ d S Nr   r   r   r   r   r   s      r   /test_PyPiExtensionManager_inherits_custom_levelr     sQ      7E:J(K!L!LMMMF"&111G=E!!!!!!r   c                    K   t          t          dd| ii                    }t          |          }|j        | k    sJ d S r   )r   r   r   r   r   s      r   test_PluginManager_custom_levelr     sQ      7E:J(K!L!LMMMF6***G=E!!!!!!r   c                  @   K   t                      } | j        dk    sJ d S )Nr   )r   r   )r(   s    r    test_PluginManager_default_levelr     s(      ooG=L((((((r   )#r@   unittest.mockr   r   pytesttraitlets.configr   r   jupyterlab.extensionsr   r   jupyterlab.extensions.managerr	   r
   r   r   r   markparametrizer   r*   r5   rF   rM   rP   rX   r[   r   r   r   LEVELSr   r   r   r   r   r   r   <module>r      s    % % % % % % % %  1 1 1 1 1 1 1 1 P P P P P P P P [ [ [ [ [ [ [ [ [ [ ! ! ! ! ! ! 
 D D D+ + +7 7 7  +:MNNN+ + ON+( +:MNNN+ + ON+( +:MNNN+ + ON+8E E E@ @ @ 122@ @ 32@F 122o7 o7 32o7d( ( ( 
*	)	) &))" " *)" &))" " *)" &))" " *)") ) ) ) )r   