
    khh              	       h    d dl mZmZmZmZmZmZ 	  ed      Z G d dee   eeeef   ef         Z	y)    )DictGenericListTupleTypeVarcastTc                       e Zd ZdZdee   dee   fdZ	 	 ddedededed	ed
dfdZ	dede
eef   d
dfdZ	 ddeeef   ded
efdZd
eeee   ee   ee   ee   f   fdZy)Matrixz.This is a dictionary based sparse matrix classrowscolsc                     || _         || _        |D ci c]  }|i  c}| _        |D ci c]  }|i  c}| _        yc c}w c c}w )zeinitialises the class by creating a matrix that will have the given
        rows and columns
        N)r   r   rowdictcoldict)selfr   r   rowcols        q/var/www/html/SchoolMeal/SchoolMeal/pds_admin_SchoolMeal/Backend/venv/lib/python3.12/site-packages/pulp/sparse.py__init__zMatrix.__init__&   sG      $	#	DH0ISb0IDH0ISb0I 1J0Is	   
<
Ar   r   itemcolcheckrowcheckreturnNc                 $   |r|| j                   v rr|r|| j                  v r>t        j                  | ||f|       || j                  |   |<   || j
                  |   |<   y t        | j                         t        d| d      t        d| d      )Nzcol z is not in the matrix columnszrow z is not in the matrix rows)r   r   dict__setitem__r   r   printRuntimeError)r   r   r   r   r   r   s         r   addz
Matrix.add/   s     3$))+sdii/  Sz48)-S!#&)-S!#&dii "T#.K#LMMcU*DEFF    rowitemsc                     || j                   v r.|j                         D ]  \  }}| j                  |||d        yt        d      )zadds a columnF)r   z col is not in the matrix columnsN)r   itemsr   r   )r   r   r!   r   r   s        r   addcolzMatrix.addcolB   sJ    $))%^^- 9	Tc4%89 ABBr    coordsdefaultc                 0    t         j                  | ||      S )N)r   get)r   r%   r&   s      r   r(   z
Matrix.getJ   s    
 xxfg..r    c                    t        |       }g }g }g }g }t        | j                        D ]  \  }}|j                  t        |             |j	                  t        | j                  |   j                                      |j	                  t        | j                  |   j                                      |j                  t        |      |d   z
          |j                  t        |             |||||fS )N)	len	enumerater   appendextendlistr   valueskeys)r   numElselemBase
startsBaseindBaselenBaseir   s           r   col_based_arrayszMatrix.col_based_arraysQ   s     T
		* 	;FAsc(m,OODc!2!9!9!;<=NN4S 1 6 6 89:NN3x=:b>9:		; 	#h-(z7GX==r    )FF)r   )__name__
__module____qualname____doc__r   intr   r	   boolr   r   r$   r   r(   r8    r    r   r   r   #   s    8JT#Y Jd3i J GG G 	G
 G G 
G&C# Cc1f C$ C /c3h/ / 
	/>	sDItCy$s)T!W<	=>r    r   N)
typingr   r   r   r   r   r   r	   r=   r   r?   r    r   <module>rA      s?    < <4
 CL=>WQZeCHoq01 =>r    