139 def zipdir(directory, no_pyc=False):
140 filename = os.path.realpath(directory +
".zip")
141 log = logging.getLogger(
"zipdir")
142 if not os.path.isdir(directory):
143 log.warning(
'directory %s missing, creating empty .zip file',
145 open(filename,
"ab").close()
147 msg =
"Zipping directory '%s'" 149 msg +=
" (without pre-compilation)" 150 log.info(msg, directory)
153 if os.path.exists(filename):
154 zipFile = open(filename,
"r+b")
159 zipFile = open(filename,
"ab")
162 if zipfile.is_zipfile(filename):
163 infolist = zipfile.ZipFile(filename).infolist()
166 (added, modified, untouched, removed) =
_zipChanges(
168 if added
or modified
or removed:
170 z = zipfile.PyZipFile(tempBuf,
"w", zipfile.ZIP_DEFLATED)
171 for f
in added + modified + untouched:
172 src = os.path.join(directory, f)
175 log.debug(
"adding '%s'", f)
179 if os.path.exists(src +
'c'):
180 log.debug(
"removing old .pyc for '%s'", f)
182 log.debug(
"adding '%s'", f)
183 z.writepy(src, os.path.dirname(f))
186 zipFile.write(tempBuf.getvalue())
188 log.info(
"File '%s' closed", filename)
190 log.info(
"Nothing to do on '%s'", filename)
191 except UnicodeDecodeError
as x:
192 log.error(
"Wrong encoding in file '%s':", src)
194 log.error(
"Probably you forgot the line '# -*- coding: utf-8 -*-'")
def checkEncoding(fileObj)
def _zipChanges(directory, infolist)
def zipdir(directory, no_pyc=False)