U
    9%eWN                     @   s  d dl Z d dlmZ d dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZM d dlNmOZOmPZP d dlQmRZRmSZS d dlTmUZU d dlVmWZW eOd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^d d! Z_d"d# Z`d$d% Zad&d' Zbd(d) Zcd*d+ Zdd,d- Zed.d/ Zfd0d1 Zgd2d3 Zhd4d5 Zid6d7 Zjd8d9 Zkd:d; Zld<d= Zmd>d? Znd@dA ZodBdC ZpdDdE ZqdFdG ZrdHdI ZsdJdK ZtdLdM ZudNdO ZvdPdQ ZwdRdS ZxdTdU ZydS )V    N)Add)Functiondiff)NumberRational)S)Symbolsymbols)Abs)explog)sqrt)sin)	integrate)amount_of_substancearea
convert_to	find_unitvolume	kilometerjoulemolar_gas_constantvacuum_permittivityelementary_chargevoltohm)amuau
centimetercoulombdayfootgramshourinchkgkmmmeter
millimeterminutequartssecondspeed_of_lightbitbytekibibytemebibytegibibytetebibytepebibyteexbibytekilogramgravitational_constantelectron_rest_mass)	Dimensionchargelengthtimetemperaturepressureenergymass)PREFIXESkilo)PhysicalConstantQuantity)SI)raiseskc                   C   s   t tdkstd S )Nr7   )strr%   AssertionError rK   rK   h/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/physics/units/tests/test_quantities.pytest_str_repr#   s    rM   c                   C   s,   dt  dt  kstdt  dt ks(td S )N
   )r'   rJ   r,   rK   rK   rK   rL   test_eq'   s    rO   c                  C   s   t d} | tdt | tdt ks.tttt dt t ksLtt	tdt ksbt| t| kstttttkstt
t }t|t
}|t
t kstd S )Nq1  iJxiQ )rE    set_global_relative_scale_factorr   r(   r   r'   rJ   r.   r,   r    r   r-   )qexprconvrK   rK   rL   test_convert_to-   s    
rV   c                  C   s  t ddd} | dt t ddd}|dt t d}|tt t d}|dt t | jdksjt| jtksxt| j	t
dkst|jtkst|jdkst|j	t
dkst|jd	kst|j|j |kst|j|j j|jkst|jtkst|jd
kstd S )NZs10ZsabbrabbrevrN   udamr&        rQ   )rE   rR   r-   r(   rC   scale_factorrJ   	dimensionr=   rX   r   r<   funcargs)rS   rY   r&   vrK   rK   rL   test_Quantity_definitionA   s&    rb   c                  C   s   t d} | tjt | jtdks(t| jtdks:tt ddd} | tdt | jtdksht| jtdkszt| j	dkstt
| j	tstt ddd} | dt t | jtdkst| j	dkstd S )NrY   omrW      Zikm     )rE   rR   r   Oner(   namer   rJ   rX   r]   
isinstancer   rC   rY   rK   rK   rL   test_abbrev[   s    rk   c                  C   s0   t ddd} t| dkstt| dks,td S )NZunitnamerZ   rW   )rE   reprrJ   rI   rj   rK   rK   rL   
test_printq   s    rm   c                  C   sT   t ddd} t d}| |ks tt ddd}| |ks8tt ddd}| |ksPtd S )	NrY   rZ   rW   v1v2ZdsZv3dm)rE   rJ   )rY   ra   rK   rK   rL   test_Quantity_eqw   s    rq   c                  C   s   t d} t d}t d}| tdt |tdt |tdt t| | tsZt| ||  dtj	 |  ksztt| | tst| ||  tj	|  kstd S )NrY   ra   wrN   r[   rd      )
rE   rR   r   r(   r-   ri   r   rJ   r   ZHalf)rY   ra   rr   rK   rK   rL   test_add_sub   s     rt   c                  C   s   t d} t d}t d}| dtt  |dtt  |dtt  |t| |  }t| tt j	kspt
tt|}t |tdtdikst
tttd kst
d S )Nv_w1v_w2v_w3rs   rd   )rE   rR   r(   r-   r
   rF   get_dimensional_exprr<   r=   rh   rJ   r:   get_dimension_systemget_dimensional_dependenciesr   )ru   rv   rw   rT   DqrK   rK   rL   test_quantity_abs   s       
r}   c                     s   t dt d} t dtdt | tdt tdt dd  tt fd	d
 tt fdd
 tt fdd
 tt fdd
 tt fdd
 d S )NrY   ra   rr   rN   r[   rd   c                 S   s   t |  d S N)rF   _collect_factor_and_dimension)rT   rK   rK   rL   check_unit_consistency   s    z;test_check_unit_consistency.<locals>.check_unit_consistencyc                      s     S r~   rK   rK   r   rY   rr   rK   rL   <lambda>       z-test_check_unit_consistency.<locals>.<lambda>c                      s     S r~   rK   rK   r   rK   rL   r      r   c                      s    d S Nrs   rK   rK   r   rY   rK   rL   r      r   c                      s    d S r   rK   rK   r   rK   rL   r      r   c                      s    dt   S r   )r   rK   r   rK   rL   r      r   )rE   rR   r   r(   r-   rG   
ValueError)ra   rK   r   rL   test_check_unit_consistency   s    r   c                  C   s  t d} t d}t d}t d}t d}| tdt |tdt |tdt |tdtt  |tdtt  d	|  | d
 kst| d	 | kst| | }|}||kst|||kst| d	 | kst| | }|}||kst|||ks
tt d}|tdd	t  | | dks8t| d d	ksJt| d	 | ks\tt d}	t d}
|	tdtd  |
td	dd	t  | d |	kst| d
 |
kst| d |	| kst| d
 |
| kstd S )NrY   ra   tutrN   r[   rd      rs   rx   lp1r   u2u3d   )rE   rR   r   r(   r-   rJ   r   r   )rY   ra   r   r   ro   rn   Zut1Zut2r   r   r   rK   rK   rL   test_mul_div   sD    r   c                  C   s.  t dt t t t ddks"tt tt ttddks>tt	t t
t t
ddks^tdt t t } t t | tt t} |  tdd	kstttd tkstttd tksttd
} t| t t | dt dt fdt t kst| t t | dt dt fdt t ks*td S )Nr[   rs   i  i  i'  rd   z6.0e+23l   !|8. l   eJ r      )r   r'   r,   r    r&   rJ   r!   r(   r   rI   r"   r   nr   r.   r*   simplifyr   r   r   )r   rK   rK   rL   
test_units   s    " 0r   c                   C   s@   t dt td  tdkstt dt td  tdks<td S )N   re      )r   r+   r$   r(   rJ   r)   rK   rK   rK   rL   test_issue_quart  s    r   c                   C   s0   t ttdt kstt ttdt ks,td S )Ngy9goR:)r   r9   r7   rJ   r"   rK   rK   rK   rL   test_electron_rest_mass  s    r   c                   C   s   t tk jstd S r~   )r'   r,   Zis_RelationalrJ   rK   rK   rK   rL   test_issue_5565  s    r   c                2   C   s  t ddddgkstt tdddddgks0tt tdddddgksJtt tddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7g1kstt td8 d9d:d;gkstt td8 d9d:d;gkstt td< d=d>d?gkstt td@ dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgksHtt dTdUdVdWdXdYgksdtt tdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvgkstd S )wNr   ZcoulombsZcoulomb_constantCZplanck_charger   r'   r   cmrp   ftr&   ZlymimmnmpmZumZydZnmifeetr!   r$   ZmileZyardr(   ZmilesZyardsZinchesZmetersZmicronZmicronsZangstromZ	angstromsZ	decimeterr   Z	lightyearZ	nanometerZ	picometerr   Z
decimetersZ
kilometersZ
lightyearsZ
micrometerr)   Z
nanometersZ
picometersZcentimetersZmicrometersZmillimetersZnautical_mileZplanck_lengthZnautical_milesZastronomical_unitZastronomical_unitsrx   DZdioptreZoptical_powerrd   ZhaZhectareZplanck_areare   LlZcLclZdLdlZmLmlZliterr+   ZlitersZquartsZ	deciliterZ
centiliterZ
decilitersZ
milliliterZcentilitersZmillilitersZplanck_volumeZvoltageVra   r   ZvoltsZplanck_voltagegr   Dar%   meZmgZugr   ZmmuZamusgramZmmusr"   poundtonneZdaltonZpoundsr7   Z	kilogramsZ	microgramZ	milligramZ
metric_tonZ
microgramsZ
milligramsZplanck_massZmilli_mass_unitZatomic_mass_unitr9   Zatomic_mass_constant)r   rJ   r   r;   r$   r<   r"   rK   rK   rK   rL   test_find_unit  s                                              

                               r   c                  C   s|   t d} t| t | tkstt| d td  | d| d  td  ksLttttdks^tttd tdt ksxtd S )Nxre   rd   rs   )r	   r   r(   rJ   )r   rK   rK   rL   test_Quantity_derivative3  s
    .r   c               	   C   s   t d} t d}t| ttd  t t  t|tt t td t   | | sXt| | }t	t
|}t |tdtdtdtdikstd S )NrP   q2rd   rx   rs   )rE   rF   set_quantity_dimensionr<   r?   r>   r=   r@   rJ   r:   ry   rz   r{   rA   )rP   r   rS   r|   rK   rK   rL   test_quantity_postprocessing;  s"         r   c                  C   s  dt dftdkstdtfttt ks4tdtt fttt dt dt	   ksbtt
d\} }| |d  tft| t |t  ksttd	}t|tt  t| }dtt ftt|ksttd
}td}|tddtt  |dtt  t|d | }tddtt ft|ks@ttddt t | d }dtdd  t dft|kst|||  }tddtdd tt tdd ft|kstd S )Nrf   rs   i  rd   $   rN   zx yr   cHru   rv   re   r[   r   i  )r:   rF   r   rJ   r<   r(   r&   r=   r-   r#   r	   r'   r   rE   r   r   r   r   r   rR   r   r
   )r   yr   ZpHru   rv   rT   rK   rK   rL   test_factor_and_dimensionM  s>    





$r   c                  C   s   t d} t d}t d}| dt |dt |dt td}td}td}|||||}||||| ||||i}t	
|t	
| | |   krtd	td
d  ksn tt	|t	| | |   krdttd  fksn td S )Nr   r   t1r   rs   r   r   fr<   r=   rd   rN   )rE   rR   r&   r#   r-   r   r   r   subsrF   ry   rJ   r   r<   r=   )r   r   r   r   r   r   ZdfdxZdl_dtrK   rK   rL   #test_dimensional_expr_of_derivativer  s*    r   c                  C   sn   t d} t d}| dtt  |dtt  tt| tt| ksPttt| | dksjtd S )Nru   rv   rs   )rE   rR   r(   r-   rF   ry   r   rJ   )ru   rv   rK   rK   rL   'test_get_dimensional_expr_with_function  s    r   c                  C   s  t ttdt kstt ttdt ks,tt ttdt ksBtt ttdt ksXtt ttdt ksntt ttdt kstt t	dt	 kstt t	dt	 kstd	t t
 } t | td
t t
 kstt | tdt t kstt | ttgdt t kstd S )Ni   i   i   @l        l           l            i       rN   i (  iX  i `	 )r   r1   r0   rJ   r2   r3   r4   r5   r6   r/   r#   r*   )arK   rK   rL   test_binary_information  s    r   c                  C   s   t d} t d}t d}|d|  |tjd | t d}t d}t d}|tjd | |d	| t|| t ||tgtjd d
 d | | t kstd S )N
good_gradekilo_good_gradecenti_good_grader\   i charity_pointsmilli_charity_pointsmissions   ix rN   )rE   rR   r   rg   r   r)   r   rJ   )r   r   r   r   r   r   rK   rK   rL   -test_conversion_with_2_nonstandard_dimensions  s     
r   c                  C   s   t d\} }}| | }| ttd  td  |ti}||td td  ksPt|| }|ttd  td  |ti}||tt td  kstd S )Nzenergy mass forcerd   )r	   r7   r(   r-   r   rJ   r8   )r@   rA   forceexpr1ZunitsZexpr2rK   rK   rL   test_eval_subs  s    r   c                  C   sz   t tt d  t td ks$tt tt t  t d ksFttddd} t tt |   t t|  ksvtd S )Nrd   r   pT)Zpositive)r   r$   r   rJ   r!   r	   )r   rK   rK   rL   test_issue_14932  s    $"r   c                  C   s   ddl m} m} ddlm} t| jd ks.tt| jd ks@tt| j	d ksRtt| j
d ksdtt| jd ksvtt| jd kst|t| t|d k	sttd}| | }|jrt|j| |hkst| d }|jrt|j| dhkstd S )Nr   )r!   r$   )Eqr   rs   )sympy.physics.unitsr!   r$   Zsympy.core.relationalr   r   is_zerorJ   Zis_positiveZis_nonnegativeZis_negativeZis_algebraicZis_rationalr   Zis_Addsetr`   )r!   r$   r   r   erK   rK   rL   test_issue_14547  s    r   c                  C   s`   t d td} t| t t| d td}t|t t|d | | }t| d S )Nerrorrp   rs   bad_exp)warningssimplefilterrE   rF   r   r<   set_quantity_scale_factorr   )rp   r   rT   rK   rK   rL   test_issue_22164  s    
r   c                  C   s^   ddl m} m}m} ddlm} | |d| ks6t|t	t
diksLt|jdksZtd S )Nr   )r   r   r   )	dimsys_SIi@B rd   g/K ;)r   r   r   r   Zsympy.physics.units.systems.sir   r   rJ   r{   r   r<   r]   )r   r   r   r   rK   rK   rL   test_issue_22819  s
    r   c                  C   s   ddl m}  ddlm} td}td}t|| t|| |dt |dt dt	|d |d   }t
|d|  tdfkstd S )Nr   E)r@   rY   ra   rs   rd   )sympy.core.numbersr   r   r@   rE   rF   r   rR   r   r   r   r:   rJ   )r   r@   rY   ra   rT   rK   rK   rL   test_issue_20288  s    r   c                  C   s   ddl m}  ddlm}m}m}m}m}m} t	d}t	d}t	d}	t
|| t
|| t
|	| |d| |d| |	d| |	||  }
t
|
d }t
 |stdt|
 }t
|d|  tdfkstd S )Nr   r   )	impedancecapacitancer=   r   faradr-   Rr   Trs   )r   r   r   r   r   r=   r   r   r-   rE   rF   r   rR   r   rz   Zis_dimensionlessrJ   r   r:   )r   r   r   r=   r   r   r-   r   r   r   rT   dimZexp_exprrK   rK   rL   test_issue_24062  s      r   c            	      C   s   ddl m} m}m}m}m} td}t|| t	|d| |  td}t|| t	|d| |d   td}t||  t	|d|  || | }t
| d S )Nr   )r=   velocityaccelerationr-   r(   V1rs   A1rd   T1)r   r=   r   r   r-   r(   rE   rF   r   r   r   )	r=   r   r   r-   r(   r   r   r   rT   rK   rK   rL   test_issue_24211  s    r   c                   C   sh   t jr
ttjrttjrttjr(ttjr2ttjr<ttjsFtt	jsPtt
jsZttjsdtd S r~   )r(   Zis_prefixedrJ   r   r    r-   r   r   r   r   r7   r5   rK   rK   rK   rL   test_prefixed_property)  s    








r   c                  C   s   ddl m}  t| D ]X}t| |}t|ts.q|drt|tsXt| dt	| |j
st| dqtttttfD ]8}t|tst| dt	| |j
s|t| dq|tj
rttj
rtd S )Nr   )definitionsZ	_constantz" must be PhysicalConstant, but is z4 is not marked as physics constant when it should be)r   r   dirgetattrri   rE   endswithrD   rJ   typeZis_physical_constantr8   r   r   r.   r   r(   r   )r   rh   ZquantityconstrK   rK   rL   test_physics_constant5  s    


  
r   )zr   Zsympy.core.addr   Zsympy.core.functionr   r   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r	   Z$sympy.functions.elementary.complexesr
   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   Zsympy.integrals.integralsr   r   r   r   r   r   r   r   r   r   r   r   r   r   Zsympy.physics.units.definitionsr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   Z5sympy.physics.units.definitions.dimension_definitionsr:   r;   r<   r=   r>   r?   r@   rA   Zsympy.physics.units.prefixesrB   rC   Zsympy.physics.units.quantitiesrD   rE   Zsympy.physics.units.systemsrF   Zsympy.testing.pytestrG   rH   rM   rO   rV   rb   rk   rm   rq   rt   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   rK   rK   rL   <module>   sf   8(
9%
