;iZdZddlmZddlZddlmZddlmZm Z ddl m Z ddl m Z mZmZmZmZmZmZmZmZddl mZeZed d ed d ed deddeddGddeZGddeZedd edd gZedezeedezeeddeddgZGddeZdS) z File manifest ) MimeTypesN) Serialisable)StringSequence) fromstring) ARC_CONTENT_TYPES ARC_THEME ARC_STYLE THEME_TYPE STYLES_TYPE CONTYPES_NSACTIVEXCTRLVBA)tostringzapplication/xmlz.xmlz8application/vnd.openxmlformats-package.relationships+xmlz.relsz$application/vnd.ms-office.vbaProjectz.binz8application/vnd.openxmlformats-officedocument.vmlDrawingz.vmlz image/x-emfz.emfc@eZdZdZeZeZdZdS) FileExtensionDefaultc"||_||_dSN) Extension ContentType)selfrrs OC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\openpyxl/packaging/manifest.py__init__zFileExtension.__init__)s"&N)__name__ __module__ __qualname__tagnamerrrrrrrr"s>GI&((K'''''rrc@eZdZdZeZeZdZdS)Overridec"||_||_dSrPartNamer)rr&rs rrzOverride.__init__5s  &rN)rrrr rr&rrr!rrr#r#.s>GvxxH&((K'''''rr#relsxml/z/docProps/core.xmlz:application/vnd.openxmlformats-package.core-properties+xmlz/docProps/app.xmlzEapplication/vnd.openxmlformats-officedocument.extended-properties+xmlceZdZdZeedZeedZdZdZ ddZ e dZ e d Z fd Zd Zd Zd ZdZdZdZdZxZS)ManifestTypesT) expected_typeuniquez[Content_Types].xml)rr#r!cF|st}||_|st}||_dSr) DEFAULT_TYPESrDEFAULT_OVERRIDEr#)rrr#s rrzManifest.__init__Qs0 $#G  ('H  rc$d|jDS)Ncg|] }|j Sr!)r&.0parts r z&Manifest.filenames.._s888$ 888r)r#)rs r filenameszManifest.filenames]s88$-8888rcVd|jD}dt|DS)z\ Map content types to file extensions Skip parts without extensions cbh|],}tj|jd-S))ospathsplitextr&r4s r z&Manifest.extensions..hs/NNN  //3NNNrcVg|]&}||ddtjd|f'S)NT) mimetypes types_map)r5exts rr7z'Manifest.extensions..is8YYYcUXYQRR)-d3C89YYYr)r#sorted)rextss r extensionszManifest.extensionsbs4 ON NNNYYVD\\YYYYrcd|jD}|jD]3\}}||vr*t||}|j|4t }|dt|S)zR Custom serialisation method to allow setting a default namespace cg|] }|j Sr!)r)r5ts rr7z$Manifest.to_tree..ps666AAK666rxmlns)rrGrappendsuperto_treesetr )rdefaultsrDmimetree __class__s rrNzManifest.to_treels76666 * *IC(""$S$// ##D)))ww   +&&& rc6|jD]}|j|krdSdS)zF Check whether a particular content type is contained TNr#rr content_typerJs r __contains__zManifest.__contains__zs8  A} ,,tt-  rcj t||S#t$rYdSwxYw)z, Find specific content-type N)nextfindall StopIteration)rrWs rfindz Manifest.findsC  \2233 3    FF s !$ 22c#<K|jD]}|j|kr|VdS)z> Find all elements of a specific content-type NrUrVs rr[zManifest.findalls:  A} ,,  rcpt|j|j}|j|dS)zZ Add content object to the package manifest # needs a contract... r%N)r#r= mime_typerL)robjcts rrLzManifest.appends6 sxS] C C C R     rc||||||||jt |dS)z/ Write manifest to the archive )r8N)rL _write_vba_register_mimetypesnamelistwritestrr=rrN)rarchiveworkbooks r_writezManifest._writesy H !!!   7+;+;+=+= >>>HT\\^^$<$<=====rc|D]t}tj|d}|s*tjd|}t |dd|}|j|udS)zT Make sure that the mime type for all file extensions is registered r;TrAN)r<r=r>rBrCrrrL)rr8fnrDrQfes rrezManifest._register_mimetypess $ $B'""2&&r*C &t,S1Ds122w--B L   # # # #  $ $rcD|jrt|jt}t|}|j}|jD]C}|jtttfvr|j|vr|j |BdSdS)zI Add content types from cached workbook when keeping VBA N) vba_archiverreadrr+ from_treer8r#r&rrrrL)rrinodemfr8overrides rrdzManifest._write_vbas   3h2778IJJKKD##D))BIK 3 3$WdC,@@@$I55M((222 3 3 3 3r)r!r!)rrrr rrrr#r= __elements__rpropertyr8rGrNrXr]r[rLrjrerd __classcell__)rSs@rr+r+Gs-Gh]4@@@Gxht<<>> $ $ $ 3 3 3 3 3 3 3rr+)__doc__rBros.pathr<!openpyxl.descriptors.serialisableropenpyxl.descriptorsrropenpyxl.xml.functionsropenpyxl.xml.constantsrr r r r r rrrradd_typerr#r0r1r+r!rrrsv ::::::11111111------                      ,+++++ IKK $f--- MwWWW 96BBB MvVVV =&))) ' ' ' ' 'L ' ' ' ' ' ' ' '| ' ' 'M&TUUM%*++  HS9_k** HS9_j)) H !#_`` H "ijj {3{3{3{3{3|{3{3{3{3{3r