o
    g                     @   s   d dl mZmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZ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
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    )DimensionSystemjoulesecondampere)Rational)S)ckgms)lengthtime)Quantity)
UnitSystem)
convert_toc                  C   s   t d} ttf}t|t| fdd}|| t || tdd t	|j
t	|ks+J t	|jttt| hks8J |jdks?J |jdksFJ d S )NdmMSz	MS system   
   )r   r
   r   r   r   set_quantity_dimensionr   set_quantity_scale_factorr   set_base_units_unitsnamedescr)r   basems r   `/var/www/visachat/venv/lib/python3.10/site-packages/sympy/physics/units/tests/test_unitsystem.pytest_definition   s   r    c                   C   sX   t tttfdddksJ t tttfdksJ ttttfdttf ks*J d S )Nr   )r   zUnitSystem((meter, second))z<UnitSystem: (%s, %s)>)strr   r
   r   reprr   r   r   r   test_str_repr   s   $r#   c                  C   sp   t d} | tjt t d}|tjtt  ttt	t
| f|f}t||jtd t	 t
d  d ks6J d S )NAJs   i  )r    set_global_relative_scale_factorr   Oner   r   r   r   r
   r	   r   r   r   )r$   r%   mksar   r   r   test_convert_to#   s   ,r+   c                  C   s   t ttftf} td}|dtt  | t	f|f}t ttt	ft|f}t
|jt
|jks2J t
|jt
|jks>J d S )Nr%   r   )r   r
   r   r   r   r(   r   r   extendr	   r   r   r   )r   r%   mksresr   r   r   test_extend.   s   r/   c                  C   s$   t tttftf} | jdksJ d S )N   )r   r
   r	   r   r   dim)dimsysr   r   r   test_dim9   s   r3   c                  C   s.   t ttg} tttg| d}|jdksJ d S )N)dimension_systemT)r   r   r   r   r
   r   is_consistent)r4   usr   r   r   test_is_consistent>   s   r7   c                  C   s   ddl m} m} td}| }dD ]=}|D ]8}t|ts)J | dt| |j	r3J | d|j
r=J | d|jj|rOJ d|j d	| qq| |v sWJ ||v s]J d S )
Nr   )voltohmSI)gigaterapetaexazettayottakilohectodecadecicentimillimicronanopicofemtoattozeptoyoctoz must be a Quantity, not z is marked as prefixedz is marked as physics constantUnit z has prefix )sympy.physics.unitsr8   r9   r   get_unit_systemget_units_non_prefixed
isinstancer   typeis_prefixedis_physical_constantr   
startswith)r8   r9   unit_systemunitsprefixunitr   r   r   test_get_units_non_prefixedD   s   
 &r[   c                  C   sV   t j D ]#} | j D ]}|t}|D ]}|| jv s&J d| d|  qqqd S )NrN   z is not in unit system )r   _unit_systemsvaluesderived_unitsatomsr   r   )rW   preferred_unitrX   rZ   r   r   r   ,test_derived_units_must_exist_in_unit_systemQ   s   
 ra   N)rO   r   r   r   r   sympy.core.numbersr   sympy.core.singletonr   sympy.physics.units.definitionsr   r	   r
   r   5sympy.physics.units.definitions.dimension_definitionsr   r   sympy.physics.units.quantitiesr   sympy.physics.units.unitsystemr   sympy.physics.units.utilr   r    r#   r+   r/   r3   r7   r[   ra   r   r   r   r   <module>   s     