
    ]Mh                     X    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	dS )    )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 j!        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.
     Fc                     |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      U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/fontTools/misc/vector.pyr   zVector.__new__   sX    uM9"   <<6!!MwwsF+++    c                 d    | j         j         dt                                                       dS )N())r   __name__r   __repr__)selfr   s    r   r   zVector.__repr__   s/    .)AAEGG,<,<,>,>AAAAr   c                 \   t          t                    rQt          |           t                    k    sJ |                     fdt	          |           D                       S t          t
                    r"|                     fd| D                       S t                      )Nc              3   6   K   | ]\  }} ||          V  d S Nr   ).0abops      r   	<genexpr>z#Vector._vectorOp.<locals>.<genexpr>%   s1      !H!Htq!""Q((!H!H!H!H!H!Hr   c              3   0   K   | ]} |          V  d S r   r   r   vr    others     r   r!   z#Vector._vectorOp.<locals>.<genexpr>'   -      !=!=1""Q,,!=!=!=!=!=!=r   )
isinstancer   lenr   zipr   NotImplementedErrorr   r%   r    s    ``r   	_vectorOpzVector._vectorOp"   s    eV$$ 	It99E

****>>!H!H!H!Hs47G7G!H!H!HHHHeV$$ 	>>>!=!=!=!=!=!=!=!====!###r   c                     t          t                    r"|                     fd| D                       S t                      )Nc              3   0   K   | ]} |          V  d S r   r   r#   s     r   r!   z#Vector._scalarOp.<locals>.<genexpr>,   r&   r   )r'   r   r   r*   r+   s    ``r   	_scalarOpzVector._scalarOp*   sL    eV$$ 	>>>!=!=!=!=!=!=!=!====!###r   c                 F    |                      fd| D                       S )Nc              3   .   K   | ]} |          V  d S r   r   )r   r$   r    s     r   r!   z"Vector._unaryOp.<locals>.<genexpr>0   s+      22bbee222222r   r   )r   r    s    `r   _unaryOpzVector._unaryOp/   s*    ~~2222T222222r   c                 B    |                      |t          j                  S r   )r,   operatoraddr   r%   s     r   __add__zVector.__add__2       ~~eX\222r   c                 B    |                      |t          j                  S r   )r,   r5   subr7   s     r   __sub__zVector.__sub__7   r9   r   c                 8    |                      |t                    S r   )r,   _operator_rsubr7   s     r   __rsub__zVector.__rsub__:   s    ~~e^444r   c                 B    |                      |t          j                  S r   )r/   r5   mulr7   s     r   __mul__zVector.__mul__=   r9   r   c                 B    |                      |t          j                  S r   )r/   r5   truedivr7   s     r   __truediv__zVector.__truediv__B   s    ~~eX%5666r   c                 8    |                      |t                    S r   )r/   _operator_rtruedivr7   s     r   __rtruediv__zVector.__rtruediv__E   s    ~~e%7888r   c                 @    |                      t          j                  S r   )r3   r5   posr   s    r   __pos__zVector.__pos__H       }}X\***r   c                 @    |                      t          j                  S r   )r3   r5   negrK   s    r   __neg__zVector.__neg__K   rM   r   )roundc                ,    |                      |          S r   )r3   )r   rQ   s     r   	__round__zVector.__round__N   s    }}U###r   c                     t          |t                    rt          |          }t                                          |          S r   )r'   listtupler   __eq__)r   r%   r   s     r   rW   zVector.__eq__Q   s6    eT"" 	!%LLEww~~e$$$r   c                 .    |                      |           S r   )rW   r7   s     r   __ne__zVector.__ne__W   s    ;;u%%%%r   c                      t          |           S r   )anyrK   s    r   __bool__zVector.__bool__Z   s    4yyr   c                 X    t          j        t          d | D                                 S )Nc              3       K   | ]	}||z  V  
d S r   r   )r   xs     r   r!   z!Vector.__abs__.<locals>.<genexpr>`   s&      11qQU111111r   )mathsqrtsumrK   s    r   __abs__zVector.__abs___   s)    y11D11111222r   c                      t          |           S )z;Return the length of the vector. Equivalent to abs(vector).absrK   s    r   lengthzVector.lengthb   s    4yyr   c                 &    | t          |           z  S )z+Return the normalized vector of the vector.re   rK   s    r   
normalizedzVector.normalizedf   s    c$iir   c                     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  V  d S r   r   )r   r   r   s      r   r!   zVector.dot.<locals>.<genexpr>n   s*      66TQ1q5666666r   )r(   rb   r)   r7   s     r   dotz
Vector.dotj   sH     4yyCJJ&&&&66Su%5%5666666r   c                 ^    t          j        dt                     |                                 S )NzAthe 'toInt' method has been deprecated, use round(vector) instead)r   r	   r
   rS   rK   s    r   toIntzVector.toIntr   s.    O	
 	
 	
 ~~r   c                 T    t          j        dt                     t          |           S )NzPthe 'values' attribute has been deprecated, use the vector object itself instead)r   r	   r
   rU   rK   s    r   r   zVector.valuesy   s,    /	
 	
 	

 Dzz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                     t          |           t          |          k    sJ t          fdt          | |          D                       S )z5Return True if the vector is close to another Vector.c              3   D   K   | ]\  }}t          j        ||fi V  d S r   )r`   isclose)r   r   r   kwargss      r   r!   z!Vector.isclose.<locals>.<genexpr>   s;      MMDAq4<1////MMMMMMr   )r(   allr)   )r   r%   rv   s     `r   ru   zVector.isclose   sM    4yyCJJ&&&&MMMMCe<L<LMMMMMMr   )F)%r   
__module____qualname____doc__	__slots__r   r   r,   r/   r3   r8   __radd__r<   r?   rB   __rmul__rE   rH   rL   rP   rQ   rS   rW   rY   r\   __nonzero__rc   rg   ri   rl   rn   propertyr   setterboolru   __classcell__r2   s   @r   r   r   
   s*         I	, 	, 	, 	, 	, 	,B B B B B$ $ $$ $ $
3 3 33 3 3 H3 3 35 5 53 3 3 H7 7 79 9 9+ + ++ + + "' $ $ $ $ $% % % % %& & &   K3 3 3       7 7 7        X ]
 
 ]

NX ND N N N N N N N Nr   c                 ,    t          j        ||           S r   )r5   r;   r   r   s     r   r>   r>      s    <1r   c                 ,    t          j        ||           S r   )r5   rD   r   s     r   rG   rG      s    Aq!!!r   )
numbersr   r`   r5   r   __all__rV   r   r>   rG   r   r   r   <module>r      s             *AN AN AN AN ANU AN AN ANH  " " " " "r   