U
    ZÊ¹j.M  ã                   @   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/bwave/python/venv/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s†t‚t
t }t|t
ƒ}|t
t ks¨t‚d S )NÚq1éˆ  iJxÞi€Q )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sŠt‚|jtks˜t‚|jdks¦t‚|j	t
dƒks¸t‚|jd	ksÆt‚|j|jŽ |ksÚt‚|j|jŽ j|jksòt‚|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_definition?   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sˆt‚t
| j	tƒs˜t‚t ddd�} |  dt t¡ | jtdƒksÆt‚| j	dksÔt‚d S )NrY   ÚomrW   é   Zikmé   é¸  )rE   rR   r   ÚOner(   Únamer   rJ   rX   r]   Ú
isinstancer   rC   ©rY   rK   rK   rL   Útest_abbrevY   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_printo   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_equ   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ƒsŒt‚| | | ¡ tj	|  ks¨t‚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sœt
‚tttd ƒks°t
‚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s”t‚| d	 | ks¤t‚| | }|}||ks¼t‚|| |¡ksÎt‚| d	 | ksÞt‚| | }|}||ksöt‚|| |¡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�s¨t‚| d
 |
k�sºt‚| d |	 | ¡k�sÒt‚| d
 |
 | ¡k�sêt‚d S )NrY   ra   ÚtÚutrN   r[   rd   é   rs   rx   Úlp1r   Úu2Úu3éd   )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s˜t‚ttd ƒtks¬t‚ttƒd tksÀt‚td
ƒ} t| t t | dt dt fƒdt t ksøt‚| 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   ÈeÂJ 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 )Ngí·¶ÈÜy²9g�oœ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s¼t‚t td8 ƒd9d:d;gksÖt‚t td8 ƒd9d:d;gksðt‚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�s°t‚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_derivative-  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s”t‚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_postprocessing5  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s˜t‚td	ƒ}t |tt ¡ t|ƒ }dtt ft t|ƒ¡ksØt‚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�s‚t‚|||  }tddƒtddƒ tt tddƒ ft |¡k�sÄt‚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_dimensionG  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rºtd	ƒtd
ƒd  ksÀn t‚t	 |¡t	 | | | ¡  krôdttd  fksún 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_derivativel  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s„t‚t  t	¡dt	 ksšt‚t  t	¡dt	 ks°t‚d	t t
 } t | tƒd
t t
 ksÖt‚t | tƒdt t ksðt‚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s¦t‚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s’t‚d S )Nzenergy mass forcerd   )r	   r7   r(   r-   r»   rJ   r8   )r@   rA   ÚforceZ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sˆt‚|t| ƒt|ƒƒd k	s¢t‚tdƒ}| | }|jrÊt|jƒ| |hksÎt‚| d }|jrît|jƒ| dhksòt‚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sŽt‚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
 ¡  |¡s¸t‚dt|
ƒ }t
 |¡d|  tdƒfksât‚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ƒs t|› dt	|ƒ› �ƒ‚|j
s|t|› d�ƒ‚q|tj
rÀt‚tj
rÊt‚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_constant/  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%
