+
    Tj1                         R t ^ RIHt ^ RIHt . ROt]]]3tRt	R t
] ! R R4      4       t ! R	 R]4      t ! R
 R]4      t]t]tR# )a  
Distance and Area objects to allow for sensible and convenient calculation
and conversions.

Authors: Robert Coup, Justin Bronn, Riccardo Di Virgilio

Inspired by GeoPy (https://github.com/geopy/geopy)
and Geoff Biggs' PhD work on dimensioned units for robotics.
)Decimal)total_orderingAreaDistancesq_c                 p    V P                   \        8X  d   V P                  # V P                   P                  # N)	__class__type__name__)objs   &O/var/www/idalgo/venv/lib/python3.14/site-packages/django/contrib/gis/measure.pypretty_namer   0   s&    ==D03<<Lcmm6L6LL    c                      a  ] tR t^4t o Rt/ t/ t/ tRR ltR t	R t
]! ]	]
4      tR tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR t]R 4       tRt V t!R# )MeasureBaseNc                    V P                  V4      w  q0n        \        W P                  V4       V'       d!   \	        V\
        4      '       d	   Wn        R # R # R # r   )default_units_default_unitsetattrSTANDARD_UNIT
isinstancestr)selfdefault_unitkwargsvalues   &&, r   __init__MeasureBase.__init__;   sD    $($6$6v$>!!((%0J|S99!- :<r   c                ,    \        W P                  4      # r   )getattrr   r   s   &r   _get_standardMeasureBase._get_standardA   s    t//00r   c                2    \        W P                  V4       R # r   )r   r   )r   r   s   &&r   _set_standardMeasureBase._set_standardD   s    ((%0r   c                    WP                   9   d%   V P                  V P                   V,          ,          # \        R V,          4      h)Unknown unit type: %s)UNITSstandardAttributeError)r   names   &&r   __getattr__MeasureBase.__getattr__I   s5    ::==4::d#333 !84!?@@r   c                j    \        V 4      : R V P                  : R\        W P                  4      : R2# )(=))r   r   r    r!   s   &r   __repr__MeasureBase.__repr__O   s+    D,,-
 	
r   c                N    \        W P                  4      : R V P                  : 2# ) )r    r   r!   s   &r   __str__MeasureBase.__str__V   s    !$(:(:;T=O=OPPr   c                v    \        WP                  4      '       d   V P                  VP                  8H  # \        # r   r   r	   r*   NotImplementedr   others   &&r   __eq__MeasureBase.__eq__[   s*    e^^,,==ENN22!!r   c                ,    \        V P                  4      # r   )hashr*   r!   s   &r   __hash__MeasureBase.__hash__a       DMM""r   c                v    \        WP                  4      '       d   V P                  VP                  8  # \        # r   r:   r<   s   &&r   __lt__MeasureBase.__lt__d   s*    e^^,,==5>>11!!r   c                    \        WP                  4      '       dF   V P                  ! RR V P                  /V P                  V P                  VP                  ,           /B # \        RR\        V 4      /,          4      h)r   &%(class)s must be added with %(class)sclass r   r	   r   r   r*   	TypeErrorr   r<   s   &&r   __add__MeasureBase.__add__l   sr    e^^,,>> !//%%(FH 
 8G[QUEV;WW r   c                    \        WP                  4      '       d&   V ;P                  VP                  ,          un        V # \        R R\	        V 4      /,          4      h)rI   rJ   r   r	   r*   rM   r   r<   s   &&r   __iadd__MeasureBase.__iadd__w   sH    e^^,,MMU^^+MK8G[QUEV;WW r   c                    \        WP                  4      '       dF   V P                  ! RR V P                  /V P                  V P                  VP                  ,
          /B # \        RR\        V 4      /,          4      h)r   +%(class)s must be subtracted from %(class)srJ   rK   rL   r<   s   &&r   __sub__MeasureBase.__sub__   st    e^^,,>> !//%%(FH 
 =K-./ r   c                    \        WP                  4      '       d&   V ;P                  VP                  ,          un        V # \        R R\	        V 4      /,          4      h)rU   rJ   rQ   r<   s   &&r   __isub__MeasureBase.__isub__   sJ    e^^,,MMU^^+MK=K-./ r   c                    \        V\        4      '       d<   V P                  ! RR V P                  /V P                  V P
                  V,          /B # \        RR\        V 4      /,          4      h)r   (%(class)s must be multiplied with numberrJ   rK   r   NUMERIC_TYPESr	   r   r   r*   rM   r   r<   s   &&r   __mul__MeasureBase.__mul__   sn    e]++>> !//%%(=? 
 :K-./ r   c                    \        V\        4      '       d%   V ;P                  \        V4      ,          un        V # \	        R R\        V 4      /,          4      h)r\   rJ   r   r^   r*   floatrM   r   r<   s   &&r   __imul__MeasureBase.__imul__   sH    e]++MMU5\)MK:K-./ r   c                    W,          # r   rK   r<   s   &&r   __rmul__MeasureBase.__rmul__   s
    |r   c                N   \        WP                  4      '       d   V P                  VP                  ,          # \        V\        4      '       d<   V P                  ! RR V P                  /V P
                  V P                  V,          /B # \        RR\        V 4      /,          4      h)r   z2%(class)s must be divided with number or %(class)srJ   rK   )r   r	   r*   r^   r   r   rM   r   r<   s   &&r   __truediv__MeasureBase.__truediv__   s    e^^,,==5>>11e]++>> !//%%(=? 
 DK-./ r   c                    \        V\        4      '       d%   V ;P                  \        V4      ,          un        V # \	        R R\        V 4      /,          4      h)z%%(class)s must be divided with numberrJ   rb   r<   s   &&r   __itruediv__MeasureBase.__itruediv__   sF    e]++MMU5\)MK77KPTDU:VV r   c                ,    \        V P                  4      # r   )boolr*   r!   s   &r   __bool__MeasureBase.__bool__   rD   r   c                   RpV P                   pVP                  4        EF=  w  rE\        V\        4      '       g   \        V4      pW@P                  9   d%   W P                  V,          V,          ,          pTpK[  W@P
                  9   d8   V P
                  V,          pW P                  V,          V,          ,          pTpK  VP                  4       pWpP                  9   d%   W P                  V,          V,          ,          pTpK  WpP                  9   d9   V P                  V,          pW P                  V,          V,          ,          pTpEK.  \        RV,          4      h	  W#3# )zd
Return the unit value and the default units specified
from the given keyword arguments dictionary.
g        r(   )	r   itemsr   rc   r)   ALIASlowerLALIASr+   )r   r   valr   unitr   urv   s   &&      r   r   MeasureBase.default_units   s   
 ))!<<>KDeU++ezz!zz$'%//##JJt$zz!}u,, 

JJ&::e,u44C#(Lkk)E*A::a=500C#$L()@4)GHH) **   r   c                    VP                  4       pWP                  9   d   V# W P                  9   d   V# W P                  9   d   V P                  V,          # \        RV 24      h)z
Retrieve the unit attribute name for the given unit string.
For example, if the given unit string is 'metre', return 'm'.
Raise an AttributeError if an attribute cannot be found.
zUnknown unit type: )rv   r)   rw   r+   )clsunit_strrv   s   && r   unit_attnameMeasureBase.unit_attname   sZ      yy OiiLjj ::e$$ #6xj!ABBr   )r   r   )"r   
__module____qualname____firstlineno__r   ru   r)   rw   r   r"   r%   propertyr*   r-   r3   r7   r>   rB   rF   rN   rR   rV   rY   r_   rd   rg   rj   rm   rq   r   classmethodr   __static_attributes____classdictcell__)__classdict__s   @r   r   r   4   s     MEEF.11 }5HA
Q
"#"	

#!< C Cr   r   c                   *  a ] tR t^t oRt/ RRbRRbRRbRR	bR
RbRRbRRbRRbRRbRRbRRbRRbRRbRRbRRbR R!bR"R#bR$R%R&R'R(R)R*R+R,R-RR.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=R>R?R@/Ct/ RARbRBRbRCR$bRDR&bRER&bRFRbRGRbRHR=bRIR=bRJR1bRKR1bRLR/bRMR?bRNRbROR
bRPRbRQRb/ RRRbRSRbRTRbRURbRVRbRWRbRXRbRYRbRZRbR[RbR\R bR]R"bR^R*bR_R,bR`R3bRaR5bRbR;bCRcR;RdR"ReR9/Ct]P                  4        U Uu/ uF  w  rV P                  4       VbK  	  upp t	Rf t
RgtVtRh# u upp i )ir   mchaing=,Ԛ4@chain_benoitgl4@chain_searsgs<G4@british_chain_benoitg|1"u4@british_chain_searsgᕪQ4@british_chain_sears_truncatedg4@cmg{Gz?
british_ftgGՁ?
british_ydglGvB?	clarke_ftg)hć?clarke_linkg#Zп?fathomgB?ftgׁ?furlonggL7A`%i@german_mg]A ?gold_coast_ftgäց?	indian_ydg/!B?inchg
F%u?kmg     @@linkg8~߿?link_benoitg,ݿ?
link_searsgܿ?g      ?migL7A`%@mmgMbP?nmg     @nm_ukg~j@rodg=,Ԛ@sears_ydg\NtB?	survey_ftg`jځ?umgư>ydgB?
centimeterfootinches	kilometer	kilometremetermetre
micrometer
micrometre
millimeter
millimetremileyardzBritish chain (Benoit 1895 B)zBritish chain (Sears 1922)z$British chain (Sears 1922 truncated)zBritish foot (Sears 1922)zBritish footzBritish yard (Sears 1922)zBritish yardzClarke's FootzClarke's linkzChain (Benoit)zChain (Sears)zFoot (International)zFurrow LongzGerman legal metrezGold Coast footzIndian yardzLink (Benoit)zLink (Sears)zNautical MilezNautical Mile (UK)zUS survey footz	U.S. FootzYard (Indian)zYard (Sears)c                   \        WP                  4      '       dU   \        RR \        V P                  ,           /\        V P
                  ,           V P                  VP                  ,          /B # \        V\        4      '       d<   V P                  ! RR V P                  /V P
                  V P                  V,          /B # \        RR\        V P                  4      /,          4      h)r   z;%(distance)s must be multiplied with number or %(distance)sdistancerK   )
r   r	   r   AREA_PREFIXr   r   r*   r^   rM   r   r<   s   &&r   r_   Distance.__mul__H  s    e^^,, (4+=+==!3!33dmmenn6TV  }-->> !//%%(=? 
 MDNN ; r   rK   N)r   r   r   r   r   r)   ru   rt   rv   rw   r_   r   r   kvr   s   00@r   r   r      s"    M!!	! 	z! 		!
 	}! 	(! 	d! 	n! 	n! 	\! 	~! 	&! 	f! 	7! 	L!  	*!!" 	^#!$ 	fzjShefvJ^hfA!EH&d&& 	&& 	T	&
 	T& 	& 	& 	d& 	d& 	d& 	d& 	& 	& 	()?& 	%&;&  	/0O!&" 	$\#&$ 	%&& 	$\'&( 	)&* 	+&, 	-&. 	./&0 	1&2 	3&4 	y5&6 	j7&8 	?9&: 	{;&< 	=&> 	?&@ 	A&B 	gC&D 	+E&F 	[
K&EN (-{{}5}tqaggil}5F  6s   &Dc                     a ] tR tRt o]]P                  ,           t]P                  P                  4        U Uu/ uF  w  r\        : V : 2V^,          bK  	  upp RR/,          t]P                  P                  4        U Uu/ uF  w  rV \        : V: 2bK  	  upp RR/,          t	]	P                  4        U Uu/ uF  w  rV P                  4       VbK  	  upp tR tRtVtR# u upp i u upp i u upp i )r   i\  hai'  hectarec                    \        V\        4      '       d<   V P                  ! RR V P                  /V P                  V P
                  V,          /B # \        RR\        V 4      /,          4      h)r   z%%(class)s must be divided by a numberrJ   rK   r]   r<   s   &&r   rj   Area.__truediv__h  sl    e]++>> !//%%(=? 
 77KPTDU:VV r   rK   N)r   r   r   r   r   r   r   r)   rt   ru   rv   rw   rj   r   r   r   s   00@r   r   r   \  s     ("8"88M9A9M9M9OP9O{A&1,9OPeT E 7?nn6J6J6LM6LdaQ+q))6LM4Q E (-{{}5}tqaggil}5F	 	 Q N 6s   C$C*;C0N)Ar   Dr   )__doc__decimalr   	functoolsr   __all__intrc   r^   r   r   r   r   r   r   r   rK   r   r   <module>r      su   <  $
(eW%M AC AC ACH`{ `F; 2 r   