{"action":"created","comment":{"url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/comments/203150557","pull_request_review_id":137984131,"id":203150557,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwMzE1MDU1Nw==","diff_hunk":"@@ -0,0 +1,236 @@\n+import copy\n+import tarfile\n+import os\n+import sys\n+import yaml\n+import subprocess\n+\n+# Open outer tar, the RPZ file\n+SINGULARITY_DIR = \"../../.singularity.d\"\n+RUN_ENV_FILE=\"90-environment.sh\"\n+ENV_DIR = SINGULARITY_DIR+\"/env\"\n+OVERLAY_IMAGE = \"repro_overlay.img\"\n+IMAGE_TAR_FILE = \"new.tar.gz\"\n+MOUNT_DIR = \"/mnt/\"\n+source_config=\"METADATA/config.yml\"\n+APP_DIR = \"../../app_structure/sample_app\"\n+SCIF_DIR = \"../../app_structure/scif\"\n+APP_ENV_DIR = APP_DIR+\"/scif/env\"\n+\n+\n+def write_env_file(env,env_file,apps=False):\n+    if apps:\n+        env_file = os.path.join(APP_ENV_DIR, env_file)\n+    else:\n+        env_file = os.path.join(ENV_DIR, env_file)\n+    with open(env_file, 'w+') as f:\n+        for key,value in env.items():\n+            f.write(key+\"='\"+value+\"'\\n\")\n+    bashCommand = \"chmod +x {}\".format(env_file)\n+    process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)\n+    output, error = process.communicate()\n+\n+  \n+\n+def make_runscript(workingdir, binary, run_file, apps=False):\n+    cmd = \"cd {0}\\n{1} {2}\".format(workingdir, binary, run_file)\n+    run_cmd = \"run()\\n{\\n echo \\\"Nothing to run. Run Apps!!\\\"\\n}\\n\\n\"\n+    if apps:\n+        with open(os.path.join(APP_DIR+\"/scif\",\"runscript\"), 'w') as f:\n+            f.write(cmd)\n+    else:\n+        run_cmd = \"run()\\n\"\n+        run_cmd += \"{\\n\\t\" + cmd + \"\\n}\\n\"\n+    upload_download_cmd = \"upload()\\n{\\n\"\n+    upload_download_cmd += \"\\tcp \" + MOUNT_DIR + \"\\\"$1\\\" \" + workingdir + \"\\n}\\n\\n\"\n+    upload_download_cmd += \"download()\\n{\\n\"\n+    upload_download_cmd += \"\\tcp {0}/\".format(workingdir) + \"\\\"$1\\\" \" + MOUNT_DIR + \"\\n}\\n\\n\"\n+    upload_download_cmd += \"if [ \\\"$#\\\" -gt 0 ]\\nthen \\n \\tcase \\\"$1\\\" in \\n\\t\\t\\\"upload\\\"|\\\"download\\\")\\n\\t\\t\\t\\\"$1\\\" \\\"$2\\\" \\n\\t\\t;;\\n\\t\\t*)\\n\\t\\techo \\\"Invalid arguments!!\\\" >&2\\n\\t\\texit 1\\n\\t\\t;;\\n\\tesac\\nelse\\n\\trun\\nfi\"\n+    with open(os.path.join(SINGULARITY_DIR, \"runscript\"), 'w') as f:\n+\tf.write(run_cmd)\n+        f.write(upload_download_cmd)\n+\n+def make_main_app_base_script(app_name):\n+    print(\"rached 94\")\n+    cmd =  \"SCIF_APPDATA_{0}=/scif/data/{1}\\n\".format(app_name,app_name)\n+    cmd += \"SCIF_APPMETA_{0}=/scif/apps/{1}/scif\\n\".format(app_name,app_name)\n+    cmd += \"SCIF_APPROOT_{0}=/scif/apps/{1}\\n\".format(app_name,app_name)\n+    cmd += \"SCIF_APPBIN_{0}=/scif/apps/{1}/bin\\n\".format(app_name,app_name)\n+    cmd += \"SCIF_APPLIB_{0}=/scif/apps/{1}/lib\\n\".format(app_name,app_name)\n+    cmd += \"export SCIF_APPDATA_{0} SCIF_APPROOT_{1} SCIF_APPMETA_{2} SCIF_APPBIN_{3} SCIF_APPLIB_{4}\\n\".format(app_name,app_name,app_name,app_name,app_name)\n+    cmd += \"SCIF_APPENV_{0}=/scif/apps/{1}/scif/env/90-environment.sh\\n\".format(app_name,app_name)\n+    cmd += \"export SCIF_APPENV_{0}\\n\".format(app_name)\n+    cmd += \"SCIF_APPLABELS_{0}=/scif/apps/{1}/scif/labels.json\\n\".format(app_name,app_name)\n+    cmd += \"export SCIF_APPLABELS_{0}\\n\".format(app_name)\n+    cmd += \"SCIF_APPRUN_{0}=/scif/apps/{1}/scif/runscript\\n\".format(app_name,app_name)\n+    cmd += \"export SCIF_APPRUN_{0}\\n\".format(app_name)\n+    with open(os.path.join(ENV_DIR, \"94-appsbase.sh\"), 'a') as f:\n+        f.write(cmd)\n+\n+\n+def make_app_specific_base_script(app_name):\n+    cmd = \"SCIF_APPNAME={}\\n\".format(app_name)\n+    cmd += \"SCIF_APPROOT=\\\"/scif/apps/{}\\\"\\n\".format(app_name)\n+    cmd += \"SCIF_APPMETA=\\\"/scif/apps/{}/scif\\\"\\n\".format(app_name)\n+    cmd += \"SCIF_DATA=\\\"/scif/data\\\"\\n\"\n+    cmd += \"SCIF_APPDATA=\\\"/scif/data/{}\\\"\\n\".format(app_name)\n+    cmd += \"SCIF_APPINPUT=\\\"/scif/data/{}/input\\\"\\n\".format(app_name)\n+    cmd += \"SCIF_APPOUTPUT=\\\"/scif/data/{}/output\\\"\\n\".format(app_name)\n+    cmd += \"export SCIF_APPDATA SCIF_APPNAME SCIF_APPROOT SCIF_APPMETA SCIF_APPINPUT SCIF_APPOUTPUT SCIF_DATA\\n\"\n+    with open(os.path.join(APP_ENV_DIR, \"01-base.sh\"), 'w') as f:\n+        f.write(cmd)\n+\n+# Check if bin is present in the tar if not add bin and sh\n+def copy_busybox(tar):\n+    if not \"bin\" in tar.getnames():\n+        print(\"bin is absent\")\n+        tar.add(\"../../bin\",arcname=\"bin\")\n+    elif not \"sh\" in tar.getnames():\n+        print(\"bin but no sh\")\n+        tar.add(\"../../bin/sh\", arcname='bin/sh')\n+\n+\n+def deleteContent(fName):\n+    with open(fName, \"w\"):\n+        pass\n+\n+def add_singularity_folder(tar):\n+    # check if the runs are multiple or single\n+    my_dict = yaml.load(open(source_config))\n+    runs = my_dict['runs']\n+    copy_busybox(tar)\n+    deleteContent(os.path.join(ENV_DIR, \"94-appsbase.sh\"))\n+    if len(runs) > 1:\n+\tprint(\"multiple runs\")\n+        # App structure is present\n+        # First add the SCIF folder \n+        tar.add(SCIF_DIR, arcname=\"scif\")\n+        for run in runs:\n+            binary = run['binary']\n+            workingdir = run['workingdir']\n+            run_file = run['argv'][1]\n+            app_name = run['id']\n+            make_runscript(workingdir, binary, run_file, apps=True)\n+            write_env_file(runs[0].get('environ'), RUN_ENV_FILE, apps=True)\n+            make_app_specific_base_script(app_name)\n+            make_main_app_base_script(app_name)\n+            # add the modified app.\n+            tar.add(APP_DIR, arcname=\"scif/apps/\" + app_name)\n+\n+    else:\n+        write_env_file(runs[0].get('environ'),RUN_ENV_FILE)\n+        make_runscript(runs[0]['workingdir'], runs[0]['binary'], runs[0]['argv'][1])\n+    tar.add(SINGULARITY_DIR, arcname=\".singularity.d\")\n+    \n+\n+\n+def setup(filename):\n+    rpz = tarfile.open(filename, 'r:*')\n+\n+    # Open the inner tar in the original, without extracting it to disk\n+    data = rpz.extractfile('DATA.tar.gz')\n+    tar = tarfile.open('DATA.tar.gz', fileobj=data)\n+\n+    # Open the new tar we're writing\n+    new = tarfile.open('new.tar.gz', 'w:gz')\n+    # For each member of the data tar\n+    for info in tar.getmembers():\n+        # Make a new TarInfo, removing the DATA/ prefix from the file name\n+        new_info = copy.copy(info)\n+        new_info.name = info.name[5:]\n+        if new_info.name:\n+            # Copy the file from the inner tar to the new tar\n+            if new_info.isreg():\n+                new.addfile(new_info, tar.extractfile(info.name))\n+            elif new_info.isdir():\n+                new.addfile(new_info)\n+            else:\n+                new.addfile(new_info)\n+    # Add the missing folders - proc,run, sys and temp_home\n+    folders = ['proc','dev','sys','temp_home','mnt']\n+    for folder in folders:\n+        new.add(\"../../missing_folders/\"+folder,folder)","path":"reprounzip-singularity/Singularity_unpacker.py","position":152,"original_position":152,"commit_id":"fc0b38bea3df12fe1575a99c6b07bc417817a0ed","original_commit_id":"fc0b38bea3df12fe1575a99c6b07bc417817a0ed","user":{"login":"remram44","id":426784,"node_id":"MDQ6VXNlcjQyNjc4NA==","avatar_url":"https://avatars3.githubusercontent.com/u/426784?v=4","gravatar_id":"","url":"https://api.github.com/users/remram44","html_url":"https://github.com/remram44","followers_url":"https://api.github.com/users/remram44/followers","following_url":"https://api.github.com/users/remram44/following{/other_user}","gists_url":"https://api.github.com/users/remram44/gists{/gist_id}","starred_url":"https://api.github.com/users/remram44/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/remram44/subscriptions","organizations_url":"https://api.github.com/users/remram44/orgs","repos_url":"https://api.github.com/users/remram44/repos","events_url":"https://api.github.com/users/remram44/events{/privacy}","received_events_url":"https://api.github.com/users/remram44/received_events","type":"User","site_admin":false},"body":"You can add an empty directory to the tar using:\r\n```python\r\nnew_info = tarfile.TarInfo(folder)\r\nnew_info.type = tarfile.DIRTYPE\r\nnew.addfile(new_info)\r\n```","created_at":"2018-07-17T19:30:27Z","updated_at":"2018-07-17T20:01:03Z","html_url":"https://github.com/ViDA-NYU/reprozip/pull/305#discussion_r203150557","pull_request_url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/comments/203150557"},"html":{"href":"https://github.com/ViDA-NYU/reprozip/pull/305#discussion_r203150557"},"pull_request":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305"}}},"pull_request":{"url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305","id":196536281,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk2NTM2Mjgx","html_url":"https://github.com/ViDA-NYU/reprozip/pull/305","diff_url":"https://github.com/ViDA-NYU/reprozip/pull/305.diff","patch_url":"https://github.com/ViDA-NYU/reprozip/pull/305.patch","issue_url":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/305","number":305,"state":"open","locked":false,"title":"Code review - Unpacking to Singularity","user":{"login":"remram44","id":426784,"node_id":"MDQ6VXNlcjQyNjc4NA==","avatar_url":"https://avatars3.githubusercontent.com/u/426784?v=4","gravatar_id":"","url":"https://api.github.com/users/remram44","html_url":"https://github.com/remram44","followers_url":"https://api.github.com/users/remram44/followers","following_url":"https://api.github.com/users/remram44/following{/other_user}","gists_url":"https://api.github.com/users/remram44/gists{/gist_id}","starred_url":"https://api.github.com/users/remram44/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/remram44/subscriptions","organizations_url":"https://api.github.com/users/remram44/orgs","repos_url":"https://api.github.com/users/remram44/repos","events_url":"https://api.github.com/users/remram44/events{/privacy}","received_events_url":"https://api.github.com/users/remram44/received_events","type":"User","site_admin":false},"body":"This is a draft. PR opened for code review.\r\n\r\nThis is a script that reads an RPZ file and generates a Singularity container. It will eventually be turned into an unpacker.\r\n\r\nA restriction is that we don't want to require root access, so we can't use `singularity build`. We want to write an image in single-file format (TAR, because squashfs is hard to write) directly.\r\n\r\ncc @khushnaseeb\r\nsee #267","created_at":"2018-06-21T18:20:38Z","updated_at":"2018-07-17T20:01:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9722b2733dc3931e68e96403720deaa8cf4139f3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":102695567,"node_id":"MDU6TGFiZWwxMDI2OTU1Njc=","url":"https://api.github.com/repos/ViDA-NYU/reprozip/labels/C-unpacker","name":"C-unpacker","color":"5319e7","default":false},{"id":97550936,"node_id":"MDU6TGFiZWw5NzU1MDkzNg==","url":"https://api.github.com/repos/ViDA-NYU/reprozip/labels/R-invalid","name":"R-invalid","color":"555555","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305/commits","review_comments_url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305/comments","review_comment_url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/305/comments","statuses_url":"https://api.github.com/repos/ViDA-NYU/reprozip/statuses/fc0b38bea3df12fe1575a99c6b07bc417817a0ed","head":{"label":"khushnaseeb:1.0.x","ref":"1.0.x","sha":"fc0b38bea3df12fe1575a99c6b07bc417817a0ed","user":{"login":"khushnaseeb","id":4659614,"node_id":"MDQ6VXNlcjQ2NTk2MTQ=","avatar_url":"https://avatars1.githubusercontent.com/u/4659614?v=4","gravatar_id":"","url":"https://api.github.com/users/khushnaseeb","html_url":"https://github.com/khushnaseeb","followers_url":"https://api.github.com/users/khushnaseeb/followers","following_url":"https://api.github.com/users/khushnaseeb/following{/other_user}","gists_url":"https://api.github.com/users/khushnaseeb/gists{/gist_id}","starred_url":"https://api.github.com/users/khushnaseeb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/khushnaseeb/subscriptions","organizations_url":"https://api.github.com/users/khushnaseeb/orgs","repos_url":"https://api.github.com/users/khushnaseeb/repos","events_url":"https://api.github.com/users/khushnaseeb/events{/privacy}","received_events_url":"https://api.github.com/users/khushnaseeb/received_events","type":"User","site_admin":false},"repo":{"id":134903502,"node_id":"MDEwOlJlcG9zaXRvcnkxMzQ5MDM1MDI=","name":"reprozip","full_name":"khushnaseeb/reprozip","owner":{"login":"khushnaseeb","id":4659614,"node_id":"MDQ6VXNlcjQ2NTk2MTQ=","avatar_url":"https://avatars1.githubusercontent.com/u/4659614?v=4","gravatar_id":"","url":"https://api.github.com/users/khushnaseeb","html_url":"https://github.com/khushnaseeb","followers_url":"https://api.github.com/users/khushnaseeb/followers","following_url":"https://api.github.com/users/khushnaseeb/following{/other_user}","gists_url":"https://api.github.com/users/khushnaseeb/gists{/gist_id}","starred_url":"https://api.github.com/users/khushnaseeb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/khushnaseeb/subscriptions","organizations_url":"https://api.github.com/users/khushnaseeb/orgs","repos_url":"https://api.github.com/users/khushnaseeb/repos","events_url":"https://api.github.com/users/khushnaseeb/events{/privacy}","received_events_url":"https://api.github.com/users/khushnaseeb/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/khushnaseeb/reprozip","description":"ReproZip is a tool that simplifies the process of creating reproducible experiments from command-line executions, a frequently-used common denominator in computational science.","fork":true,"url":"https://api.github.com/repos/khushnaseeb/reprozip","forks_url":"https://api.github.com/repos/khushnaseeb/reprozip/forks","keys_url":"https://api.github.com/repos/khushnaseeb/reprozip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/khushnaseeb/reprozip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/khushnaseeb/reprozip/teams","hooks_url":"https://api.github.com/repos/khushnaseeb/reprozip/hooks","issue_events_url":"https://api.github.com/repos/khushnaseeb/reprozip/issues/events{/number}","events_url":"https://api.github.com/repos/khushnaseeb/reprozip/events","assignees_url":"https://api.github.com/repos/khushnaseeb/reprozip/assignees{/user}","branches_url":"https://api.github.com/repos/khushnaseeb/reprozip/branches{/branch}","tags_url":"https://api.github.com/repos/khushnaseeb/reprozip/tags","blobs_url":"https://api.github.com/repos/khushnaseeb/reprozip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/khushnaseeb/reprozip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/khushnaseeb/reprozip/git/refs{/sha}","trees_url":"https://api.github.com/repos/khushnaseeb/reprozip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/khushnaseeb/reprozip/statuses/{sha}","languages_url":"https://api.github.com/repos/khushnaseeb/reprozip/languages","stargazers_url":"https://api.github.com/repos/khushnaseeb/reprozip/stargazers","contributors_url":"https://api.github.com/repos/khushnaseeb/reprozip/contributors","subscribers_url":"https://api.github.com/repos/khushnaseeb/reprozip/subscribers","subscription_url":"https://api.github.com/repos/khushnaseeb/reprozip/subscription","commits_url":"https://api.github.com/repos/khushnaseeb/reprozip/commits{/sha}","git_commits_url":"https://api.github.com/repos/khushnaseeb/reprozip/git/commits{/sha}","comments_url":"https://api.github.com/repos/khushnaseeb/reprozip/comments{/number}","issue_comment_url":"https://api.github.com/repos/khushnaseeb/reprozip/issues/comments{/number}","contents_url":"https://api.github.com/repos/khushnaseeb/reprozip/contents/{+path}","compare_url":"https://api.github.com/repos/khushnaseeb/reprozip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/khushnaseeb/reprozip/merges","archive_url":"https://api.github.com/repos/khushnaseeb/reprozip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/khushnaseeb/reprozip/downloads","issues_url":"https://api.github.com/repos/khushnaseeb/reprozip/issues{/number}","pulls_url":"https://api.github.com/repos/khushnaseeb/reprozip/pulls{/number}","milestones_url":"https://api.github.com/repos/khushnaseeb/reprozip/milestones{/number}","notifications_url":"https://api.github.com/repos/khushnaseeb/reprozip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/khushnaseeb/reprozip/labels{/name}","releases_url":"https://api.github.com/repos/khushnaseeb/reprozip/releases{/id}","deployments_url":"https://api.github.com/repos/khushnaseeb/reprozip/deployments","created_at":"2018-05-25T20:48:49Z","updated_at":"2018-07-16T16:58:55Z","pushed_at":"2018-07-16T16:58:52Z","git_url":"git://github.com/khushnaseeb/reprozip.git","ssh_url":"git@github.com:khushnaseeb/reprozip.git","clone_url":"https://github.com/khushnaseeb/reprozip.git","svn_url":"https://github.com/khushnaseeb/reprozip","homepage":"https://www.reprozip.org/","size":13550,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"1.0.x"}},"base":{"label":"ViDA-NYU:1.0.x","ref":"1.0.x","sha":"ad0292061c5ce4bd4cc6efd1868d426ad9e2d722","user":{"login":"ViDA-NYU","id":8114708,"node_id":"MDEyOk9yZ2FuaXphdGlvbjgxMTQ3MDg=","avatar_url":"https://avatars2.githubusercontent.com/u/8114708?v=4","gravatar_id":"","url":"https://api.github.com/users/ViDA-NYU","html_url":"https://github.com/ViDA-NYU","followers_url":"https://api.github.com/users/ViDA-NYU/followers","following_url":"https://api.github.com/users/ViDA-NYU/following{/other_user}","gists_url":"https://api.github.com/users/ViDA-NYU/gists{/gist_id}","starred_url":"https://api.github.com/users/ViDA-NYU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ViDA-NYU/subscriptions","organizations_url":"https://api.github.com/users/ViDA-NYU/orgs","repos_url":"https://api.github.com/users/ViDA-NYU/repos","events_url":"https://api.github.com/users/ViDA-NYU/events{/privacy}","received_events_url":"https://api.github.com/users/ViDA-NYU/received_events","type":"Organization","site_admin":false},"repo":{"id":19500159,"node_id":"MDEwOlJlcG9zaXRvcnkxOTUwMDE1OQ==","name":"reprozip","full_name":"ViDA-NYU/reprozip","owner":{"login":"ViDA-NYU","id":8114708,"node_id":"MDEyOk9yZ2FuaXphdGlvbjgxMTQ3MDg=","avatar_url":"https://avatars2.githubusercontent.com/u/8114708?v=4","gravatar_id":"","url":"https://api.github.com/users/ViDA-NYU","html_url":"https://github.com/ViDA-NYU","followers_url":"https://api.github.com/users/ViDA-NYU/followers","following_url":"https://api.github.com/users/ViDA-NYU/following{/other_user}","gists_url":"https://api.github.com/users/ViDA-NYU/gists{/gist_id}","starred_url":"https://api.github.com/users/ViDA-NYU/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ViDA-NYU/subscriptions","organizations_url":"https://api.github.com/users/ViDA-NYU/orgs","repos_url":"https://api.github.com/users/ViDA-NYU/repos","events_url":"https://api.github.com/users/ViDA-NYU/events{/privacy}","received_events_url":"https://api.github.com/users/ViDA-NYU/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ViDA-NYU/reprozip","description":"ReproZip is a tool that simplifies the process of creating reproducible experiments from command-line executions, a frequently-used common denominator in computational science.","fork":false,"url":"https://api.github.com/repos/ViDA-NYU/reprozip","forks_url":"https://api.github.com/repos/ViDA-NYU/reprozip/forks","keys_url":"https://api.github.com/repos/ViDA-NYU/reprozip/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ViDA-NYU/reprozip/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ViDA-NYU/reprozip/teams","hooks_url":"https://api.github.com/repos/ViDA-NYU/reprozip/hooks","issue_events_url":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/events{/number}","events_url":"https://api.github.com/repos/ViDA-NYU/reprozip/events","assignees_url":"https://api.github.com/repos/ViDA-NYU/reprozip/assignees{/user}","branches_url":"https://api.github.com/repos/ViDA-NYU/reprozip/branches{/branch}","tags_url":"https://api.github.com/repos/ViDA-NYU/reprozip/tags","blobs_url":"https://api.github.com/repos/ViDA-NYU/reprozip/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ViDA-NYU/reprozip/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ViDA-NYU/reprozip/git/refs{/sha}","trees_url":"https://api.github.com/repos/ViDA-NYU/reprozip/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ViDA-NYU/reprozip/statuses/{sha}","languages_url":"https://api.github.com/repos/ViDA-NYU/reprozip/languages","stargazers_url":"https://api.github.com/repos/ViDA-NYU/reprozip/stargazers","contributors_url":"https://api.github.com/repos/ViDA-NYU/reprozip/contributors","subscribers_url":"https://api.github.com/repos/ViDA-NYU/reprozip/subscribers","subscription_url":"https://api.github.com/repos/ViDA-NYU/reprozip/subscription","commits_url":"https://api.github.com/repos/ViDA-NYU/reprozip/commits{/sha}","git_commits_url":"https://api.github.com/repos/ViDA-NYU/reprozip/git/commits{/sha}","comments_url":"https://api.github.com/repos/ViDA-NYU/reprozip/comments{/number}","issue_comment_url":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/comments{/number}","contents_url":"https://api.github.com/repos/ViDA-NYU/reprozip/contents/{+path}","compare_url":"https://api.github.com/repos/ViDA-NYU/reprozip/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ViDA-NYU/reprozip/merges","archive_url":"https://api.github.com/repos/ViDA-NYU/reprozip/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ViDA-NYU/reprozip/downloads","issues_url":"https://api.github.com/repos/ViDA-NYU/reprozip/issues{/number}","pulls_url":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls{/number}","milestones_url":"https://api.github.com/repos/ViDA-NYU/reprozip/milestones{/number}","notifications_url":"https://api.github.com/repos/ViDA-NYU/reprozip/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ViDA-NYU/reprozip/labels{/name}","releases_url":"https://api.github.com/repos/ViDA-NYU/reprozip/releases{/id}","deployments_url":"https://api.github.com/repos/ViDA-NYU/reprozip/deployments","created_at":"2014-05-06T15:42:09Z","updated_at":"2018-07-16T17:28:26Z","pushed_at":"2018-07-16T17:28:23Z","git_url":"git://github.com/ViDA-NYU/reprozip.git","ssh_url":"git@github.com:ViDA-NYU/reprozip.git","clone_url":"https://github.com/ViDA-NYU/reprozip.git","svn_url":"https://github.com/ViDA-NYU/reprozip","homepage":"https://www.reprozip.org/","size":13954,"stargazers_count":150,"watchers_count":150,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":21,"mirror_url":null,"archived":false,"open_issues_count":65,"license":{"key":"bsd-3-clause","name":"BSD 3-Clause \"New\" or \"Revised\" License","spdx_id":"BSD-3-Clause","url":"https://api.github.com/licenses/bsd-3-clause","node_id":"MDc6TGljZW5zZTU="},"forks":21,"open_issues":65,"watchers":150,"default_branch":"1.0.x"}},"_links":{"self":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305"},"html":{"href":"https://github.com/ViDA-NYU/reprozip/pull/305"},"issue":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/305"},"comments":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/issues/305/comments"},"review_comments":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305/comments"},"review_comment":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/pulls/305/commits"},"statuses":{"href":"https://api.github.com/repos/ViDA-NYU/reprozip/statuses/fc0b38bea3df12fe1575a99c6b07bc417817a0ed"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"remram44"}}