def recurse_dep(dep): global autofiles global srcfiles global missing if dep in ruleset: return None if dep in srcfiles or dep in autofiles: return None debug("Looking for dependancy '%(dep)s'" % locals()) # Is the dependancy matched by a rule? rule = rules.match(dep) if rule: ( targets, deplist, commands ) = rule add_rule(targets, deplist, commands) debug("Found '%(dep)s' as rule %(targets)s => %(deplist)s" % locals()) return deplist # Is the dependancy an automatic file? if files.copy(dep): # If so, add it to the automatic files list. debug("Found '%(dep)s' as an automatic file" % locals()) autofiles.append(dep) return # Is the dependancy a source file? # If so, add it to the source files list. try: os.stat(dep) debug("Found '%(dep)s' as source" % locals()) srcfiles.append(dep) return except OSError: print("Missing dependancy: '%s'" % dep) missing.append(dep)
def scan_cpp(filename, already=None): if not already: already = {} if filename in already: return if files.copy(filename) or rules.match(filename): return [filename] already[filename] = None path = os.path.split(filename)[0] file = read(filename) if file is None: raise IOError deps = [filename] match = rx_include.search(file) build_incpaths = files.readlines("build-includes") or [] incpaths = ["", path] + build_incpaths while match: inctype, inc = match.groups() incs = [] if inctype == "<" else [inc] for incpath in incpaths: try: incs = scan_cpp(os.path.join(incpath, inc), already) except IOError: continue if incs is not None: break deps.extend(incs or []) match = rx_include.search(file, match.end()) return deps
def resize(filename, width, height, destination=None, animate=False): in_place = False if not destination: destination = filename + '.new' in_place = True im = read(filename) if not image_extension(im): raise WeasylError("FileType") files.ensure_file_directory(filename) im = correct_image_and_call(_resize, im, width, height) if im is not None: im.write(destination) if in_place: os.rename(destination, filename) # if there's no need to resize, in-place resize is a no-op. otherwise copy # the source to the destination. elif not in_place: files.copy(filename, destination)
def copy_tamarin_headers(target): print ">> core" files.copy("../tamarin/core/*.h", target + "/caspin/tamarin/core/") print ">> vmpi" files.copy("../tamarin/vmpi/*.h", target + "/caspin/tamarin/vmpi/") print ">> platform" files.copy("../tamarin/platform/*.h", target + "/caspin/tamarin/platform/") files.copy("../tamarin/platform/win32/*.h", target + "/caspin/tamarin/platform/win32/") print ">> mmgc" files.copy("../tamarin/mmgc/*.h", target + "/caspin/tamarin/mmgc/") print ">> nanojit" files.copy("../tamarin/nanojit/*.h", target + "/caspin/tamarin/nanojit/") print ">> eval" files.copy("../tamarin/eval/*.h", target + "/caspin/tamarin/eval/") print ">> extensions" files.copy("../tamarin/extensions/*.h", target + "/caspin/tamarin/extensions/") shutil.copy("../tamarin/core/builtin.abc", target + "/caspin/tamarin/core/") shutil.copy("../tamarin/shell/avmshell-features.h", target + "/caspin/tamarin/shell/") shutil.copy("../tamarin/utils/asc.jar", target + "/caspin/tamarin/utils/") shutil.copy("../tamarin/utils/nativegen.py", target + "/caspin/tamarin/utils/")
shutil.copy(obj_dir + "Release_Debugger/avm.lib", lib_release + "avm_debugger.lib") shutil.copy(obj_dir + "Debug_Debugger/avm.lib", lib_debug + "avm_debugger.lib") # -------------------------------------- # ---------------- MAIN ---------------- # -------------------------------------- if target != "vc9" and target != "vc10": print "Error: invalid target specified: '" + target + "'" exit() create_dirs(target) print "copying caspin headers" files.copy("../include/*.h", target + "/caspin/include/") print "copying caspin libraries" files.copy("../lib/Release/*.lib", target + "/caspin/lib/Release/") files.copy("../lib/Debug/*.lib", target + "/caspin/lib/Debug/") print "copying caspin tools" shutil.copy("../tools/cspcompile.py", target + "/caspin/tools/") shutil.copy("../tools/cspgenerate.py", target + "/caspin/tools/") print "copying tamarin headers" copy_tamarin_headers(target) print "copying tamarin libraries" if target == "vc9": copy_tamarin_libs_vc9()
f.close() except IOError: f = open(logFile, 'w') f.write('"ID","Name","Services served","Ministries served","Date","Time"\n') f.close() f = open(logFile, 'rb') reader = csv.reader(f) readerTmp = [] for row in reader: readerTmp.append(row) f.close() print "Debug: latest write to CSV was '" + readerTmp[0][4]+"'" if readerTmp[0][4] != datetime.datetime.now().strftime("%a %d %B, %Y") and readerTmp[0][4] != 'Date': #copy to archive file and clear the old file. print "Debug: lastest write older than today; archiving data." files.copy(logFile, archiveFolder+ datetime.datetime.now().strftime("%Y-%m-%d.csv")) f = open(logFile, 'w') f.write('"ID","Name","Services served","Ministries served","Date","Time"\n') f.close() print "Debug: CSV data reset." global database database = 'database/users.db' handler = sql.Database(database) global displayCentre global resultList global querySelection resultList = []
def read(filename): tmp = files.read(filename) if tmp is None and files.copy(filename): tmp = files.read(filename) return tmp
def create(userid, character, friends, tags, thumbfile, submitfile): # Make temporary filenames tempthumb = files.get_temporary(userid, "thumb") tempsubmit = files.get_temporary(userid, "char") # Determine filesizes thumbsize = len(thumbfile) submitsize = len(submitfile) # Check invalid title or rating if not character.char_name: raise WeasylError("characterNameInvalid") elif not character.rating: raise WeasylError("ratingInvalid") profile.check_user_rating_allowed(userid, character.rating) # Write temporary thumbnail file if thumbsize: files.easyupload(tempthumb, thumbfile, "image") thumbextension = files.get_extension_for_category( thumbfile, m.ART_SUBMISSION_CATEGORY) else: thumbextension = None # Write temporary submission file if submitsize: files.easyupload(tempsubmit, submitfile, "image") submitextension = files.get_extension_for_category( submitfile, m.ART_SUBMISSION_CATEGORY) else: submitextension = None # Check invalid file data if not submitsize: files.clear_temporary(userid) raise WeasylError("submitSizeZero") elif submitsize > 10 * _MEGABYTE: files.clear_temporary(userid) raise WeasylError("submitSizeExceedsLimit") elif thumbsize > 10 * _MEGABYTE: files.clear_temporary(userid) raise WeasylError("thumbSizeExceedsLimit") elif submitextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("submitType") elif thumbsize and thumbextension not in [".jpg", ".png", ".gif"]: files.clear_temporary(userid) raise WeasylError("thumbType") # Assign settings settings = [] settings.append("f" if friends else "") settings.append(files.typeflag("submit", submitextension)) settings.append(files.typeflag("cover", submitextension)) settings = "".join(settings) # Insert submission data ch = define.meta.tables["character"] try: charid = define.engine.execute(ch.insert().returning(ch.c.charid), { "userid": userid, "unixtime": arrow.now(), "char_name": character.char_name, "age": character.age, "gender": character.gender, "height": character.height, "weight": character.weight, "species": character.species, "content": character.content, "rating": character.rating.code, "settings": settings, }).scalar() except PostgresError: files.clear_temporary(userid) raise # Assign search tags searchtag.associate(userid, tags, charid=charid) # Make submission file files.make_path(charid, "char") files.copy(tempsubmit, files.make_resource(userid, charid, "char/submit", submitextension)) # Make cover file image.make_cover(tempsubmit, files.make_resource(userid, charid, "char/cover", submitextension)) # Make thumbnail selection file if thumbsize: image.make_cover( tempthumb, files.make_resource(userid, charid, "char/.thumb")) thumbnail.create(userid, 0, 0, 0, 0, charid=charid, remove=False) # Create notifications welcome.character_insert(userid, charid, rating=character.rating.code, settings=settings) # Clear temporary files files.clear_temporary(userid) define.metric('increment', 'characters') return charid
def main(): found_ffmpeg = ffmpeg.find_ffmpeg() if not found_ffmpeg: exit(1) im_command = imagemagick.find_imagemagick() if im_command is None: exit(1) videos, images, reg_files = files.enumerate_files(sys.argv[1], sys.argv[2]) imagemagick.process_images(im_command, images) ffmpeg.process_videos(videos) files.copy(reg_files) video_sizes = [(os.stat(i).st_size, os.stat(o).st_size) for i, o in videos] image_sizes = [(os.stat(i).st_size, os.stat(o).st_size) for i, o in images] file_sizes = [(os.stat(i).st_size, os.stat(o).st_size) for i, o in reg_files] video_ratios = [i_s / o_s for i_s, o_s in video_sizes] image_ratios = [i_s / o_s for i_s, o_s in image_sizes] max_video, max_video_ratio, max_video_size = max(zip( videos, video_ratios, video_sizes), key=lambda v: v[1]) min_video, min_video_ratio, min_video_size = min(zip( videos, video_ratios, video_sizes), key=lambda v: v[1]) max_image, max_image_ratio, max_image_size = max(zip( images, image_ratios, image_sizes), key=lambda v: v[1]) min_image, min_image_ratio, min_image_size = min(zip( images, image_ratios, image_sizes), key=lambda v: v[1]) print( f" Most compressed video @ {max_video_ratio:6.2f}x - {files.sizeof_fmt(max_video_size[0])} -> {files.sizeof_fmt(max_video_size[1])}: {max_video[1]}" ) print( f"Least compressed video @ {min_video_ratio:6.2f}x - {files.sizeof_fmt(min_video_size[0])} -> {files.sizeof_fmt(min_video_size[1])}: {min_video[1]}" ) print( f" Most compressed image @ {max_image_ratio:6.2f}x - {files.sizeof_fmt(max_image_size[0])} -> {files.sizeof_fmt(max_image_size[1])}: {max_image[1]}" ) print( f"Least compressed image @ {min_image_ratio:6.2f}x - {files.sizeof_fmt(min_image_size[0])} -> {files.sizeof_fmt(min_image_size[1])}: {min_image[1]}" ) print() total_video_in = sum((in_size for in_size, _ in video_sizes)) total_video_out = sum((out_size for _, out_size in video_sizes)) total_image_in = sum((in_size for in_size, _ in image_sizes)) total_image_out = sum((out_size for _, out_size in image_sizes)) total_file_out = sum((out_size for _, out_size in file_sizes)) all_in = total_video_in + total_image_in + total_file_out all_out = total_video_out + total_image_out + total_file_out print( f"Video Compression @ {files.sizeof_fmt(total_video_in)} -> {files.sizeof_fmt(total_video_out)} {total_video_in / total_video_out:6.2f}x" ) print( f"Image Compression @ {files.sizeof_fmt(total_image_in)} -> {files.sizeof_fmt(total_image_out)} {total_image_in / total_image_out:6.2f}x" ) print(f" Unchanged Files @ {files.sizeof_fmt(total_file_out)}") print( f" Total Difference @ {files.sizeof_fmt(all_in)} -> {files.sizeof_fmt(all_out)} {all_in / all_out:6.2f}x" )
def files_tests(): from files import (readall, writeall, exists, copy, move, sep, run, isemptydir, listchildren, makedir, getname, listfiles, recursedirs, recursefiles, delete, runWithoutWaitUnicode) import tempfile import os import shutil tmpdir = tempfile.gettempdir() + sep + 'pytest' tmpdirsl = tmpdir + sep if not os.path.exists(tmpdir): os.mkdir(tmpdir) def cleardirectoryfiles(d): shutil.rmtree(d) os.mkdir(d) assertTrue(isemptydir(d)) # test copy_overwrite, source not exist cleardirectoryfiles(tmpdir) assertException(lambda: copy(tmpdirsl + 'src.txt', tmpdirsl + 'srccopy.txt', True), IOError) # test copy_overwrite, simple copy cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') copy(tmpdirsl + 'src.txt', tmpdirsl + 'srccopy.txt', True) assertEq('src', readall(tmpdirsl + 'srccopy.txt')) assertTrue(exists(tmpdirsl + 'src.txt')) # test copy_overwrite, overwrite cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') assertEq('src', readall(tmpdirsl + 'src.txt')) writeall(tmpdirsl + 'dest.txt', 'dest') assertEq('dest', readall(tmpdirsl + 'dest.txt')) copy(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', True) assertEq('src', readall(tmpdirsl + 'dest.txt')) assertTrue(exists(tmpdirsl + 'src.txt')) # test copy_nooverwrite, source not exist cleardirectoryfiles(tmpdir) assertException(lambda: copy(tmpdirsl + 'src.txt', tmpdirsl + 'srccopy.txt', False), IOError) # test copy_nooverwrite, simple copy cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') copy(tmpdirsl + 'src.txt', tmpdirsl + 'srccopy.txt', False) assertEq('src', readall(tmpdirsl + 'srccopy.txt')) # test copy_nooverwrite, simple overwrite should fail cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') assertEq('src', readall(tmpdirsl + 'src.txt')) writeall(tmpdirsl + 'dest.txt', 'dest') assertEq('dest', readall(tmpdirsl + 'dest.txt')) if sys.platform == 'win32': assertException(lambda: copy(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', False), IOError, 'CopyFileW failed') else: assertException(lambda: copy(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', False), OSError, 'File exists') assertEq('dest', readall(tmpdirsl + 'dest.txt')) # test move_overwrite, source not exist cleardirectoryfiles(tmpdir) assertException(lambda: move(tmpdirsl + 'src.txt', tmpdirsl + 'srcmove.txt', True), IOError) assertTrue(not exists(tmpdirsl + 'src.txt')) # test move_overwrite, simple move cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') move(tmpdirsl + 'src.txt', tmpdirsl + 'srcmove.txt', True) assertEq('src', readall(tmpdirsl + 'srcmove.txt')) assertTrue(not exists(tmpdirsl + 'src.txt')) # test move_overwrite, overwrite cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') assertEq('src', readall(tmpdirsl + 'src.txt')) writeall(tmpdirsl + 'dest.txt', 'dest') assertEq('dest', readall(tmpdirsl + 'dest.txt')) move(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', True) assertEq('src', readall(tmpdirsl + 'dest.txt')) assertTrue(not exists(tmpdirsl + 'src.txt')) # test move_nooverwrite, source not exist cleardirectoryfiles(tmpdir) assertException(lambda: move(tmpdirsl + 'src.txt', tmpdirsl + 'srcmove.txt', False), IOError) assertTrue(not exists(tmpdirsl + 'src.txt')) # test move_nooverwrite, simple move cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') move(tmpdirsl + 'src.txt', tmpdirsl + 'srcmove.txt', False) assertEq('src', readall(tmpdirsl + 'srcmove.txt')) assertTrue(not exists(tmpdirsl + 'src.txt')) # test move_nooverwrite, simple overwrite should fail cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') assertEq('src', readall(tmpdirsl + 'src.txt')) writeall(tmpdirsl + 'dest.txt', 'dest') assertEq('dest', readall(tmpdirsl + 'dest.txt')) if sys.platform == 'win32': assertException(lambda: move(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', False), IOError, 'MoveFileExW failed') else: assertException(lambda: move(tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt', False), OSError, 'File exists') assertEq('dest', readall(tmpdirsl + 'dest.txt')) assertTrue(exists(tmpdirsl + 'src.txt')) # test _checkNamedParameters assertException(lambda: list(listchildren(tmpdir, True)), ValueError, 'please name parameters') # tmpdir has files, dirs # tmpdir/s1 has no files, dirs # tmpdir/s1/ss1 has files, no dirs # tmpdir/s1/ss2 has no files, dirs cleardirectoryfiles(tmpdir) dirstomake = [tmpdir, tmpdirsl + 's1', tmpdirsl + 's1' + sep + 'ss1', tmpdirsl + 's1' + sep + 'ss2', tmpdirsl + 's2'] filestomake = [tmpdirsl + 'P1.PNG', tmpdirsl + 'a1.txt', tmpdirsl + 'a2png', tmpdirsl + 's1' + sep + 'ss1' + sep + 'file.txt', tmpdirsl + 's2' + sep + 'other.txt'] for dir in dirstomake: if dir != tmpdir: makedir(dir) for file in filestomake: writeall(file, 'content') # test listchildren expected = ['P1.PNG', 'a1.txt', 'a2png', 's1', 's2'] assertEq([(tmpdirsl + s, s) for s in expected], sorted(list(listchildren(tmpdir)))) assertEq(expected, sorted(list(listchildren(tmpdir, filenamesOnly=True)))) assertEq(['P1.PNG', 'a1.txt'], sorted(list(listchildren(tmpdir, filenamesOnly=True, allowedexts=['png', 'txt'])))) # test listfiles expected = ['P1.PNG', 'a1.txt', 'a2png'] assertEq([(tmpdirsl + s, s) for s in expected], sorted(list(listfiles(tmpdir)))) assertEq(expected, sorted(list(listfiles(tmpdir, filenamesOnly=True)))) assertEq(['P1.PNG', 'a1.txt'], sorted(list(listfiles(tmpdir, filenamesOnly=True, allowedexts=['png', 'txt'])))) # test recursefiles assertEq([(s, getname(s)) for s in filestomake], sorted(list(recursefiles(tmpdir)))) assertEq([getname(s) for s in filestomake], sorted(list(recursefiles(tmpdir, filenamesOnly=True)))) assertEq(['a1.txt', 'file.txt', 'other.txt'], sorted(list(recursefiles(tmpdir, filenamesOnly=True, allowedexts=['txt'])))) assertEq(['a1.txt', 'file.txt', 'other.txt'], sorted(list(recursefiles(tmpdir, filenamesOnly=True, allowedexts=['txt'], fnFilterDirs=lambda d: True)))) assertEq(['a1.txt'], sorted(list(recursefiles(tmpdir, filenamesOnly=True, allowedexts=['txt'], fnFilterDirs=lambda d: False)))) assertEq(['a1.txt', 'other.txt'], sorted(list(recursefiles(tmpdir, filenamesOnly=True, allowedexts=['txt'], fnFilterDirs=lambda dir: getname(dir) != 's1')))) assertEq(['a1.txt', 'file.txt'], sorted(list(recursefiles(tmpdir, filenamesOnly=True, allowedexts=['txt'], fnFilterDirs=lambda dir: getname(dir) != 's2')))) # test recursedirs assertEq(sorted([(s, getname(s)) for s in dirstomake]), sorted(list(recursedirs(tmpdir)))) assertEq(sorted([getname(s) for s in dirstomake]), sorted(list(recursedirs(tmpdir, filenamesOnly=True)))) assertEq(['pytest', 's2'], sorted(list(recursedirs(tmpdir, filenamesOnly=True, fnFilterDirs=lambda dir: getname(dir) != 's1')))) # test run process, simple batch script if sys.platform == 'win32': cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') writeall(tmpdirsl + 'script.bat', 'copy "%ssrc.txt" "%sdest.txt"'%(tmpdirsl, tmpdirsl)) assertTrue(not exists(tmpdirsl + 'dest.txt')) returncode, stdout, stderr = run([tmpdirsl + 'script.bat']) assertEq(0, returncode) assertTrue(exists(tmpdirsl + 'dest.txt')) # specify no capture and run again delete(tmpdirsl + 'dest.txt') returncode, stdout, stderr = run([tmpdirsl + 'script.bat'], captureoutput=False) assertEq(0, returncode) assertTrue(exists(tmpdirsl + 'dest.txt')) # run process with unicode characters delete(tmpdirsl + 'dest.txt') unicodepath = tmpdirsl + u'scr#1pt#2.bat'.replace('#1', u'\u012B').replace('#2', u'\u013C') writeall(unicodepath, 'copy "%ssrc.txt" "%sdest.txt"'%(tmpdirsl, tmpdirsl)) try: import time runWithoutWaitUnicode([unicodepath]) time.sleep(0.5) assertTrue(exists(tmpdirsl + 'dest.txt')) finally: delete(unicodepath) # test run process, batch script returns failure cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'script.bat', '\nexit /b 123') returncode, stdout, stderr = run([tmpdirsl + 'script.bat'], throwOnFailure=False) assertEq(123, returncode) # specify no capture and run again returncode, stdout, stderr = run([tmpdirsl + 'script.bat'], throwOnFailure=False, captureoutput=False) assertEq(123, returncode) # except exception assertException(lambda: run([tmpdirsl + 'script.bat']), RuntimeError, 'retcode is not 0') # specify no capture, except exception assertException(lambda: run([tmpdirsl + 'script.bat'], captureoutput=False), RuntimeError, 'retcode is not 0') # test run process, get stdout writeall(tmpdirsl + 'script.bat', '\n@echo off\necho testecho') returncode, stdout, stderr = run([tmpdirsl + 'script.bat']) assertEq(0, returncode) assertEq('testecho', stdout) assertEq('', stderr) # test run process, get stderr writeall(tmpdirsl + 'script.bat', '\n@echo off\necho testechoerr 1>&2') returncode, stdout, stderr = run([tmpdirsl + 'script.bat']) assertEq(0, returncode) assertEq('', stdout) assertEq('testechoerr', stderr) # test run process, get both. (this deadlocks if done naively, but it looks like subprocess correctly uses 2 threads.) writeall(tmpdirsl + 'script.bat', '\n@echo off\necho testecho\necho testechoerr 1>&2') returncode, stdout, stderr = run([tmpdirsl + 'script.bat']) assertEq(0, returncode) assertEq('testecho', stdout) assertEq('testechoerr', stderr) # test run process, send argument without spaces writeall(tmpdirsl + 'script.bat', '\n@echo off\necho %1') returncode, stdout, stderr = run([tmpdirsl + 'script.bat', 'testarg']) assertEq(0, returncode) assertEq('testarg', stdout) # test run process, send argument with spaces (subprocess will quote the args) writeall(tmpdirsl + 'script.bat', '\n@echo off\necho %1') returncode, stdout, stderr = run([tmpdirsl + 'script.bat', 'test arg']) assertEq(0, returncode) assertEq('"test arg"', stdout) # test run process, run without shell cleardirectoryfiles(tmpdir) writeall(tmpdirsl + 'src.txt', 'src') # won't work without the shell: assertException(lambda: run(['copy', tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt']), OSError) assertTrue(not exists(tmpdirsl + 'dest.txt')) # will work with the shell returncode, stdout, stderr = run(['copy', tmpdirsl + 'src.txt', tmpdirsl + 'dest.txt'], shell=True) assertEq(0, returncode) assertTrue(exists(tmpdirsl + 'dest.txt'))