{
"info": {
"author": "Cordell Bloor",
"author_email": "cgbloor@ucalgary.ca",
"bugtrack_url": null,
"classifiers": [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"Intended Audience :: Education",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
"Natural Language :: English",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Topic :: Education"
],
"description": "Motivation\n----------\n\nIt's frustrating dealing with the zip files full of assignment\nsubmissions that you get from D2L.\n\n- Merging all of a student's submissions into a single folder is\n tedious.\n- Navigating submissions on the command line sucks, because each\n directory name starts with a long number.\n- Extracting all the zip files, tar archives, and 7z archives that\n students submit adds a needless extra step to marking.\n\nI've found this tool useful for eliminating those annoyances, and I hope\nyou will too.\n\nHow to Use\n----------\n\nThis is the most common command I use:\n\n.. code:: bash\n\n d2lmf extract -R \"Assignment 1 Download Oct 11, 2015 803 PM.zip\" A1/T01\n\nIt extracts the submissions from the zip folder into the directory\n``A1/T01``. The ``-R`` option makes it run all the recommended cleanup\nactions on the submissions, and is equivalent to using ``-x``, ``-j``,\n``-c`` and ``-m``.\n\nThe ``-x`` specifies that we want to extract any zip, rar, tar, or 7z\narchives that students submitted. The ``-j`` deletes 'junk' like\n``.DS_Store``. The ``-c`` collapses needlessly nested directories.\nFinally, the ``-m`` merges all submitted files into a single directory\nfor each student.\n\nOn Windows, you may need to invoke d2lmf as a Python module, like so:\n\n.. code:: bash\n\n python -m d2lmf extract -R \"Assignment 1 Download Oct 11, 2015 803 PM.zip\" A1/T01\n\nHow to Install\n--------------\n\nUbuntu\n~~~~~~\n\n.. code:: bash\n\n sudo apt-get install python-pip\n sudo pip install d2lmf\n\nOSX\n~~~\n\n.. code:: bash\n\n curl https://bootstrap.pypa.io/get-pip.py > get-pip.py\n sudo python get-pip.py\n sudo pip install d2lmf\n\nWindows\n~~~~~~~\n\nFirst, download and install Python from\nhttps://www.python.org/downloads/\n\nThen, install d2lmf with the command below:\n\n.. code:: bash\n\n python -m pip install d2lmf\n\nDependencies\n------------\n\nThe extraction of rar and 7z archives depends on external tools. If you\ndo not have a rar or 7z utility installed, those archives will be\nskipped.\n\nOn Windows, I suggest installing `7-Zip `__. On\nUbuntu, p7zip is the equivalent, and it can be installed with\n``sudo apt-get install p7zip-full``. p7zip is also available for OSX,\nand can be installed from `homebrew `__ with\n``brew install p7zip``.\n\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://github.com/cgmb/d2lmf",
"keywords": "",
"license": "GPLv3+",
"maintainer": "",
"maintainer_email": "",
"name": "d2lmf",
"package_url": "https://pypi.org/project/d2lmf/",
"platform": "",
"project_url": "https://pypi.org/project/d2lmf/",
"project_urls": {
"Homepage": "https://github.com/cgmb/d2lmf"
},
"release_url": "https://pypi.org/project/d2lmf/1.0.0/",
"requires_dist": [
"patool (>=1.9)"
],
"requires_python": "",
"summary": "A command-line tool to help mark assignments submitted to D2L.",
"version": "1.0.0"
},
"last_serial": 3492548,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "b712bf6854cd413bdb6039a07e5df8d5",
"sha256": "9dc50603b8123b0c91d283e61b5e87daf361b288ba9ad2893fd592a42ae2d61b"
},
"downloads": -1,
"filename": "d2lmf-0.0.1-py2-none-any.whl",
"has_sig": true,
"md5_digest": "b712bf6854cd413bdb6039a07e5df8d5",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 5465,
"upload_time": "2015-10-07T07:39:25",
"url": "https://files.pythonhosted.org/packages/88/8b/4d63540c6710a9677af7ea2351710df389ccbc9b5c7cda355366252a1573/d2lmf-0.0.1-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "f844c946929a377b4aa1f1f9b3489fd5",
"sha256": "28c7a1ddeb09dbf479a4253bd598cafffe0f8d0b27e2d4a2cbba603e27fac7cb"
},
"downloads": -1,
"filename": "d2lmf-0.0.1.tar.gz",
"has_sig": true,
"md5_digest": "f844c946929a377b4aa1f1f9b3489fd5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4370,
"upload_time": "2015-10-07T07:39:30",
"url": "https://files.pythonhosted.org/packages/6f/b2/69df68b74dbfa63ca1da412492b5c08aeb72a2637c3074229d524aa105fe/d2lmf-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "ee7272339eb9defd45ed07ccbeecb8d2",
"sha256": "c914fee346cd41f7bb2647e1791a5c375ad7e5f98eb87d008ee293c29b0d0420"
},
"downloads": -1,
"filename": "d2lmf-0.0.2-py2-none-any.whl",
"has_sig": true,
"md5_digest": "ee7272339eb9defd45ed07ccbeecb8d2",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 5751,
"upload_time": "2015-10-14T07:32:34",
"url": "https://files.pythonhosted.org/packages/43/52/0f4604e9ccbcb1bf92a4474e944ce632cb61816f80a79205ebab7389be29/d2lmf-0.0.2-py2-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "3b820254efd8d5e1ec0ce202ab2541e2",
"sha256": "4eca55eda16921ff55e9c2777ad0204030b41e58a0bdffcb6e461e2330282502"
},
"downloads": -1,
"filename": "d2lmf-0.0.2.tar.gz",
"has_sig": true,
"md5_digest": "3b820254efd8d5e1ec0ce202ab2541e2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4659,
"upload_time": "2015-10-14T07:32:38",
"url": "https://files.pythonhosted.org/packages/64/70/679048cbf488a028577141eaba1fcc1d14d04ad7907dcebc743812532c75/d2lmf-0.0.2.tar.gz"
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "f550d6f4cf6fd2b22fffa3166313e9ac",
"sha256": "0281395c3828d71e12fa5aefc9c69fd4340b909ceddfdccae57a8b132e6c9aaa"
},
"downloads": -1,
"filename": "d2lmf-0.0.3-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "f550d6f4cf6fd2b22fffa3166313e9ac",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 5946,
"upload_time": "2015-10-17T22:58:03",
"url": "https://files.pythonhosted.org/packages/5d/f5/cd088905c3028869714b89f151924af99d6e489e1cff804b6881496f8bb4/d2lmf-0.0.3-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "378cb891dbe6bfd49d4636cac320f26b",
"sha256": "acddc416584342a79e928f90a2257663a1d02ef9843f365606e6ec4af769c75f"
},
"downloads": -1,
"filename": "d2lmf-0.0.3.tar.gz",
"has_sig": true,
"md5_digest": "378cb891dbe6bfd49d4636cac320f26b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4845,
"upload_time": "2015-10-17T22:58:10",
"url": "https://files.pythonhosted.org/packages/05/ec/875d2666b8535c965dfdd4bd26960f2cce86b0dd5fdcd31f22bf8563fab6/d2lmf-0.0.3.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "28b3c81d6b6ef83fad16cb60ac940f73",
"sha256": "ef1bbb95c2ca5dc74104d08e2c7ab27d536612e99dc1372db7278bc0bcbe9568"
},
"downloads": -1,
"filename": "d2lmf-0.0.4-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "28b3c81d6b6ef83fad16cb60ac940f73",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 8110,
"upload_time": "2016-02-03T02:22:06",
"url": "https://files.pythonhosted.org/packages/87/35/6fd8c27d913acc6343e1e9354589c660ea0863c107f54923fe509dcfd11d/d2lmf-0.0.4-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "997463fbd34229b1ea728a160f76579a",
"sha256": "d4c968d731e36157205df509f9a75868e7c3857427ec64355f7f2fe989a8ca4b"
},
"downloads": -1,
"filename": "d2lmf-0.0.4.tar.gz",
"has_sig": true,
"md5_digest": "997463fbd34229b1ea728a160f76579a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17475,
"upload_time": "2016-02-03T02:22:15",
"url": "https://files.pythonhosted.org/packages/4a/63/52011fe656cdace2062c3209d00c30ecb68258f319f74667461ab2a49e47/d2lmf-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "867aeedf2605a21fe789266269536f02",
"sha256": "a7f065cd10686c1776acfdd125dc760dced789350cb140d1ac8263236277d948"
},
"downloads": -1,
"filename": "d2lmf-0.0.5-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "867aeedf2605a21fe789266269536f02",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9024,
"upload_time": "2016-02-12T07:42:11",
"url": "https://files.pythonhosted.org/packages/f4/8e/da0177cafee1481389f47cd84a80f8c2dad9d43f9930b73ffc6de22260a1/d2lmf-0.0.5-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "37e4f50b2f247eb8f7f05ca260c5212e",
"sha256": "d4d1279a1a17586de056397f86025f224d369210588cabdd7fd83805a3f55af5"
},
"downloads": -1,
"filename": "d2lmf-0.0.5.tar.gz",
"has_sig": true,
"md5_digest": "37e4f50b2f247eb8f7f05ca260c5212e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18106,
"upload_time": "2016-02-12T07:42:20",
"url": "https://files.pythonhosted.org/packages/6b/2e/2d16451c70a490345f945c64992287dc36c02c3c898daba84540191f4de3/d2lmf-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "3e3615fd453f72ac490ee6c59c2792f6",
"sha256": "57cb1965bacb0d44e6c40515ee5f6268543db612dc8c747861ad5b99928e0f92"
},
"downloads": -1,
"filename": "d2lmf-0.0.6-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "3e3615fd453f72ac490ee6c59c2792f6",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9060,
"upload_time": "2016-03-24T08:30:22",
"url": "https://files.pythonhosted.org/packages/3d/33/d0a25eca7148c18ab347f23804475aef377b91ac5bb7c42402325a513565/d2lmf-0.0.6-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "63ec790e5783bbcc509e3abd9e29226b",
"sha256": "ca77e1db28e1d5a124dc24cae903c420edded2c6dd0e1a6362c6bbcfd02a554c"
},
"downloads": -1,
"filename": "d2lmf-0.0.6.tar.gz",
"has_sig": true,
"md5_digest": "63ec790e5783bbcc509e3abd9e29226b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18133,
"upload_time": "2016-03-24T08:36:31",
"url": "https://files.pythonhosted.org/packages/31/62/bb5a7df55031fc0483eb4ad4dc53a2b981621c9f219efcb8a1a35ceeafc9/d2lmf-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "1e914cfdf29550c1b340252ad0a6c29b",
"sha256": "069097f5605eafefad18f80a8bbfd5fc96c7a3183a03f3adebfc32ebcb401ace"
},
"downloads": -1,
"filename": "d2lmf-0.0.7-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "1e914cfdf29550c1b340252ad0a6c29b",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9240,
"upload_time": "2016-12-05T23:17:44",
"url": "https://files.pythonhosted.org/packages/28/cc/b20466fc4f5f81e3ae37c6069154d6f45976ccf8e3bc2efbe19679fc0537/d2lmf-0.0.7-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "e4427513aa89e68eb04996494ae52703",
"sha256": "44bfcb4f090be0d28fcbbcd96dcb4d14b4aa46dc92cb7ab83f7ef983ea6a42c1"
},
"downloads": -1,
"filename": "d2lmf-0.0.7.tar.gz",
"has_sig": true,
"md5_digest": "e4427513aa89e68eb04996494ae52703",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 18994,
"upload_time": "2016-12-05T23:17:46",
"url": "https://files.pythonhosted.org/packages/0f/38/7cf1e8d343ad8a1390b82a6c27ed5057e5368556f6941d7c20517ce7a7b0/d2lmf-0.0.7.tar.gz"
}
],
"1.0.0": [
{
"comment_text": "",
"digests": {
"md5": "4becf0cbd021eeb0359a3530d75bf9d1",
"sha256": "5e4ccf5274776f1dd916b4f31e2c1e2a7103d53bfb758d05c98c268436ca3a43"
},
"downloads": -1,
"filename": "d2lmf-1.0.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "4becf0cbd021eeb0359a3530d75bf9d1",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9083,
"upload_time": "2018-01-16T01:36:12",
"url": "https://files.pythonhosted.org/packages/82/0a/1b674c054186060071e67b3344d204111c160965bdceae81a68e91ec4f21/d2lmf-1.0.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "65864e510503a87cc951dd7df5d08a72",
"sha256": "532d8bab219bbfc2f435e5734e40c03765494e95a687458d577d6c4a42830c6b"
},
"downloads": -1,
"filename": "d2lmf-1.0.0.tar.gz",
"has_sig": true,
"md5_digest": "65864e510503a87cc951dd7df5d08a72",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19159,
"upload_time": "2018-01-16T01:36:18",
"url": "https://files.pythonhosted.org/packages/81/69/03a4a71c89da89b7e9a1edbeb9533e56367e17f73b01ab15e8ca591959b2/d2lmf-1.0.0.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "4becf0cbd021eeb0359a3530d75bf9d1",
"sha256": "5e4ccf5274776f1dd916b4f31e2c1e2a7103d53bfb758d05c98c268436ca3a43"
},
"downloads": -1,
"filename": "d2lmf-1.0.0-py2.py3-none-any.whl",
"has_sig": true,
"md5_digest": "4becf0cbd021eeb0359a3530d75bf9d1",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 9083,
"upload_time": "2018-01-16T01:36:12",
"url": "https://files.pythonhosted.org/packages/82/0a/1b674c054186060071e67b3344d204111c160965bdceae81a68e91ec4f21/d2lmf-1.0.0-py2.py3-none-any.whl"
},
{
"comment_text": "",
"digests": {
"md5": "65864e510503a87cc951dd7df5d08a72",
"sha256": "532d8bab219bbfc2f435e5734e40c03765494e95a687458d577d6c4a42830c6b"
},
"downloads": -1,
"filename": "d2lmf-1.0.0.tar.gz",
"has_sig": true,
"md5_digest": "65864e510503a87cc951dd7df5d08a72",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 19159,
"upload_time": "2018-01-16T01:36:18",
"url": "https://files.pythonhosted.org/packages/81/69/03a4a71c89da89b7e9a1edbeb9533e56367e17f73b01ab15e8ca591959b2/d2lmf-1.0.0.tar.gz"
}
]
}