Ë
    täi?  ã                   óp   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
  G d„ de«      Z G d	„ d
e«      Zy)z
Physical quantities.
é    )Ú
AtomicExpr)ÚSymbol)Úsympify)Ú_QuantityMapper)ÚPrefixc                   óÊ   — e Zd ZdZdZdZdZdZdZdZ		 	 	 	 dd„Z
d„ Zd„ Zed„ «       Zed	„ «       Zed
„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zed„ «       Zed„ «       Zy)ÚQuantityzX
    Physical quantity: can be a unit of measure, a constant or a generic quantity.
    TFNc                 ó  — t        |t        «      st        |«      }|€|}nt        |t        «      rt        |«      }|| _        t	        j
                  | ||«      }	||	_        ||	_        ||	_        ||	_	        ||	_
        ||	_        ||	_        |	S ©N)Ú
isinstancer   ÚstrÚ_is_prefixedr   Ú__new__Ú_nameÚ_abbrevÚ_latex_reprÚ_unicode_reprÚ_ascii_reprÚ_mathml_repr)
ÚclsÚnameÚabbrevÚ
latex_reprÚpretty_unicode_reprÚpretty_ascii_reprÚmathml_presentation_reprÚis_prefixedÚassumptionsÚobjs
             úm/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/sympy/physics/units/quantities.pyr   zQuantity.__new__   s‹   € ô ˜$¤Ô'Ü˜$“<ˆDàˆ>Ø‰FÜ˜¤Ô$Ü˜F“^ˆFð 'ˆÔä× Ñ   d¨FÓ3ˆØˆŒ	ØˆŒØ$ˆŒØ/ˆÔØ+ˆŒØ3ˆÔØ&ˆÔØˆ
ó    c                 ó*   — |t         j                  | <   y r   )r   Ú_quantity_dimension_global)ÚselfÚ	dimensions     r    Úset_global_dimensionzQuantity.set_global_dimension3   s   € Ø;DŒ×2Ñ2°4Ò8r!   c                 óÒ   — ddl m} t        |«      }t        |t        «      rd| _        |j                  d„ d„ «      }t        |«      }||f|j                  | <   ||j                  | <   y)zN
        Setting a scale factor that is valid across all unit system.
        r   ©Ú
UnitSystemTc                 ó"   — t        | t        «      S r   )r   r   ©Úxs    r    Ú<lambda>z;Quantity.set_global_relative_scale_factor.<locals>.<lambda>@   s   € ”j ¤FÔ+r!   c                 ó   — | j                   S r   )Úscale_factorr+   s    r    r-   z;Quantity.set_global_relative_scale_factor.<locals>.<lambda>A   s   € �a—n’nr!   N)	Úsympy.physics.unitsr)   r   r   r   r   ÚreplaceÚ_quantity_scale_factors_globalÚ,_quantity_dimensional_equivalence_map_global)r$   r/   Úreference_quantityr)   s       r    Ú set_global_relative_scale_factorz)Quantity.set_global_relative_scale_factor6   sk   € õ 	3Ü˜|Ó,ˆÜ�l¤FÔ+Ø $ˆDÔà#×+Ñ+Ù+Ù$ó
ˆô ˜|Ó,ˆØ;GÐI[Ð:\ˆ
×1Ñ1°$Ñ7ØHZˆ
×?Ñ?ÀÒEr!   c                 ó   — | j                   S r   )r   ©r$   s    r    r   zQuantity.nameG   s   € à�z‰zÐr!   c                 óP   — ddl m} |j                  «       }|j                  | «      S )Nr   r(   )r0   r)   Úget_default_unit_systemÚget_quantity_dimension©r$   r)   Úunit_systems      r    r%   zQuantity.dimensionK   s$   € å2Ø ×8Ñ8Ó:ˆØ×1Ñ1°$Ó7Ð7r!   c                 ó   — | j                   S )z
        Symbol representing the unit name.

        Prepend the abbreviation with the prefix symbol if it is defines.
        )r   r7   s    r    r   zQuantity.abbrevQ   s   € ð �|‰|Ðr!   c                 óP   — ddl m} |j                  «       }|j                  | «      S )zW
        Overall magnitude of the quantity as compared to the canonical units.
        r   r(   )r0   r)   r9   Úget_quantity_scale_factorr;   s      r    r/   zQuantity.scale_factorZ   s&   € õ
 	3Ø ×8Ñ8Ó:ˆØ×4Ñ4°TÓ:Ð:r!   c                  ó   — y©NT© r7   s    r    Ú_eval_is_positivezQuantity._eval_is_positivec   ó   € Ør!   c                  ó   — yrA   rB   r7   s    r    Ú_eval_is_constantzQuantity._eval_is_constantf   rD   r!   c                 ó   — | S r   rB   r7   s    r    Ú	_eval_AbszQuantity._eval_Absi   s   € Øˆr!   c                 ó4   — t        |t        «      r| |k7  r| S y y r   )r   r	   )r$   ÚoldÚnews      r    Ú
_eval_subszQuantity._eval_subsl   s   € Ü�cœ8Ô$¨°ªØˆKð *5Ð$r!   c                 óÄ   — | j                   r| j                   S dj                  t        | j                  «      dk\  r| j                  d   «      S | j                  d   «      S )Nz\text{{{}}}é   é   r   )r   ÚformatÚlenÚargs)r$   Úprinters     r    Ú_latexzQuantity._latexp   s`   € Ø×ÒØ×#Ñ#Ð#à!×(Ñ(Ü  §¡›^¨qÒ0ð *.¯©°1©ó Dð DØ6:·i±iÀ±lóDð Dr!   c                 ó"   — ddl m}  || ||«      S )a±  
        Convert the quantity to another quantity of same dimensions.

        Examples
        ========

        >>> from sympy.physics.units import speed_of_light, meter, second
        >>> speed_of_light
        speed_of_light
        >>> speed_of_light.convert_to(meter/second)
        299792458*meter/second

        >>> from sympy.physics.units import liter
        >>> liter.convert_to(meter**3)
        meter**3/1000
        rO   )Ú
convert_to)ÚutilrV   )r$   Úotherr<   rV   s       r    rV   zQuantity.convert_tow   s   € õ" 	%Ù˜$  {Ó3Ð3r!   c                 ó   — t        «       S )z"Return free symbols from quantity.)Úsetr7   s    r    Úfree_symbolszQuantity.free_symbols‹   s   € ô ‹uˆr!   c                 ó   — | j                   S )zWWhether or not the quantity is prefixed. Eg. `kilogram` is prefixed, but `gram` is not.)r   r7   s    r    r   zQuantity.is_prefixed�   s   € ð × Ñ Ð r!   )NNNNNF)ÚSI)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úis_commutativeÚis_realÚ	is_numberÚ
is_nonzeroÚis_physical_constantÚ	_diff_wrtr   r&   r5   Úpropertyr   r%   r   r/   rC   rF   rH   rL   rT   rV   r[   r   rB   r!   r    r	   r	      sÜ   „ ñð €NØ€GØ€IØ€JØ ÐØ€Ià"&Ø59ØAEØ!óò6Eò[ð" ñó ðð ñ8ó ð8ð
 ñó ðð ñ;ó ð;òòòòòDó4ð( ñó ðð ñ!ó ñ!r!   r	   c                   ó   — e Zd ZdZdZy)ÚPhysicalConstantzLRepresents a physical constant, eg. `speed_of_light` or `avogadro_constant`.TN)r^   r_   r`   ra   rf   rB   r!   r    rj   rj   •   s   „ ÙVàÑr!   rj   N)ra   Úsympy.core.exprr   Úsympy.core.symbolr   Úsympy.core.sympifyr   Úsympy.physics.units.dimensionsr   Úsympy.physics.units.prefixesr   r	   rj   rB   r!   r    Ú<module>rp      s6   ðñõ 'Ý $Ý &Ý :Ý /ôG!ˆzô G!ôR �xõ  r!   