o
    ^iA                     @   sP  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
d Zdd Zdd Zededdd Zededdd Zededdd Zdd Zdd Zeddd Zeddd  Zd!d" Zg d#Zejd$ed%d& Zejd$ed'd( Z ejd$ed)d* Z!d+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                 C   s   t | |ks	J d S N)r   get_semver_version)versionexpected r   [/home/ubuntu/hpml_nyu/venv/lib/python3.10/site-packages/jupyterlab/tests/test_extensions.py(test_ExtensionManager_get_semver_version   s   r   c                    sT   t dddd  fdd}| td| t }| I d H }| gdfks(J d S )	N
extension1Extension 1 description prebuiltc                     s
   d iS )Nr   r   argskwargsr   r   r   mock_installed%      zGtest_ExtensionManager_list_extensions_installed.<locals>.mock_installed_get_installed_extensionsr   r	   setattrr   list_extensions)monkeypatchr   manager
extensionsr   r   r   /test_ExtensionManager_list_extensions_installed"   s   r(   c                    sh   t dddd t dddd fdd}| td	| t }|d
I d H }| gdfks2J d S )Nr   r   r   r   
extension2Extension 2 descriptionc                         dd fS Nr   r)   r   r   r-   r   r   	mock_list5      z>test_ExtensionManager_list_extensions_query.<locals>.mock_listlist_packagesextr   r"   )r%   r.   r&   r'   r   r-   r   +test_ExtensionManager_list_extensions_query1   s   r2   z"tornado.httpclient.AsyncHTTPClient)new_callablec                    s   t dddd t ddddtdddigi | _ fd	d
}|td| tddhid}|dI d H }| gdfksCJ d S )Nr   r   r   r   r)   r*   allowed_extensionsnamec                     r+   r,   r   r   r-   r   r   r.   H   r/   zDtest_ExtensionManager_list_extensions_query_allow.<locals>.mock_listr0   allowed_extensions_urishttp://dummy-allowed-extensionext_optionsr1   r   r	   jsondumpsencodebodyr#   r   r$   mock_clientr%   r.   r&   r'   r   r-   r   1test_ExtensionManager_list_extensions_query_allowA      rA   c                    s   t dddd t ddddtdddigi | _ fd	d
}|td| tddhid}|dI d H }|gdfksCJ d S )Nr   r   r   r   r)   r*   blocked_extensionsr5   c                     r+   r,   r   r   r-   r   r   r.   ]   r/   zDtest_ExtensionManager_list_extensions_query_block.<locals>.mock_listr0   blocked_extensions_urishttp://dummy-blocked-extensionr8   r1   r   r:   r?   r   r-   r   1test_ExtensionManager_list_extensions_query_blockV   rB   rF   c                    s   t dddd t ddddtddigddigd | _ fd	d
}|td| tdhdhdd}|dI d H }| gdfksIJ d S )Nr   r   r   r   r)   r*   r5   )r4   rC   c                     r+   r,   r   r   r-   r   r   r.   w   r/   zJtest_ExtensionManager_list_extensions_query_allow_block.<locals>.mock_listr0   r7   rE   )r6   rD   r8   r1   r   r:   r?   r   r-   r   7test_ExtensionManager_list_extensions_query_allow_blockk   s&   rG   c                     8   t  } | dI d H }|jdksJ |jdksJ d S )Nr   errorz%Extension installation not supported.)r   installstatusmessager&   resultr   r   r   test_ExtensionManager_install   
   rO   c                     rH   )Nr   rI   z Extension removal not supported.)r   	uninstallrK   rL   rM   r   r   r   test_ExtensionManager_uninstall   rP   rR   z(jupyterlab.extensions.pypi.xmlrpc.clientc                    s  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 |D dd}t |d| _t }dd |D   fdd}||_|jdddI d H \}}dd |D g dks`J |dksfJ |jdddd I d H \}}d!d |D g d"ksJ d S )#Njupyterlab-apodHomepagez-https://github.com/jupyterlab/jupyterlab_apod)r5   project_urlsjupyterlab-gitlabz>https://github.com/jupyterlab-contrib/jupyterlab-gitlab/issuesjupyterlab-git,https://github.com/jupyterlab/jupyterlab-git)r5   project_urljupyterlab-rainbow-bracketsz9https://github.com/krassowski/jupyterlab-rainbow-bracketsnbdimez!https://github.com/jupyter/nbdime)r5   	home_pageriseSource Codez*https://github.com/jupyterlab-contrib/risec                 S   s   g | ]}|d  dgqS )r5   r   r   .0	extensionr   r   r   
<listcomp>   s    zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<listcomp>return_valuebrowsec                 S   s   i | ]}|d  ddi|qS )r5   r   r   r   r_   r   r   r   
<dictcomp>   s    zDtest_ExtensionManager_list_extensions_query_sort.<locals>.<dictcomp>c                    s
    |  S r   r   )r5   lbr'   r   r   mock_pkg_metadata   r    zKtest_ExtensionManager_list_extensions_query_sort.<locals>.mock_pkg_metadatar      )per_pagec                 S      g | ]}|j qS r   r5   r_   r   r   r   rb          )rW   r[   rV      )pagerm   c                 S   rn   r   ro   r_   r   r   r   rb      rp   )r]   rZ   rS   )r   ServerProxyr   _fetch_package_metadatar$   )mocked_rpcclientextension_dataproxyr&   rk   
first_pagepages_countsecond_pager   rj   r   0test_ExtensionManager_list_extensions_query_sort   sH   r{   c                    s   t ddddddddd	}t d
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dd}t|d| _t }dd }||_|dI d H }|||gdfksZJ d S )NrW   4A JupyterLab extension for version control using gitrX   r   0.37.1Jupyter Development TeamBSD-3-Clause(https://pypi.org/project/jupyterlab-git/)r5   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)
r5   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.0rc   re   c                    s  | dkrti 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 )CNrW   r5   r   r}   stable_versionbugtrack_urlpackage_urlr   release_urlz/https://pypi.org/project/jupyterlab-git/0.37.1/docs_urlr\   rX   download_urlr   rY   rU   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   )rT   zBug Trackerr^   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   )nrh   ri   r   r   r   rk     s  K	
%&=>?@ABCDEFGK	
&'()*+,-./012zJtest_PyPiExtensionManager_list_extensions_query.<locals>.mock_pkg_metadatagitr   )r	   r   rs   r   rt   r$   )ru   r   r)   rw   r&   rk   r'   r   r   r   /test_PyPiExtensionManager_list_extensions_query   sT   
 r   c                     s8   d} t tdd| iid}t|d}|j| ksJ d S )Nz https://mylocal.pypi.server/pypir   base_urlconfigparent)r   r   r   r   )BASE_URLr   r&   r   r   r   +test_PyPiExtensionManager_custom_server_url  s
   
r   )user
sys_prefixsystemlevelc                    4   t tdd| iid}t|d}|j| ksJ d S )Nr   r   r   r   r   r   r   r   r   r   r&   r   r   r   &test_PyPiExtensionManager_custom_level     
r   c                    r   Nr
   r   r   r   r   r   r   r   r   /test_PyPiExtensionManager_inherits_custom_level  r   r   c                    r   r   )r   r   r
   r   r   r   r   r   test_PluginManager_custom_level  r   r   c                     s   t  } | jdksJ d S )Nr   )r
   r   )r&   r   r   r    test_PluginManager_default_level  s   r   )#r;   unittest.mockr   r   pytesttraitlets.configr   r   jupyterlab.extensionsr   r   jupyterlab.extensions.managerr   r	   r
   r   r   markparametrizer   r(   r2   rA   rF   rG   rO   rR   r{   r   r   LEVELSr   r   r   r   r   r   r   r   <module>   sH   






		
C
 3



