
    +g                     P    d dl mZ d dlZd dlZd dlZdgZ G d de      Zd Zd Z	y)    )NumberNVectorc                       e Zd ZdZdZd fd	Z fdZd Zd Zd Z	d Z
e
Zd	 Zd
 Zd ZeZd Zd Zd Zd ZeddZ fdZd Zd ZeZd Zd Zd Zd Zd Zed        Z e jB                  d        Z dd de"fdZ# xZ$S ) r   zA math-like vector.

    Represents an n-dimensional numeric vector. ``Vector`` objects support
    vector addition and subtraction, scalar multiplication and division,
    negation, rounding, and comparison tests.
     c                     |durt        j                  dt               t        |      t        k(  r|S t
        |   | |      S )NFz'the 'keep' argument has been deprecated)warningswarnDeprecationWarningtyper   super__new__)clsvalueskeep	__class__s      m/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/fontTools/misc/vector.pyr   zVector.__new__   sA    uMM9" <6!MwsF++    c                 T    | j                   j                   dt        |           dS )N())r   __name__r   __repr__)selfr   s    r   r   zVector.__repr__   s*    ..))*!EG,<,>+?qAAr   c                 
   t        t              r=t        |       t              k(  sJ | j                  fdt	        |       D              S t        t
              r| j                  fd| D              S t               )Nc              3   6   K   | ]  \  }} ||        y wNr   ).0abops      r   	<genexpr>z#Vector._vectorOp.<locals>.<genexpr>%   s     !Htq!"Q(!Hs   c              3   0   K   | ]  } |        y wr   r   r   vr    others     r   r!   z#Vector._vectorOp.<locals>.<genexpr>'        !=1"Q,!=   )
isinstancer   lenr   zipr   NotImplementedErrorr   r%   r    s    ``r   	_vectorOpzVector._vectorOp"   sg    eV$t9E
***>>!Hs47G!HHHeV$>>!=!===!##r   c                 p    t        t              r| j                  fd| D              S t               )Nc              3   0   K   | ]  } |        y wr   r   r#   s     r   r!   z#Vector._scalarOp.<locals>.<genexpr>,   r&   r'   )r(   r   r   r+   r,   s    ``r   	_scalarOpzVector._scalarOp*   s+    eV$>>!=!===!##r   c                 8    | j                  fd| D              S )Nc              3   .   K   | ]  } |        y wr   r   )r   r$   r    s     r   r!   z"Vector._unaryOp.<locals>.<genexpr>0   s     2be2s   r   )r   r    s    `r   _unaryOpzVector._unaryOp/   s    ~~2T222r   c                 B    | j                  |t        j                        S r   )r-   operatoraddr   r%   s     r   __add__zVector.__add__2       ~~eX\\22r   c                 B    | j                  |t        j                        S r   )r-   r6   subr8   s     r   __sub__zVector.__sub__7   r:   r   c                 .    | j                  |t              S r   )r-   _operator_rsubr8   s     r   __rsub__zVector.__rsub__:   s    ~~e^44r   c                 B    | j                  |t        j                        S r   )r0   r6   mulr8   s     r   __mul__zVector.__mul__=   r:   r   c                 B    | j                  |t        j                        S r   )r0   r6   truedivr8   s     r   __truediv__zVector.__truediv__B   s    ~~eX%5%566r   c                 .    | j                  |t              S r   )r0   _operator_rtruedivr8   s     r   __rtruediv__zVector.__rtruediv__E   s    ~~e%788r   c                 @    | j                  t        j                        S r   )r4   r6   posr   s    r   __pos__zVector.__pos__H       }}X\\**r   c                 @    | j                  t        j                        S r   )r4   r6   negrL   s    r   __neg__zVector.__neg__K   rN   r   )roundc                $    | j                  |      S r   )r4   )r   rR   s     r   	__round__zVector.__round__N   s    }}U##r   c                 X    t        |t              rt        |      }t        |   |      S r   )r(   listtupler   __eq__)r   r%   r   s     r   rX   zVector.__eq__Q   s%    eT"%LEw~e$$r   c                 &    | j                  |       S r   )rX   r8   s     r   __ne__zVector.__ne__W   s    ;;u%%%r   c                     t        |       S r   )anyrL   s    r   __bool__zVector.__bool__Z   s    4yr   c                 L    t        j                  t        d | D                    S )Nc              3   &   K   | ]	  }||z    y wr   r   )r   xs     r   r!   z!Vector.__abs__.<locals>.<genexpr>`   s     1qQU1s   )mathsqrtsumrL   s    r   __abs__zVector.__abs___   s    yy1D1122r   c                     t        |       S )z;Return the length of the vector. Equivalent to abs(vector).absrL   s    r   lengthzVector.lengthb   s    4yr   c                     | t        |       z  S )z+Return the normalized vector of the vector.rf   rL   s    r   
normalizedzVector.normalizedf   s    c$ir   c                 l    t        |       t        |      k(  sJ t        d t        | |      D              S )z[Performs vector dot product, returning the sum of
        ``a[0] * b[0], a[1] * b[1], ...``c              3   ,   K   | ]  \  }}||z    y wr   r   )r   r   r   s      r   r!   zVector.dot.<locals>.<genexpr>n   s     6TQ1q56s   )r)   rc   r*   r8   s     r   dotz
Vector.dotj   s2     4yCJ&&&6Su%5666r   c                 V    t        j                  dt               | j                         S )NzAthe 'toInt' method has been deprecated, use round(vector) instead)r   r	   r
   rT   rL   s    r   toIntzVector.toIntr   s#    O	
 ~~r   c                 L    t        j                  dt               t        |       S )NzPthe 'values' attribute has been deprecated, use the vector object itself instead)r   r	   r
   rV   rL   s    r   r   zVector.valuesy   s"    /	

 Dzr   c                     t        d      )Nz?can't set attribute, the 'values' attribute has been deprecated)AttributeError)r   r   s     r   r   zVector.values   s    M
 	
r   r%   returnc                 r    t        |       t        |      k(  sJ t        fdt        | |      D              S )z5Return True if the vector is close to another Vector.c              3   R   K   | ]  \  }}t        j                  ||fi    y wr   )ra   isclose)r   r   r   kwargss      r   r!   z!Vector.isclose.<locals>.<genexpr>   s%     MDAq4<<1//Ms   $')r)   allr*   )r   r%   rw   s     `r   rv   zVector.isclose   s1    4yCJ&&&MCe<LMMMr   )F)%r   
__module____qualname____doc__	__slots__r   r   r-   r0   r4   r9   __radd__r=   r@   rC   __rmul__rF   rI   rM   rQ   rR   rT   rX   rZ   r]   __nonzero__rd   rh   rj   rm   ro   propertyr   setterboolrv   __classcell__r3   s   @r   r   r   
   s     I	,B$$
33 H353 H79++ "' $%& K3 7    ]]
 

NX ND Nr   c                 .    t        j                  ||       S r   )r6   r<   r   r   s     r   r?   r?      s    <<1r   c                 .    t        j                  ||       S r   )r6   rE   r   s     r   rH   rH      s    Aq!!r   )
numbersr   ra   r6   r   __all__rW   r   r?   rH   r   r   r   <module>r      s5        *ANU ANH"r   