
    @e.6                     t   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 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d ZdS )    N)Mockpatch)ConfigConfigurable)PyPIExtensionManagerReadOnlyExtensionManager)ExtensionManagerExtensionPackage   )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     @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%   r/   r&   r'   r   r*   s       @@r   +test_ExtensionManager_list_extensions_queryr3   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   r.   s     r   r/   zDtest_ExtensionManager_list_extensions_query_allow.<locals>.mock_listH   r0   r   r1   allowed_extensions_urishttp://dummy-allowed-extensionext_optionsr2   r   r
   jsondumpsencodebodyr#   r   r$   mock_clientr%   r/   r&   r'   r   r*   s        @@r   1test_ExtensionManager_list_extensions_query_allowrD   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_extensionsr7   c                     K   dd fS r-   r   r.   s     r   r/   zDtest_ExtensionManager_list_extensions_query_block.<locals>.mock_list]   r0   r   r1   blocked_extensions_urishttp://dummy-blocked-extensionr;   r2   r   r=   rB   s        @@r   1test_ExtensionManager_list_extensions_query_blockrK   V   rE   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+   r7   )r6   rG   c                     K   dd fS r-   r   r.   s     r   r/   zJtest_ExtensionManager_list_extensions_query_allow_block.<locals>.mock_listw   r0   r   r1   r:   rJ   )r9   rI   r;   r2   r   r=   rB   s        @@r   7test_ExtensionManager_list_extensions_query_allow_blockrN   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_installrV      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   rP   z Extension removal not supported.)r   	uninstallrR   rS   rT   s     r   test_ExtensionManager_uninstallrY      sc      &((G$$\22222222F=G####>???????r   z(jupyterlab.extensions.pypi.xmlrpc.clientc                 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 )Njupyterlab-git4A JupyterLab extension for version control using git,https://github.com/jupyterlab/jupyterlab-gitr   0.37.1Jupyter Development TeamBSD-3-Clause(https://pypi.org/project/jupyterlab-git/)r7   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)
r7   rb   rc   rd   re   rf   rg   bug_tracker_urlrh   repository_urlz0.33.0z0.34.0z0.34.1z0.37.0z3.0.0)return_value)browsec                   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 )CNr[   r7   r   r^   stable_versionbugtrack_urlpackage_urlra   release_urlz/https://pypi.org/project/jupyterlab-git/0.37.1/docs_url	home_pager]   download_urlr   project_urlproject_urlsrf   r_   author_email
maintainermaintainer_emailsummaryr\   rg   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,jupyter-packaging (~=0.7.9) ; 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.jupyter-packaging (~=0.7.9) ; 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_idri   rl   ro   z1https://pypi.org/project/jupyterlab-github/3.0.1/rk   rn   rp   )HomepagezBug TrackerzSource Coderm   zjupyter@googlegroups.comrj   zJupyter,JupyterLab,JupyterLab3)r   r   r   r   r   r   r   r   r   r   r   r   zjupyterlab (~=3.0)z>=3.6   r   )nlbs      r   mock_pkg_metadatazJtest_PyPiExtensionManager_list_extensions_query.<locals>.mock_pkg_metadata   s     Z $$$WJ(J8J !$J 	J
 IJ PJ DJ KJ J rJ J 4J J bJ #BJ  Q!J" >#J J$ U%J& G'J(       )JJ BKJL   " " "MJ~ BJ@  AJB RCJD !"EJF ":GJH $RIJJ !"KJL "2RPPMJN .tOJP .tQJR /SJ J JX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[A	
r   gitr   )r
   r   ServerProxyr   _fetch_package_metadatar$   )mocked_rpcclientr   r*   proxyr&   r   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B
 B
 B
H '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   O  sX      1H)?*hAW(X!Y!YZZZF"&111Gx''''''r   )r>   unittest.mockr   r   pytesttraitlets.configr   r   jupyterlab.extensionsr   r   jupyterlab.extensions.managerr	   r
   r   r   markparametrizer   r(   r3   rD   rK   rN   rV   rY   r   r   r   r   r   <module>r      s    % % % % % % % %  1 1 1 1 1 1 1 1 P P P P P P P P L L L L L L L L ! ! ! ! ! ! 
 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q7 q7 32q7h( ( ( ( (r   