o
    QDi@)                     @   s  d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
mZmZmZ dZdd Zd	d
 ZG dd deZdd Zdd Zdd Zdd Zdd Zdd Zdd Zejjejje jdk dddd Zejjd d! Zejjd"d# Zejjd$d% Z d&d' Z!ej"d(d)d*gd+d, Z#d-d. Z$d/d0 Z%d1d2 Z&d3d4 Z'd5d6 Z(ejj)d7d8 Z*ej"d9d:d;gd<d= Z+d>d? Z,d@dA Z-ejj)dBdC Z.ejjejje jdk dddDdE Z/ejjejje jdk dddFdG Z0dS )H    N)Mapping)import_module)Path)FrictionlessExceptionPackageResourcesystemzLhttps://raw.githubusercontent.com/frictionlessdata/frictionless-py/master/%sc               	   C   N   t d} | jdksJ | jdksJ |  dddddddd	gd
ks%J d S Ndata/package.jsonnamedatatable	table.csvfilecsvtext/csvr   typepathschemeformat	mediatyper   	resourcesr   r   basepathto_descriptorpackage r    c/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/package/__spec__/test_general.pytest_package      r"   c                  C   sr   t ddg d} |  ddg dksJ tjdd |  ddg dks'J W d    d S 1 s2w   Y  d S )Nr   zdata-package)r   profiler   v1)	standards)r   r   r   use_contextr   r    r    r!   &test_package_from_dict_to_standards_v1$   s   "r(   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
NotADictc                 K   s   | j jdi | d S )Nr    )__dict__update)selfkwargsr    r    r!   __init__4   s   zNotADict.__init__c                 C   s
   | j | S N)r*   )r,   keyr    r    r!   __getitem__7      
zNotADict.__getitem__c                 C   
   t | jS r/   )iterr*   r,   r    r    r!   __iter__:   r2   zNotADict.__iter__c                 C   r3   r/   )lenr*   r5   r    r    r!   __len__=   r2   zNotADict.__len__N)__name__
__module____qualname__r.   r1   r6   r8   r    r    r    r!   r)   3   s
    r)   c                  C   s*   t tdg d} |  dg dksJ d S )Nr   r   )r   r)   r   r   r    r    r!   test_package_from_mappingA   s
   r<   c               	   C   r	   r
   r   r   r    r    r!   test_package_from_pathI   r#   r=   c                  C   s*   t td} t| d dksJ d S )Nzdata/package/datapackage.jsonr      )r   r   r7   get_table_resource	read_rowsr   r    r    r!   test_package_from_pathlib\   s   rA   c                  C   ^   t t} td W d    n1 sw   Y  | jj}|jdks%J |j	ds-J d S Nzdata/bad.jsonpackage-errorzbad.json
pytestraisesr   r   from_descriptorvalueerrorr   notecountexcinforJ   r    r    r!   %test_package_from_path_error_bad_patha      rO   c                  C   rB   )Ndata/table.csvrD   r   rE   rM   r    r    r!   %test_package_from_path_error_non_jsoni   rP   rR   c                  C   rB   Nzdata/invalid.jsonrD   zinvalid.jsonrE   rM   r    r    r!   %test_package_from_path_error_bad_jsonq   rP   rT   c                  C   rB   )Nzdata/table.jsonrD   z
table.jsonrE   rM   r    r    r!   .test_package_from_path_error_bad_json_not_dicty   rP   rU   )   
   zpytest-vcr bug in Python3.8/9)reasonc               	   C   sJ   t td } | jtd ksJ |  dddddddd	gd
ks#J d S )Nr   r   r   r   r   r   r   r   r   r   )r   rH   BASEURLr   r   r   r    r    r!   test_package_from_path_remote   s   rZ   c                  C   b   t t} ttd  W d    n1 sw   Y  | jj}|jdks'J |j	
ds/J d S rC   rF   rG   r   r   rH   rY   rI   rJ   r   rK   rL   rM   r    r    r!   -test_package_from_path_remote_error_not_found      r]   c                  C   r[   rS   r\   rM   r    r    r!   ,test_package_from_path_remote_error_bad_json   r^   r_   c                  C   r[   )Nzdata/table-lists.jsonrD   ztable-lists.jsonr\   rM   r    r    r!   5test_package_from_path_remote_error_bad_json_not_dict   r^   r`   c                  C   rB   )N3   rD   51rE   rM   r    r    r!   )test_package_from_invalid_descriptor_type   rP   rc   create_descriptor)F)Tc                 C   s  t d}tdg g g ddddg dgdd	g d
}| stdi |n	t|jdi |}|jdks0J |jd u s7J |jg ks>J |jg ksEJ |jdksLJ |j	dksSJ |j
dksZJ |jdksaJ |jg kshJ |jdgkspJ |jdkswJ |jd	ks~J |jg ksJ d S )Nzfrictionless.helpersr   titledescriptionhomepageversionkeywordimagez2022-08-08T12:00:00Z)r   profileslicensessourcesre   rf   rg   rh   contributorskeywordsrj   createdr   r    )r   dictr   rd   r   r$   rl   rm   re   rf   rg   rh   rn   ro   rj   rp   r   )rd   helpersoptionsr   r    r    r!   &test_package_standard_specs_properties   sB   rt   c                  C   *   t dd} | jdksJ | jdksJ d S )Nz**test**rf   z<p><strong>test</strong></p>r   rf   description_htmlr   r    r    r!   test_package_description_html      
ry   c                  C   ru   )N**test**

linerv   z'<p><strong>test</strong></p><p>line</p>rw   r   r    r    r!   'test_package_description_html_multiline   rz   r|   c                  C   ru   )Nr{   rv   z	test liner   rf   description_textr   r    r    r!   test_package_description_text   rz   r   c                  C   s*   t dd} | jdksJ | jdksJ d S )Nz(It's just a plain text. Another sentencerv   r}   r   r    r    r!   #test_package_description_text_plain   rz   r   c                  C   s0   t dd} | jdksJ d| _| jdksJ d S )Nz/data)r   z	/data/csv)r   r   r   r    r    r!   test_package_set_base_path   s   
r   c                  C   sL   ddgddgddgg} t dd| dgi}d	}t|t| ks$J d S )
Nidr   1english2u	   中国人r   r   r   u   
    {'resources': [{'name': 'name',
                    'data': [['id', 'name'], ['1', 'english'], ['2', '中国人']]}]}
    )r   reprtextwrapdedentstrip)r   r   expectedr    r    r!   test_package_pprint   s   r   allow_invalidFTc                 C   sV   zt jddg ddg dgi| d | du sJ W d S  ty*   | du s'J Y d S w )Nr   r   r   r   TF)r   rH   r   r   r    r    r!   test_package_allow_invalid  s   	r   c                  C   sF   t d} | d}| }|d d dksJ |d d dks!J d S )Nz#data/package-dialect-no-header.jsonpeopler   score   )r   r?   r@   )r   resourcerowsr    r    r!   (test_package_dialect_no_header_issue_167  s
   
r   c                  C   s   t t} td W d    n1 sw   Y  | jj}| jj}t|dks)J |jdks0J |j	dks7J |d j	dks@J |d j	dksIJ d S )	Nzdata/issue-869.jsonr>   rD   zdescriptor is not validr   z*property "created" is not valid "datetime"r   z4property "contributors[].email" is not valid "email")
rF   rG   r   r   rI   rJ   reasonsr7   r   rK   )rN   rJ   r   r    r    r!   7test_package_validation_does_not_catch_errors_issue_869$  s   
r   c                  C   sp   t t} ttdddtdddgd W d    n1 sw   Y  | jj}|jdks/J |jdks6J d S )Nr   rQ   )r   r   )r   rD   zresource "name" already exists)	rF   rG   r   r   r   rI   rJ   r   rK   rM   r    r    r!   :test_package_validation_duplicate_resource_names_issue_9420  s   

r   c                  C   s,   t d} | d }t|dksJ d S )Nz`https://raw.githubusercontent.com/fdtester/test-write-package-with-dialect/main/datapackage.json	countriesr>   )r   rH   r?   r@   r7   )r   r   r    r    r!   >test_package_remote_scheme_regression_for_resources_issue_1388>  s
   r   c                  C   s8   d} t | }|jdksJ t|d dksJ d S )Nzmhttps://raw.githubusercontent.com/transparencia-mg/datapackage-reprex/foreign-key-constraint/datapackage.jsonzdatapackage-reprexestados   )r   r   r7   r?   r@   )urlr   r    r    r!    test_package_remote_windows_1505H  s   r   )1sysr   collections.abcr   	importlibr   pathlibr   rF   frictionlessr   r   r   r   rY   r"   r(   r)   r<   r=   rA   rO   rR   rT   rU   markvcrskipifversion_inforZ   r]   r_   r`   rc   parametrizert   ry   r|   r   r   r   skipr   r   r   r   r   r   r   r    r    r    r!   <module>   sb    



%



