Skip to content

Instantly share code, notes, and snippets.

@internetimagery
internetimagery / temp.py
Last active October 16, 2015 14:57
temp file different approach
import os
import os.path
class Temp_Path(str):
def __del__(s):
if os.path.isfile(s): os.remove(s)
def __getattribute__(s, k):
if k[0] == "_": return str.__getattribute__(s, k)
raise AttributeError, "\"%s\" cannot be modified with \"%s\"" % (s.__class__.__name__, k)
@internetimagery
internetimagery / timer.py
Last active October 17, 2015 12:02
Simple code timer.
class Timer(object):
verbose = False
def __init__(s, name):
from time import time
s.time = time
s.name = name
def __enter__(s): s.start = s.time()
def __exit__(s, *err):
if s.verbose: print "%s...\t\tElapsed time: %sms." % (s.name, (s.time() - s.start) * 1000)
@internetimagery
internetimagery / archive.py
Last active October 19, 2015 02:53
Dict - like interface for zipfile
import shutil
import os.path
import zipfile
import collections
try:
import zlib
compress = zipfile.ZIP_DEFLATED
except ImportError:
compress = zipfile.ZIP_STORED
@internetimagery
internetimagery / scriptjobErr.py
Last active October 19, 2015 12:15
Display exceptions during scriptjob
import traceback
try:
pass
# Do scriptjob code in here. Since Scriptjobs do not display exceptions, do it ourselves.
except:
print traceback.format_exc()
raise
@internetimagery
internetimagery / thread.py
Created October 28, 2015 11:23
Maya threaded function queue test
import time
import threading
import collections
import maya.cmds as cmds
import maya.utils as utils
class window(object):
def __init__(s):
name = "Testwindow"
s.maya = Maya()
@internetimagery
internetimagery / diff.py
Last active November 4, 2015 02:38
Dict wrapper that tracks changes
try:
import cPickle as pickle
except ImportError:
import pickle
class Dict(dict):
"""
Dict that tracks changes. Changes = (New, Changed, Removed)
"""
def __init__(s, *args, **kwargs):
@internetimagery
internetimagery / DB.py
Last active November 6, 2015 18:56
Generic wrapper for database style storage
import collections
class DB(collections.MutableMapping):
""" Database Interface """
_default = object()
def __init__(s):
s._cnt = 0
s._del = set()
with s: s._data = dict((a, s._default) for a in s.initkeys())
def __enter__(s):
@internetimagery
internetimagery / unique.py
Last active November 7, 2015 05:17
Uniquify list
# http://www.peterbe.com/plog/uniqifiers-benchmark
def unique(lst):
a = set(lst)
return [b for b in lst if b in a and not a.remove(b)]
@internetimagery
internetimagery / vector.py
Last active November 10, 2015 12:35
3D Stuff
import math, collections
class Vector(tuple):
__slots__ = ()
def __neg__(s): return s.__class__(-a for a in s)
def __pos__(s): return s.__class__(+a for a in s)
def __ne__(s, v): return False if s == v else True
magnitude = property(lambda s: math.sqrt(sum(s * s))) # |s|
def __nonzero__(s): return 1 != len(set(a for a in s if not a))
def __add__(s, v): return s.__class__(a + b for a, b in zip(s, v))
def __div__(s, v): return s.__class__(a / b for a, b in zip(s, v))
@internetimagery
internetimagery / connections.py
Created November 24, 2015 10:21
Turning Mayas twin list output into a dictionary
import maya.cmds as cmds
sel = cmds.ls(sl=True)
conn = iter(cmds.listConnections(sel, c=True))
conn = dict(zip(conn, conn))
print conn