Skip to main content

Log, catalogue, and move python objects via pickling

Project description


Catalogue python pickles to reduce development and troubleshooting time.


Smuggle organizes copies of python objects chronologically, using the pickle format, so that they can be retrieved in a new python session. This allows new approaches during development and troubleshooting production issues. Since objects can be moved from a prod to dev environment, smuggle becomes exceptionally handy for projects involving complicated cases or non-idempotent processes.

When used correctly, it can also reduce the need for verbosity in logging and certain types of error messages.


from smuggle import Smuggler

MySmuggler = Smuggler("C:\MyObjectLogFolder")

aList = [1,2,3]
aDict = {'a' : 1, 'b' : 2, 'c' : 3}

MySmuggler.smuggle(MyList=aList,MyDict=aDict,NoteToSelf="This is cool")



There are two forms of output & access; passphrases and payloads.


A passphrase is just auto-generated python code, which looks like this:

import pickle

# NoteToSelf of type 'str' was smuggled at 21:02:06, 2015/02/01
#   'This is cool'
NoteToSelf = pickle.load(open(r"C:\MyObjectLogFolder\NoteToSelf-2015-02-01-21-02-06.smug","rb"))

# MyList of type 'list' was smuggled at 21:02:06, 2015/02/01
#   [1, 2, 3]
MyList = pickle.load(open(r"C:\MyObjectLogFolder\MyList-2015-02-01-21-02-06.smug","rb"))

# MyDict of type 'dict' was smuggled at 21:02:06, 2015/02/01
#   {'a': 1, 'c': 3, 'b': 2}
MyDict = pickle.load(open(r"C:\MyObjectLogFolder\MyDict-2015-02-01-21-02-06.smug","rb"))

This output is just a copy+paste away from functioning in a new python file.


A payload is a collection of organized pickles accessible via the catalogue functions. There are many plans to expand the catalogue system (eg. SQLite, keyword, time, etc.). The current system is limited to a very simple file naming convention which includes the time and date. Payloads just scan a folder for .smug files. These files, are simply pickle files. No other changes are made to the file format.

>>> MyPayload = Payload("C:\MyObjectLogFolder")
>>> varlist = MyPayload.aslist()
>>> varlist
[{'a': 1, 'c': 3, 'b': 2}, [1, 2, 3], 'This is cool']



Works on 2.6, 2.7, 3.3 and 3.4.

Install (OSX, Linux, Posix)

The easiest way to install is with pip:

sudo pip install smuggle

Or manually (assuming all required modules are installed on your system):

sudo python ./ install

Instructions for Windows

  1. Start Menu > Accessories > Command Prompt
  2. Run the following command: pip install smuggle


Pull requests are welcome. To test, use nosetests smuggle or py.test.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (10.1 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page