{"pull_request":{"user":{"id":335383,"login":"larsmans","url":"https://api.github.com/users/larsmans","avatar_url":"https://secure.gravatar.com/avatar/56e17cbc8c5ea5b37d67018db6d030b0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"56e17cbc8c5ea5b37d67018db6d030b0"},"created_at":"2011-12-11T14:00:41Z","merged_at":"2011-12-17T22:46:46Z","title":"Safe file handling","review_comments":0,"state":"closed","updated_at":"2011-12-17T22:46:46Z","id":581413,"patch_url":"https://github.com/joblib/joblib/pull/16.patch","closed_at":"2011-12-17T22:46:46Z","html_url":"https://github.com/joblib/joblib/pull/16","deletions":48,"mergeable":null,"base":{"user":{"id":332661,"login":"joblib","url":"https://api.github.com/users/joblib","avatar_url":"https://secure.gravatar.com/avatar/24eaaf51e1dbdba3e896337f1b8c4416?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"24eaaf51e1dbdba3e896337f1b8c4416"},"ref":"0.5.X","sha":"658e47d23f0bcdc548afbf943719c244dbb2b84c","repo":{"watchers":46,"git_url":"git://github.com/joblib/joblib.git","created_at":"2010-05-07T06:48:26Z","open_issues":5,"updated_at":"2011-12-17T22:46:47Z","fork":false,"id":654608,"language":"Python","html_url":"https://github.com/joblib/joblib","name":"joblib","description":"Python function as pipeline jobs.","master_branch":"0.5.X","ssh_url":"git@github.com:joblib/joblib.git","url":"https://api.github.com/repos/joblib/joblib","pushed_at":"2011-12-17T22:46:47Z","clone_url":"https://github.com/joblib/joblib.git","forks":17,"owner":{"id":332661,"login":"joblib","url":"https://api.github.com/users/joblib","avatar_url":"https://secure.gravatar.com/avatar/24eaaf51e1dbdba3e896337f1b8c4416?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"24eaaf51e1dbdba3e896337f1b8c4416"},"homepage":"http://packages.python.org/joblib/","size":248,"private":false,"svn_url":"https://svn.github.com/joblib/joblib"},"label":"joblib:0.5.X"},"issue_url":"https://github.com/joblib/joblib/issues/16","body":"Two patches for somewhat safer file and directory manipulation (race conditions, exceptions, etc.).\r\n\r\nI've used `from __future__ import with_statement` to ensure Python 2.5 compatibility. I wasn't sure which Python version you're targeting.","commits":2,"number":16,"additions":66,"url":"https://api.github.com/repos/joblib/joblib/pulls/16","_links":{"review_comments":{"href":"https://api.github.com/repos/joblib/joblib/pulls/16/comments"},"html":{"href":"https://github.com/joblib/joblib/pull/16"},"self":{"href":"https://api.github.com/repos/joblib/joblib/pulls/16"},"comments":{"href":"https://api.github.com/repos/joblib/joblib/issues/16/comments"}},"diff_url":"https://github.com/joblib/joblib/pull/16.diff","merged_by":{"id":208217,"login":"GaelVaroquaux","url":"https://api.github.com/users/GaelVaroquaux","avatar_url":"https://secure.gravatar.com/avatar/5c9fb379c4e97b58960d74dcbfc5dee5?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"5c9fb379c4e97b58960d74dcbfc5dee5"},"comments":0,"head":{"user":{"id":335383,"login":"larsmans","url":"https://api.github.com/users/larsmans","avatar_url":"https://secure.gravatar.com/avatar/56e17cbc8c5ea5b37d67018db6d030b0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"56e17cbc8c5ea5b37d67018db6d030b0"},"ref":"safe-file-handling","sha":"40785e5c478187e1a56d986a90309be34461fff0","repo":{"watchers":1,"git_url":"git://github.com/larsmans/joblib.git","created_at":"2011-07-09T10:21:35Z","open_issues":0,"updated_at":"2011-12-11T13:59:34Z","fork":true,"id":2021862,"language":"Python","html_url":"https://github.com/larsmans/joblib","name":"joblib","description":"Python function as pipeline jobs.","master_branch":"0.5.X","ssh_url":"git@github.com:larsmans/joblib.git","url":"https://api.github.com/repos/larsmans/joblib","pushed_at":"2011-12-11T13:59:33Z","clone_url":"https://github.com/larsmans/joblib.git","forks":0,"owner":{"id":335383,"login":"larsmans","url":"https://api.github.com/users/larsmans","avatar_url":"https://secure.gravatar.com/avatar/56e17cbc8c5ea5b37d67018db6d030b0?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"56e17cbc8c5ea5b37d67018db6d030b0"},"homepage":"http://packages.python.org/joblib/","size":124,"private":false,"svn_url":"https://svn.github.com/larsmans/joblib"},"label":"larsmans:safe-file-handling"},"changed_files":4,"merged":true},"number":16,"action":"closed"}