{ "info": { "author": "Bryan W. Weber", "author_email": "bryan.w.weber@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Chemistry" ], "description": "# thermohw\n\nHomework assignment converter from Jupyter Notebooks to PDF\n\nThis package installs a CLI script to convert Jupyter Notebook homework\nassignments to PDF (with and without solutions) and a set of Notebooks\n(with and without solutions).\n\nGiven a directory structure such as\n```\n.\n\u251c\u2500\u2500 homework\n| \u251c\u2500\u2500 homework-1\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-1.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-2.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-3.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-4.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-5.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-1-6.ipynb\n| \u251c\u2500\u2500 homework-2\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-2-1.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-2-2.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-2-3.ipynb\n\u2502\u00a0\u00a0 \u2502 \u251c\u2500\u2500 homework-2-4.ipynb\n...\n```\nrunning\n\n```bash\nconvert_thermo_hw --hw 1\n```\n\nwill convert all of the `.ipynb` files in the `homework-1` directory. You can also specify which\nproblems should be converted by the `problems` argument, which takes a list of integers\n\n```bash\nconvert_thermo_hw --hw 2 --problems 1 3 4\n```\n\nwould convert problems 1, 3, and 4 in `homework-2`.\n\nThe option `--by-hand` allows certain problems to be marked as the solution should be done out by\nhand\n\n```bash\nconvert_thermo_hw --hw 3 --by-hand 1 2\n```\n\nwould mark problems 1 and 2 in `homework-3` as to be done by hand instead of with the code.\n\nThe output files are placed in a directory called `output` in the `homework-N` directory.\n\n\n# Change Log\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](http://keepachangelog.com/)\nand this project adheres to [Semantic Versioning](http://semver.org/).\n\n## [0.4.2] - 2018-SEP-03\n### Added\n- Test suite started, with a test of the `ExtractOutputsPreprocessor` that checks pathological filenames\n- Run test suite on TravisCI\n\n### Changed\n- Distribute the LICENSE file with built artifacts\n\n### Fixed\n- Fix pathological image filenames that caused URL escaping errors\n\n## [0.4.1] - 2018-AUG-30\n### Fixed\n- Fix spaces in attached image names cause LaTeX to fail\n\n## [0.4.0] - 2018-AUG-26\n### Added\n- `raw_html_filter` to process raw inline HTML to equivalent LaTeX forms\n- Option to show the solution should be done by hand, `--by-hand` command line option\n\n### Changed\n- Reset all cell executions to be None when a Notebook is processed\n\n## [0.3.1] - 2018-AUG-14\n### Added\n- Expose filter functions from `div_filter.py` in `__init__.py`\n\n## [0.3.0] - 2018-AUG-14\n### Added\n- Add filter to convert [Bootstrap `alert-*`](https://getbootstrap.com/docs/4.1/components/alerts/) classes to LaTeX `tcolorbox`es\n\n## [0.2.5] - 2018-AUG-03\n### Added\n- `setup.cfg` file added to configure some metadata\n- Add `flake8` configuration to `setup.cfg`\n- More keywords to `setup` function in `setup.py`\n- Module docstring for the new `preprocessors` module\n- Export more classes and functions from `__init__.py`\n\n### Changed\n- The `HomeworkPreprocessor` and `SolnRemoverPreprocessor` are moved from `convert_thermo_hw` module to `preprocessors` module\n\n### Fixed\n- Fix some typing errors\n\n### Removed\n- Remove the `ExtractOutputsPreprocessor` which is not needed anymore\n\n## [0.2.4] - 2018-AUG-03\n### Fixed\n- PyPI deploy password for Travis CI must be encrypted with `--pro` flag\n\n## [0.2.3] - 2018-AUG-03\n### Fixed\n- Fix anaconda.org upload token decryption\n\n## [0.2.2] - 2018-AUG-03\n### Fixed\n- Typo in README.md\n- Conda recipe description was not valid YAML\n\n## [0.2.1] - 2018-AUG-03\n### Added\n- Install `conda-verify` on Travis CI\n\n### Changed\n- Change Python version dependency in `conda.recipe/meta.yaml` to be less the 4.0\n\n### Fixed\n- Fix accessing Jinja variables in `conda.recipe/meta.yaml`\n\n### Removed\n\n## [0.2.0] - 2018-AUG-03\n### Added\n- Add Travis CI configuration\n- Include the `homework.tpl` template file with the distribution\n- Appropriate classes are now exported in `__init__.py`\n\n### Changed\n- Use `PyMarkdownPreprocessor` from our own module to avoid having `jupyter_contrib_nbextensions` as a dependency\n- Set the `build_directory` of the `PDFExporter` `FileWriter` instance to prevent writing intermediate files in the local directory\n- Sort the list of problems to be processed by problem number\n- Automatically write the Notebook outputs to a zip file\n- Automatically combine the PDF outputs to a single PDF file\n- Refactor the processing loop to avoid creating the `FilesWriter` on every iteration\n\n### Fixed\n- Fix warnings about docstrings\n- Fix that paths must be resolved to be processed\n- Fix typos in docstrings\n- Specify that the `long_description` content for PyPI is Markdown formatted\n\n## [0.1.0] - 2018-JUL-29\n### Added\n- Convert Jupyter Notebook to PDF with and without solutions\n- Convert Jupyter Notebook to a set of Notebooks, with and without solutions\n- README with instructions for use\n\n[0.4.2]: https://github.com/bryanwweber/thermohw/compare/v0.4.1...v0.4.2\n[0.4.1]: https://github.com/bryanwweber/thermohw/compare/v0.4.0...v0.4.1\n[0.4.0]: https://github.com/bryanwweber/thermohw/compare/v0.3.1...v0.4.0\n[0.3.1]: https://github.com/bryanwweber/thermohw/compare/v0.3.0...v0.3.1\n[0.3.0]: https://github.com/bryanwweber/thermohw/compare/v0.2.5...v0.3.0\n[0.2.5]: https://github.com/bryanwweber/thermohw/compare/v0.2.4...v0.2.5\n[0.2.4]: https://github.com/bryanwweber/thermohw/compare/v0.2.3...v0.2.4\n[0.2.3]: https://github.com/bryanwweber/thermohw/compare/v0.2.2...v0.2.3\n[0.2.2]: https://github.com/bryanwweber/thermohw/compare/v0.2.1...v0.2.2\n[0.2.1]: https://github.com/bryanwweber/thermohw/compare/v0.2.0...v0.2.1\n[0.2.0]: https://github.com/bryanwweber/thermohw/compare/v0.1.0...v0.2.0\n[0.1.0]: https://github.com/bryanwweber/thermohw/compare/937175f68b1bd09597d3d91321772267ec068cae...v0.1.0\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bryanwweber/thermohw", "keywords": "thermodynamics homework pdf jupyter notebook", "license": "BSD-3-Clause", "maintainer": "", "maintainer_email": "", "name": "thermohw", "package_url": "https://pypi.org/project/thermohw/", "platform": "", "project_url": "https://pypi.org/project/thermohw/", "project_urls": { "Bug Reports": "https://github.com/bryanwweber/thermohw/issues", "Homepage": "https://github.com/bryanwweber/thermohw", "Source": "https://github.com/bryanwweber/thermohw/" }, "release_url": "https://pypi.org/project/thermohw/0.4.2/", "requires_dist": [ "nbconvert (<6.0,>=5.3)", "traitlets (<5.0,>=4.3)", "pdfrw (<0.5,>=0.4)", "pandocfilters (<2.0,>=1.4)" ], "requires_python": "~=3.6", "summary": "Package for converting thermo homework assignments", "version": "0.4.2" }, "last_serial": 4235811, "releases": { "0.2.0.dev1": [ { "comment_text": "", "digests": { "md5": "544da043e9ee72811e14703d8ad496cc", "sha256": "9429034436e8f80b069da001e35dc2934ac55becdce127986e74706f3551704f" }, "downloads": -1, "filename": "thermohw-0.2.0.dev1-py3-none-any.whl", "has_sig": false, "md5_digest": "544da043e9ee72811e14703d8ad496cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 9833, "upload_time": "2018-08-03T13:34:41", "url": "https://files.pythonhosted.org/packages/d0/17/f945f3919aac179cf62a7369e91f6af4482848f0f655dc862c9c51023695/thermohw-0.2.0.dev1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cd830b29a3654ccf998268e051d21b8", "sha256": "012325977c6eb1520c6fb0779a399067595cea099092c6c77c8fddb6d479df58" }, "downloads": -1, "filename": "thermohw-0.2.0.dev1.tar.gz", "has_sig": false, "md5_digest": "7cd830b29a3654ccf998268e051d21b8", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 8684, "upload_time": "2018-08-03T13:34:42", "url": "https://files.pythonhosted.org/packages/93/09/e3e1c3496b1b1c6246f314cfe7c5b679fdbbf1b390714a903acc93ff14e8/thermohw-0.2.0.dev1.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "6d923aa82bb02a3ac228dc87ea7bfc56", "sha256": "7d61b919dd370f1b3fc502569da05a43e0592648c215d81ff21b77366bfbb891" }, "downloads": -1, "filename": "thermohw-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6d923aa82bb02a3ac228dc87ea7bfc56", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 12247, "upload_time": "2018-08-03T17:53:50", "url": "https://files.pythonhosted.org/packages/ca/58/31f3f38a1470cbaefdaa8c9eb16f344871ea089ce1af94d5035a6ea9ec36/thermohw-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0dc920d9c5fd716a854dff3e35d61365", "sha256": "b249317b5a813e3d641470698acd2826daf6fcd51568f85e0495d50bd61f6857" }, "downloads": -1, "filename": "thermohw-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0dc920d9c5fd716a854dff3e35d61365", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 9808, "upload_time": "2018-08-03T17:53:51", "url": "https://files.pythonhosted.org/packages/02/8f/3f199697f0929fda7531115dfa49312b87d283dad9dca85c9ac4801c6a9f/thermohw-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "8d87e1cf8a4cd006514aae56399a3045", "sha256": "b071e7dd82606d06568be39486f2b13dd39f84d73329882f2c36d8e41f87147c" }, "downloads": -1, "filename": "thermohw-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "8d87e1cf8a4cd006514aae56399a3045", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 13977, "upload_time": "2018-08-04T00:26:59", "url": "https://files.pythonhosted.org/packages/92/54/ce63840f7294342339df1e7c9c389f4c79f1e44aab0a6212315e98c31a7a/thermohw-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21bb7aa436b7a8240b17b951560f0802", "sha256": "0350bf98753284cf3d8ed5476290e32540d18bf99f80ce853a956f2e5f328287" }, "downloads": -1, "filename": "thermohw-0.2.5.tar.gz", "has_sig": false, "md5_digest": "21bb7aa436b7a8240b17b951560f0802", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 10359, "upload_time": "2018-08-04T00:27:01", "url": "https://files.pythonhosted.org/packages/7f/f8/34b63f431318ee573b58ce663101ac8d24451d56d15209df3f1d9481505c/thermohw-0.2.5.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "aef97e9f118c3d35fdc1becc55c06d98", "sha256": "02bbf483d5c61bbcad4976b084f9453b12779829be43f1f4a88fdabb0faf2449" }, "downloads": -1, "filename": "thermohw-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aef97e9f118c3d35fdc1becc55c06d98", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 15367, "upload_time": "2018-08-15T01:47:07", "url": "https://files.pythonhosted.org/packages/49/c7/b98b244dd53d567251a269f8509c8eb0987c00e4d4f60ee999d429cdaf67/thermohw-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e928b9c1df9088c323ac35d0cecc0f25", "sha256": "940370614d5b246044f5bf82231fea267de06c2a7f9c184d0e223efc52e17e83" }, "downloads": -1, "filename": "thermohw-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e928b9c1df9088c323ac35d0cecc0f25", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 11401, "upload_time": "2018-08-15T01:47:08", "url": "https://files.pythonhosted.org/packages/ca/e0/6c1f571ba5359ca02d316730e0eec3e3075bec0aecc9d7af302fff4d2fcd/thermohw-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "29581f233d44eb9663e1dd6e3033d1c9", "sha256": "5adb5486ab9c89787163ba109f9a2efbe543c717b8a381f61883ec655aeefe26" }, "downloads": -1, "filename": "thermohw-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "29581f233d44eb9663e1dd6e3033d1c9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 15439, "upload_time": "2018-08-15T01:57:03", "url": "https://files.pythonhosted.org/packages/31/16/8ec16af5d9ca14b286433dc0c451f8b15e3646ff861dc24d5cf8343e514a/thermohw-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a4d206123b3792cc0db01fdf358504a", "sha256": "f27a091ee496cc0754f055d9332a7f7d5458fdf67534b39f39858e3afb096cd2" }, "downloads": -1, "filename": "thermohw-0.3.1.tar.gz", "has_sig": false, "md5_digest": "7a4d206123b3792cc0db01fdf358504a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 11463, "upload_time": "2018-08-15T01:57:04", "url": "https://files.pythonhosted.org/packages/9e/0a/f9b381ea34c01e3e0db6e81a3494140b4a05db6b538c56bc2f54a40b59e1/thermohw-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "1f961d91062b6182836c615eacc8da9e", "sha256": "3058c056c9b34929d2792f97fed0d2dcf39a78431816c1e84ff21183d2e090fa" }, "downloads": -1, "filename": "thermohw-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1f961d91062b6182836c615eacc8da9e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 16254, "upload_time": "2018-08-26T15:16:46", "url": "https://files.pythonhosted.org/packages/f6/92/540d3000ac5d1cada781dda148b52ec0b276152b1a02818400ec94b367ce/thermohw-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a705e7fe3d163c4f342ec2555d48dce1", "sha256": "0734603861566f3e3677311df51d203d9d6a47212786dc40e08adf6e45f4a43a" }, "downloads": -1, "filename": "thermohw-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a705e7fe3d163c4f342ec2555d48dce1", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 12251, "upload_time": "2018-08-26T15:16:47", "url": "https://files.pythonhosted.org/packages/06/1d/fd73fd422d01796000182ba2cb3650a7e1e8a669c779fa4f3802c8132cfb/thermohw-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8dbcf8781f0c26fcee612dce86772c24", "sha256": "88ccf5346b8e5b5b0d6b18a7d17adc70fc6c934a33511803ef45b79d2eee8495" }, "downloads": -1, "filename": "thermohw-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8dbcf8781f0c26fcee612dce86772c24", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 16323, "upload_time": "2018-08-31T18:07:39", "url": "https://files.pythonhosted.org/packages/ca/ee/66272a4e1cd6514a98de21acaad9c2b73be8c6bf60fc72682ce8ed3ba46a/thermohw-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a2b69c3a88f6a98e5edabfe2e6ee19a8", "sha256": "509a27077fec0267ebda98c68eaca2696f86633857b5506ada02ac47ca769782" }, "downloads": -1, "filename": "thermohw-0.4.1.tar.gz", "has_sig": false, "md5_digest": "a2b69c3a88f6a98e5edabfe2e6ee19a8", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 12321, "upload_time": "2018-08-31T18:07:40", "url": "https://files.pythonhosted.org/packages/70/44/c09e36545c03d863574a3a6a8dd21c5679fecc54600f499d9d028287cb0c/thermohw-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "6bcbda042dacf5d806b9745cf81d83b6", "sha256": "5b3c298fb9193d767d4e52de05e8ea5d9e6cdf6fb42df2924b42418f70406e87" }, "downloads": -1, "filename": "thermohw-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6bcbda042dacf5d806b9745cf81d83b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 18541, "upload_time": "2018-09-03T23:00:08", "url": "https://files.pythonhosted.org/packages/39/26/5325b4b94b2015176edbb2e5c76c5c3c4017382dc26818d05734fe31f98d/thermohw-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9312c0ed415f1e46e529eff674a8e226", "sha256": "bec95e8047c32ef30d47bee12d92cf41a65bad2f1206bf55d84aaf48e50bda5c" }, "downloads": -1, "filename": "thermohw-0.4.2.tar.gz", "has_sig": false, "md5_digest": "9312c0ed415f1e46e529eff674a8e226", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 13508, "upload_time": "2018-09-03T23:00:09", "url": "https://files.pythonhosted.org/packages/32/f1/93f7cb97c8600a6dfe3b92b94c4b46e81a31cb47b0d637612ca8d9368d62/thermohw-0.4.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6bcbda042dacf5d806b9745cf81d83b6", "sha256": "5b3c298fb9193d767d4e52de05e8ea5d9e6cdf6fb42df2924b42418f70406e87" }, "downloads": -1, "filename": "thermohw-0.4.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6bcbda042dacf5d806b9745cf81d83b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.6", "size": 18541, "upload_time": "2018-09-03T23:00:08", "url": "https://files.pythonhosted.org/packages/39/26/5325b4b94b2015176edbb2e5c76c5c3c4017382dc26818d05734fe31f98d/thermohw-0.4.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9312c0ed415f1e46e529eff674a8e226", "sha256": "bec95e8047c32ef30d47bee12d92cf41a65bad2f1206bf55d84aaf48e50bda5c" }, "downloads": -1, "filename": "thermohw-0.4.2.tar.gz", "has_sig": false, "md5_digest": "9312c0ed415f1e46e529eff674a8e226", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.6", "size": 13508, "upload_time": "2018-09-03T23:00:09", "url": "https://files.pythonhosted.org/packages/32/f1/93f7cb97c8600a6dfe3b92b94c4b46e81a31cb47b0d637612ca8d9368d62/thermohw-0.4.2.tar.gz" } ] }