
    =	fL                     p   d dl  d dlmZ d dlmZ ddlZddlZ	 ddlZdZ	 ej                  dej                        ZdZd Zd Zd	Zd
ZdZdZdZeZdZg dZg dZej5                          i ddddddddddddddddddddddd dd!dd"dd#dd$dd%di d&dd'dd(d)d*d)d+d)d,dd-dd.dd/dd0dd1d2d3d2d4d5d6d7d8dd9dd:d5i d;dd<dd=dd>d)d?d)d@ddAddBddCddDddEddFddGddHddIddJddKdi dLddMddNddOddPddQdRdSddTddUddVddWddXddYddZdd[dd\dZdZd Zd Zd	Zi ded]ed^ed_ed`edededed)ed2edaed5edbed7edceddedeedReiZ g dfZ!e!j5                          dgdhdidjdkZ"dl Z#dm Z$ G dn do      Z%y# e
$ r dZ	dZY w xY w)p   )*)utils)
to_unicode    NTFz(\d+)                  )7zPCL3-Class3AzPCL3-Class3BzPCL3-Class3z
PCLM-COLORz	PCLM-MONOzPCL4-Class1z	LJ-Class1z	LJ-Class2z	LJ-Class3z	LJ-Class4z
LJ-Class4Az	LJ-Class5z	LJ-Class6DJGenericVIPDJ9xxVIPDJ55xxStabler
StingrayOJ
CopperheadCopperheadXLPCopperhead12CopperheadIPHCopperheadIPH15CopperheadIPH17CLECLE17PyramidRefresh17Saipan	Saipan15BKapanViperPlusVIPViperMinusVIPCorbettAmperePythonPython10Python11MimasMimas15Mimas17MimasTDRPyramidRefresh15P15_CISSPyramid	Pyramid15PyramidPlusGemstoneSPDOfficejetProAsizeSPDOfficejetProBsizeOJ7000	OJProKx50PSP100PSP470Peaks_mod-mechAthena-L)K	UndefinedUnsupported
PostscriptPDFr   LJMonoLJColorLJFastRaster
LJJetReadyDJ350DJ540DJ600DJ6xx
DJ6xxPhotoDJ630DJ8xxDJ8x5DJ850DJ890DJ9xxr   DJ3600DJ3320DJ4100AP2xxxAP21xxAP2560r3   r4   	LJZjsMono
LJZjsColorLJm1005QuickConnectr   r2   LJP1XXXr   r   r   ViperPlusTrimViperMinusTrimr    r"   r1   r+   r,   r#   r%   r&   r   r   r   r   r   r   r   r)   r   r!   r$   r   r-   Hbpl1r   r(   r   r.   r/   r   r0   r   r'   r*   r5   r6   r9   psr:   pdfr   pcl3r;   r<   r=   pclxlr>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r   rJ   lidilrK   rL   rM   rN   rO   r3   r4   rP   zjsrQ   rR   zxsrS   jpegr   r2   rT   r   r   r   rU   rV   r    r"   r1   r#   r%   r&   r   r,   r   r   r   r   r   r   r)   r   r!   rW   hbpl1r   r(   r   r.   r/   r   r0   r   r'   r*   pcl5pcl6pcl5epclzjstreamzxstreamjpgjetreadyjr) LargeFormatSuperBLargeFormatA3
CoverMedia	FullBleedDuplexNormal
Apollo2000
Apollo2200
Apollo2500NoPhotoModeNoPhotoBestHiresModesNo1200dpiNoSensorNoFullBleed4x6FullBleed
300dpiOnlyGrayscaleOnly
NoAutoTrayNoEvenDuplexNoAutoDuplexNoCDDVDNoMaxDPIr~   SmallMarginsTrim4800x1200dpiAdvancedMonoColorMono_Duplex
AutoDuplexK10CuHdIPHLaserJetPSCHPMFP)laserjetpschpmfpc                    | j                         j                         }d|v r|j                  dd      }n9|j                  d      r|dd  j                  dd      }n|j                  dd      }g }|j	                         D ]\  }t
        j                  |      r|j                  |       *|j                  t        j                  ||j                                      ^ d|v rdj                  |      S ddj                  |      z   S )Napollo_ r   r   zHP )lowerstripreplace
startswithsplitpat_prod_numsearchappendMODEL_UI_REPLACEMENTSget
capitalizejoin)modelmlzyxs        /usr/share/hplip/base/models.pynormalizeModelUINamer   !  s    				B2~JJsC ==12sC(A

3$A
AWWY Cq!HHQKHH*..q!,,.AB	C 2~xx{sxx{""    c           	      Z   t        | t              s	 | j                  d      } t        j                  | j                  dd      j                  dd      j                  dd      j                  d	d      d      S # t        $ r( t        j                  d| dt        |       d       Y w xY w)
Nzutf-8zFailed to encode model = z  type=r   r   __~ /)

isinstancestrencodeUnicodeEncodeErrorlogerrortyper   xstripr   )r   s    r   normalizeModelNamer   9  s    eS!Q<<(5 <<c3/77cBJJ3rRZZ[^`cdfijj ! Q
))U4;O
PQs   A9 9.B*)B*c                   D    e Zd Zd
dZddZddZd Zd Zd Zd Z	d
d	Z
y)	ModelDataNc                    |t         j                  | _        n|| _        i | _        | j	                          t        j                  d      | _        t        j                  dt
        j                        | _	        t        j                  d      | _
        t        j                  d      | _        t        j                  d      | _        t        j                  j                  | j                  d      t        j                  j                  | j                  dd      ft        j                  j                  t        j                          d	d
d      t        j                  j                  t        j                          d	d
dd      fg}|D ]:  \  | _        | _        t        j                  j'                  | j"                        s: n% d\  | _        | _        t(        j+                  d       i dt,        dt,        dt,        dt,        dt,        dt,        dt.        dt0        dt,        dt,        dt2        dt,        dt,        dt,        dt,        dt,        dt,        i dt2        dt,        d t,        d!t,        d"t,        d#t,        d$t,        d%t,        d&t,        d't4        d(t.        d)t,        d*t0        d+t6        d,t6        d-t6        d.t,        t4        t4        t,        t0        t0        d/| _        i d0t0        d1t0        d2t0        d3t.        d4t0        d5t0        d6t0        d7t0        d8t,        d9t,        d:t,        d;t0        d<t0        d=t0        d>t0        d?t,        d@t0        t0        t,        t0        t0        t0        t,        t,        t,        t,        t,        t.        t.        dA| _        i t        j                  dBt
        j<                        t,        t        j                  dCt
        j<                        t,        t        j                  dDt
        j<                        t0        t        j                  dEt
        j<                        t0        t        j                  dFt
        j<                        t.        t        j                  dGt
        j<                        t,        t        j                  dHt
        j<                        t,        t        j                  dIt
        j<                        t,        t        j                  dJt
        j<                        t,        t        j                  dKt
        j<                        t.        t        j                  dLt
        j<                        t0        t        j                  dMt
        j<                        t,        t        j                  dNt
        j<                        t.        t        j                  dOt
        j<                        t,        t        j                  dPt
        j<                        t.        t        j                  dQt
        j<                        t0        t        j                  dRt
        j<                        t.        t        j                  dSt
        j<                        t.        t        j                  dTt
        j<                        t0        i| _        i | _         y )UNz	^\[(.*)\]z^\%include (.*)z	^\%(.*)\%z^([^=]+)=(.*)z^(\d{1,2})/(\d{1,2})/(\d{4,4})z
models.dat
unreleasedzunreleased.datdatamodels)NNz Unable to locate models.dat filez
align-typez
clean-typezcolor-cal-typez	copy-typezembedded-server-typezfax-typezfw-downloadiconzio-mfp-modezio-modez
io-supportzjob-storagezmonitor-typezlinefeed-cal-typezpanel-check-typez
pcard-typepluginzplugin-reasonzpower-settingszpq-diag-typezr-typez	scan-typezscan-srczstatus-battery-checkzstatus-dynamic-counterszstatus-typezsupport-subtypezsupport-releasedzsupport-typezsupport-verz
tech-classzfamily-classztech-subclassz	tech-type)zusb-pidzusb-vidzwifi-configzppd-namez
family-ppdzdev-filezfax-urizscan-urizis-hphostzstatus-desczcups-printersserialzerror-statezdevice-statepanelz
device-urizpanel-line1zpanel-line2zback-endportdeviceid)zcups-urizstatus-codersrrrgrduplexerzsupply-doorrevisionz
media-pathztop-doorz
photo-trayz^r(\d+)-agent(\d+)-kindz^r(\d+)-agent(\d+)-typez^r(\d+)-agent(\d+)-skuz^agent(\d+)-descz^agent(\d+)-virginz^agent(\d+)-dvcz^agent(\d+)-kindz^agent(\d+)-typez^agent(\d+)-idz^agent(\d+)-hp-inkz^agent(\d+)-health-descz^agent(\d+)-health$z^agent(\d+)-knownz^agent(\d+)-levelz^agent(\d+)-ackz^agent(\d+)-skuz^in-tray(\d+)z^out-tray(\d+)z^model(\d+))!prop
models_dir	root_path_ModelData__cachereset_includesrecompilesecIincinc_lineeqdateospathr   getcwdreleased_datunreleased_datexistsr   r   TYPE_INT	TYPE_BOOLTYPE_STRTYPE_BITFIELDTYPE_HEX	TYPE_LISTFIELD_TYPESFIELD_TYPES_DYN
IGNORECASERE_FIELD_TYPES
TYPE_CACHE)selfr   filess      r   __init__zModelData.__init__D  s7   !__DN&DN::l+::0"$$7

<0**-.JJ@A	'',,t~~|<'',,t~~|=MNP'',,ryy{FHlK'',,ryy{FHlL\]_`
 7< 	:2Dt2ww~~d//0	:
 6@2Dt2II89*8* 8* x	*
 (* #X* * I* X* H* * =* H* X*  (*  !*" 8#*$ x%*& m'*( h)** X+*, x-*. (/*0 1*4 #X5*6 &7*8 H9*: ;*< =*> X?*@ HA*B 9C*D YE*F iG*H (I*J ! #!#S*X     	 
 i  X  H  h  x  H  X  h  8  H  H   ! " X# $ % & "$!$!#"$= BJJ12==AHJJ12==AH JJ0"--@8 JJ*BMM:X	
 JJ,bmm<y JJ)2==9H JJ*BMM:X JJ*BMM:X JJ("--88 JJ,bmm<y JJ12==AH JJ-r}}= JJ+R]];i JJ+R]];h JJ)2==9I  JJ)2==9H!" JJ'7)#$ JJ("--89JJ~r}}5', r   c                 B   t         j                  j                  | j                        rk| j	                  | j                         | j
                  Dt         j                  j                  | j
                        r| j	                  | j
                         | j                  S N)r   r   r   r   read_sectionr   r   )r   r   s     r   read_all_fileszModelData.read_all_files  sk    77>>$++,d//0"".277>>$BUBU3V!!$"5"57||r   c                 
   d\  }}|I|j                         }|rt        j                  d|d|       nt        j                  d|d|       |r| j                  }n| j                  }	 t        |      }	 |j                         }	|	sn|	d
   dv r|	d
   dk(  rr|r|n| j                  j                  |	      }
|
Nd	}|
j                  d      j                         }|||k(  x}}|r"|t        j                  d|d|       i ||<   |	d
   dk(  r| j                  j                  |	      }
|
|
j                  d      }t        j                  d|z         | j                  j!                  t"        j$                  j'                  t"        j$                  j)                  |      |             =|rV| j*                  j                  |	      }
|
9|
j                  d      }t        j                  d|z         	 | j                  |    |rY| j0                  j                  |	      }
|
<|
j                  d      }|
j                  d      }| j3                  ||      }||   |<   |j5                          |S # t        $ r0}t        j                  d|d|j                  d       Y d }~yd }~ww xY w# t,        $ rA | j                  D ]  }| j/                  ||d	      s n t        j                  d|z         Y w xY w)N)FFzSearching for include [z
] in file zSearching for section [zI/O Error: z ()FTr   )#;[r   zFound section [%z*Found include file directive: %%include %szFound include directive %%%s%%zInclude %%%s%% not found.r   )r   r   debug_ModelData__includesr   openIOErrorr   strerrorreadliner   r   groupr   match_ModelData__include_filesr   r   r   r   dirnamer   KeyErrorr   r   convert_dataclose)r   filenamesection
is_includefound
in_sectioncachefdeliner   r   inc_fileinc_sectr   keyvalues                    r   r   zModelData.read_section  s   (zmmoG		WhWX		WhWXOOELLE	hB
 ;;=DAw*$Aw#~'"5-$!%J#(;;q>#7#7#9L*.:g.EF
!".IIW_&`a.0l+Aw#~t,$${{1~HIIJXUV((//RWW__X=VX`0ab MM//5E(#(;;q>		"BX"MNR OOH5 t,$++a.C!KKNE --c59E/4E,',A D 	
O  	IIh

CD	j  ( R'+';'; R#'#4#4S(D#I$)R
 !$		*E*P QRs0   -I< >J8 <	J5&J00J58+L$LLc                      g | _         i | _        y r   )r   r   r   s    r   r   zModelData.reset_includes+  s    !r   c                 *   |j                         }	 | j                  |   S #  t        j                  d|z         t        j                  d| j                  z         | j                  | j                  |      r| j                  |   cY S | j                  xt        j                  j                  | j                        rOt        j                  d| j                  z         | j                  | j                  |      r| j                  |   cY S i cY S xY w)NzCache miss: %szReading file: %s)
r   r   r   r   r   r   r   r   r   r   )r   r   s     r   __getitem__zModelData.__getitem__0  s    	<<&&	II&./II(4+<+<<=  !2!2E:||E**"".277>>$BUBU3V		,t/B/BBC$$T%8%8%@<<..Is   ! A'D
BDDc                     | j                   S r   )r   r  s    r   
all_modelszModelData.all_modelsF  s    ||r   c                    	 | j                   |   S # t        $ r 	 | j                  |   cY S # t        $ r} 	 | j                  |   cY cY S # t        $ rZ t	        | j
                  j                               D ]1  \  }}|j                  |      }||| j                  |<   |c cY cY cY S  Y nw xY wY nw xY wY nw xY wt        j                  d|z         y )Nz4get_data_type(): Field type lookup failed for key %s)
r   r   r   r   listr   itemsr   r   r   )r   r  pattypr   s        r   get_data_typezModelData.get_data_typeJ  s    	'##C(( 	'
'++C00 ''??3// '$()<)<)B)B)D$E 'S #		# ,36DOOC0#&JJ	'''	''	' 			H3NOsq    	B8,B8	B2A	B2B8	AB,B,"B2$B8(B,)B2+B,,B2/B81B22B87B8c                 (   || j                  |      }|t        t        fv r	 t        |      }|S |t        k(  rt        j                  |      }|S |t        k(  r#|j                  d      D cg c]  }|s|	 }}|S |t        k(  rt        r| j                  j!                  |      }|et        |j#                  d            }t        |j#                  d            }t        |j#                  d            }t%        j                  |||      }|S |t&        k(  r	 t        |d      }|S |S # t        t
        f$ r! t        j                  d|d|       d}Y |S w xY wc c}w # t        t
        f$ r! t        j                  d	|d|       d}Y |S w xY w)
NzInvalid value in .dat file: =r   ,r   r   r      z Invalid hex value in .dat file: )r  r   r   int
ValueError	TypeErrorr   r   r   r   to_boolr   r   	TYPE_DATEdatetime_availr   r   r   datetimer   )	r   r  r  r  r   r   monthdayyears	            r   r   zModelData.convert_data^  s   ;$$S)CM8,,E
< 3 IMM%(E0 - I %C 061AQ6E6* ' I		((/$A/Eekk!n-Cu{{1~.D$MM$s;E  H_E2
 u; 	* 		eLM6 ; 7" 	* 		S%PQ	s/   D) ,E4EE! ),EE!,FFr   )T)NF)__name__
__module____qualname__r   r   r   r   r  r  r  r    r   r   r   r   C  s.    ~BYx
,($r   r   )&gr   r   sixextr   os.pathr   r   r%  r$  ImportErrorr   r   r   TYPE_UNKNOWNTYPE_STRINGr   r   r   r   r   r   TYPE_URIr#  FAMILY_CLASSESTECH_CLASSESsortTECH_CLASS_PDLSPDL_TYPE_PCLPDL_TYPE_PSPDL_TYPE_PDFPDL_TYPE_HOST	PDL_TYPESTECH_SUBCLASSESr   r   r   r   r,  r   r   <module>r>     s  ,     	N rzz,-			WQf    ITI %I V	I VI VI WI WI VI VI VI VI VI  V!I$ V%I& V'I( V)I* V+I, V-I. V/I0 W1I2 W3I4 W5I6 V7I8 V9I: V;I< V=I> V?I@ UAIB UCID UEIF VGIH VIIJ VKIL UMIN VOIP VQIR VSIT gUIV gWIX fYIZ f[I\ f]I^ f_I` 6aIb VcId VeIf FgIh ViIj kIl vmIn oIp &qIr &sIt uIv wIx fyIz g{I| f}I~ fI@ fAIB fCID VEIF GIH VIIJ VKIL VMIN VOIV 
\
\ \ l	
 
L l 	;  m 
M  
M  ] 
M  !" 	=#$ m%	,!F     )3).)-). #0k G	  NHs   F( (	F54F5