{ "info": { "author": "Daniel Himmelstein", "author_email": "daniel.himmelstein@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3 :: Only", "Topic :: Scientific/Engineering :: Bio-Informatics", "Topic :: Scientific/Engineering :: Information Analysis" ], "description": "# Python utilities for Manubot: Manuscripts, open and automated\n\n[![Travis Linux Build Status](https://travis-ci.com/manubot/manubot.svg?branch=master)](https://travis-ci.com/manubot/manubot)\n[![AppVeyor Windows Build Status](https://ci.appveyor.com/api/projects/status/f20hvc6si5uiqd7e/branch/master?svg=true)](https://ci.appveyor.com/project/manubot/manubot/branch/master)\n\n[Manubot](https://manubot.org/ \"Manubot homepage\") is a workflow and set of tools for the next generation of scholarly publishing.\nThis repository contains a Python package with several Manubot-related utilities, as described in the [usage section](#usage) below.\n\nThe `manubot cite` command-line interface retrieves and formats bibliographic metadata for user-supplied persistent identifiers like DOIs or PubMed IDs.\nThe `manubot process` command-line interface prepares scholarly manuscripts for Pandoc consumption.\nThe `manubot process` command is used by Manubot manuscripts, which are based off the [Rootstock template](https://github.com/manubot/rootstock), to automate several aspects of manuscript generation.\nSee Rootstock's [manuscript usage guide](https://github.com/manubot/rootstock/blob/master/USAGE.md) for more information.\n\n**Note:**\nIf you want to experience Manubot by editing an existing manuscript, see .\nIf you want to create a new manuscript, see .\n\nTo cite the Manubot project or for more information on its design and history, see:\n\n> **Open collaborative writing with Manubot**
\nDaniel S. Himmelstein, Vincent Rubinetti, David R. Slochower, Dongbo Hu, Venkat S. Malladi, Casey S. Greene, Anthony Gitter
\n*PLOS Computational Biology* (2019-06-24)
\nDOI: [10.1371/journal.pcbi.1007128](https://doi.org/10.1371/journal.pcbi.1007128) \u00b7 PMID: [31233491](https://www.ncbi.nlm.nih.gov/pubmed/31233491)\n\nThe Manubot version of this manuscript is available at .\n\n## Installation\n\nIf you are using the `manubot` Python package as part of a manuscript repository, installation of this package is handled though the Rootstock's [environment specification](https://github.com/manubot/rootstock/blob/master/build/environment.yml).\nFor other use cases, this package can be installed via `pip`.\n\nInstall the latest release version [from PyPI](https://pypi.org/project/manubot/):\n\n```sh\npip install --upgrade manubot\n```\n\nOr install from the source code on [GitHub](https://github.com/manubot/manubot), using the version specified by a commit hash:\n\n```sh\nCOMMIT=d2160151e52750895571079a6e257beb6e0b1278\npip install --upgrade git+https://github.com/manubot/manubot@$COMMIT\n```\n\nThe `--upgrade` argument ensures `pip` updates an existing `manubot` installation if present.\n\n## Usage\n\nInstalling the python package creates the `manubot` command line program.\nHere is the usage information as per `manubot --help`:\n\n\n```\nusage: manubot [-h] [--version] {process,cite} ...\n\nManubot: the manuscript bot for scholarly writing\n\noptional arguments:\n -h, --help show this help message and exit\n --version show program's version number and exit\n\nsubcommands:\n All operations are done through subcommands:\n\n {process,cite}\n process process manuscript content\n cite citation to CSL command line utility\n```\n\nNote that all operations are done through the following sub-commands.\n\n### Process\n\nThe `manubot process` program is the primary interface to using Manubot.\nThere are two required arguments: `--content-directory` and `--output-directory`, which specify the respective paths to the content and output directories.\nThe content directory stores the manuscript source files.\nFiles generated by Manubot are saved to the output directory.\n\nOne common setup is to create a directory for a manuscript that contains both the `content` and `output` directory.\nUnder this setup, you can run the Manubot using:\n\n```sh\nmanubot process \\\n --content-directory=content \\\n --output-directory=output\n```\n\nSee `manubot process --help` for documentation of all command line arguments:\n\n\n```\nusage: manubot process [-h] --content-directory CONTENT_DIRECTORY\n --output-directory OUTPUT_DIRECTORY\n [--template-variables-path TEMPLATE_VARIABLES_PATH]\n [--cache-directory CACHE_DIRECTORY]\n [--clear-requests-cache]\n [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]\n\nProcess manuscript content to create outputs for Pandoc consumption. Performs\nbibliographic processing and templating.\n\noptional arguments:\n -h, --help show this help message and exit\n --content-directory CONTENT_DIRECTORY\n Directory where manuscript content files are located.\n --output-directory OUTPUT_DIRECTORY\n Directory to output files generated by this script.\n --template-variables-path TEMPLATE_VARIABLES_PATH\n Path or URL of a JSON file containing template\n variables for jinja2. Specify this argument multiple\n times to read multiple files. Variables can be applied\n to a namespace (i.e. stored under a dictionary key)\n like `--template-variables-\n path=namespace=path_or_url`. Namespaces must match the\n regex `[a-zA-Z_][a-zA-Z0-9_]*`.\n --cache-directory CACHE_DIRECTORY\n Custom cache directory. If not specified, caches to\n output-directory.\n --clear-requests-cache\n --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}\n Set the logging level for stderr logging\n```\n\n#### Manual references\n\nManubot has the ability to rely on user-provided reference metadata rather than generating it.\n`manubot process` searches the content directory for files containing manually-provided reference metadata that match the glob `manual-references*.*`.\nIf a manual reference filename ends with `.json` or `.yaml`, it's assumed to contain CSL Data (i.e. Citation Style Language JSON).\nOtherwise, the format is inferred from the extension and converted to CSL JSON using the `pandoc-citeproc --bib2json` [utility](https://github.com/jgm/pandoc-citeproc/blob/master/man/pandoc-citeproc.1.md#convert-mode).\nThe standard citation for manual references is inferred from the CSL JSON `id` or `note` field.\nWhen no prefix is provided, such as `doi:`, `url:`, or `raw:`, a `raw:` prefix is automatically added.\nIf multiple manual reference files load metadata for the same standard citation `id`, precedence is assigned according to descending filename order.\n\n### Cite\n\n`manubot cite` is a command line utility to create [CSL JSON items](http://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#items) for one or more citations.\nCitations should be in the format `source:identifier`.\nFor example, the following example generates CSL JSON for four references:\n\n```sh\nmanubot cite doi:10.1098/rsif.2017.0387 pmid:29424689 pmcid:PMC5640425 arxiv:1806.05726\n```\n\nThe following [terminal recording](https://asciinema.org/a/205085?speed=2) demonstrates the main features of `manubot cite`:\n\n![manubot cite demonstration](media/terminal-recordings/manubot-cite-cast.gif)\n\nAdditional usage information is available from `manubot cite --help`:\n\n\n```\nusage: manubot cite [-h] [--render] [--csl CSL]\n [--format {plain,markdown,docx,html,jats}]\n [--output OUTPUT] [--allow-invalid-csl-data]\n [--log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]\n citations [citations ...]\n\nRetrieve bibliographic metadata for one or more citation identifiers.\n\npositional arguments:\n citations One or more (space separated) citations to produce CSL\n for.\n\noptional arguments:\n -h, --help show this help message and exit\n --render Whether to render CSL Data into a formatted reference\n list using Pandoc. Pandoc version 2.0 or higher is\n required for complete support of available output\n formats.\n --csl CSL When --render, specify an XML CSL definition to style\n references (i.e. Pandoc's --csl option). Defaults to\n Manubot's style.\n --format {plain,markdown,docx,html,jats}\n When --render, format to use for output file. If not\n specified, attempt to infer this from filename\n extension. Otherwise, default to plain.\n --output OUTPUT Specify a file to write output, otherwise default to\n stdout.\n --allow-invalid-csl-data\n Allow CSL Items that do not conform to the JSON\n Schema. Skips CSL pruning.\n --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}\n Set the logging level for stderr logging\n```\n\n## Development\n\nCreate a development environment using:\n\n```sh\nconda create --name manubot-dev --channel conda-forge \\\n python=3.6 jinja2 pandas pytest pandoc\nconda activate manubot-dev # assumes conda >= 4.4\npip install --editable .\n```\n\nInside this environment, use `pytest` to run the test suite.\nYou can also use the `manubot` CLI to build manuscripts.\nFor example:\n\n```sh\nmanubot process \\\n --content-directory=tests/manuscripts/example/content \\\n --output-directory=tests/manuscripts/example/output \\\n --log-level=DEBUG\n```\n\n## Release instructions\n\n[![PyPI](https://img.shields.io/pypi/v/manubot.svg)](https://pypi.org/project/manubot/)\n\nThis section is only relevant for project maintainers.\nTravis CI deployments are used to upload releases to [PyPI](https://pypi.org/project/manubot).\nTo create a new release, bump the `__version__` in [`manubot/__init__.py`](manubot/__init__.py).\nThen run the following commands:\n\n```sh\nTAG=v`python setup.py --version`\n# Commit updated __version__ info\ngit add manubot/__init__.py release-notes/$TAG.md\ngit commit --message=\"Prepare $TAG release\"\ngit push\n# Create & push tag (assuming upstream is the manubot organization remote)\ngit tag --annotate $TAG --file=release-notes/$TAG.md\ngit push upstream $TAG\n```\n\n## Goals & Acknowledgments\n\nOur goal is to create scholarly infrastructure that encourages open science and assists reproducibility.\nAccordingly, we hope for the Manubot software and philosophy to be adopted widely, by both academic and commercial entities.\nAs such, Manubot is free/libre and open source software (see [`LICENSE.md`](LICENSE.md)).\n\nWe would like to thank the contributors and funders whose support makes this project possible.\nSpecifically, Manubot development has been financially supported by:\n\n- the **Alfred P. Sloan Foundation** in [Grant G-2018-11163](https://sloan.org/grant-detail/8501) to [**@dhimmel**](https://github.com/dhimmel).\n- the **Gordon & Betty Moore Foundation** ([**@DDD-Moore**](https://github.com/DDD-Moore)) in [Grant GBMF4552](https://www.moore.org/grant-detail?grantId=GBMF4552) to [**@cgreene**](https://github.com/cgreene).\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/manubot/manubot", "keywords": "manuscript markdown publishing references citations", "license": "BSD 3-Clause", "maintainer": "", "maintainer_email": "", "name": "manubot", "package_url": "https://pypi.org/project/manubot/", "platform": "", "project_url": "https://pypi.org/project/manubot/", "project_urls": { "Homepage": "https://github.com/manubot/manubot" }, "release_url": "https://pypi.org/project/manubot/0.2.4/", "requires_dist": [ "errorhandler", "isbnlib", "jinja2", "jsonref", "jsonschema", "packaging", "pandas", "pybase62", "pyyaml", "ratelimiter", "requests-cache", "requests" ], "requires_python": ">=3.6", "summary": "Manuscript bot for automated scientific publishing", "version": "0.2.4" }, "last_serial": 5520315, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d8e571d49b0f1b0a847b0b672a55a4a3", "sha256": "83065ce6b4c302506ed092d7c50f2f1f3f57313a95eda21ebc1d52cbdf1c1101" }, "downloads": -1, "filename": "manubot-0.1.0.tar.gz", "has_sig": false, "md5_digest": "d8e571d49b0f1b0a847b0b672a55a4a3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13861, "upload_time": "2018-08-04T18:38:59", "url": "https://files.pythonhosted.org/packages/6b/9e/e9f158e25a827f844c61b624050db1e6a1ee70c90b728efdd3e75c510559/manubot-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a9cafe89caea753f0757cfe5ee41a2a1", "sha256": "c1c9aabb67705320638c2070ddd6f4a87d56c77b6180ad8c385806c25ea9d822" }, "downloads": -1, "filename": "manubot-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a9cafe89caea753f0757cfe5ee41a2a1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 26334, "upload_time": "2018-10-07T12:07:38", "url": "https://files.pythonhosted.org/packages/60/ec/7a784ab4e3abcaf4a9b3fc2127ab870322f14431a23f166f965964fc7c3a/manubot-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71858d1898ba7166cbe3a9311810410a", "sha256": "74711219ee92a6e0b1649172dcba97fe4361c663cf8311212bf54ebd578ea326" }, "downloads": -1, "filename": "manubot-0.2.0.tar.gz", "has_sig": false, "md5_digest": "71858d1898ba7166cbe3a9311810410a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 20647, "upload_time": "2018-10-07T12:07:39", "url": "https://files.pythonhosted.org/packages/a0/16/76cba109adaf5b57c494069e0fe64c4de086bc5f38f7894085efee737e85/manubot-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "aa7da2e31508d9feabd72cbed374d775", "sha256": "fb00de204c72e608ae989e5b422f4f77eeafa866930eb65e882bb0427a77a2dc" }, "downloads": -1, "filename": "manubot-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "aa7da2e31508d9feabd72cbed374d775", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 28545, "upload_time": "2018-11-15T19:01:51", "url": "https://files.pythonhosted.org/packages/33/f0/13047987aeb0cb78437ac7081d32985a321219d62ce1e5ce70fdbdae0e5e/manubot-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80ab3e0b2077139b1f9d9c66326c2bc0", "sha256": "3c4e3f6eae5087d470d14884e64b88fa4a9d5e5e8d6b87a81d35b684b91fe101" }, "downloads": -1, "filename": "manubot-0.2.1.tar.gz", "has_sig": false, "md5_digest": "80ab3e0b2077139b1f9d9c66326c2bc0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 22719, "upload_time": "2018-11-15T19:01:53", "url": "https://files.pythonhosted.org/packages/65/bf/7d954b7fb89fdc05c0624ef5a8a244bab0b97cf8020e3a4d9b98b8b6f30f/manubot-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ef1f2395017d89a1458b7aea6594cc24", "sha256": "0340bd97095d7502742bf5fce6f9261ab88d97454ae84747751d0c83c198e48d" }, "downloads": -1, "filename": "manubot-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "ef1f2395017d89a1458b7aea6594cc24", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 45615, "upload_time": "2018-12-17T22:02:43", "url": "https://files.pythonhosted.org/packages/b9/a3/a23578751ceab0d73c4bf21f427e096c1fcc0f76a494392c573c23a04741/manubot-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d78c99aff1b54482efa67239cc1a3eb", "sha256": "a031fe9d5a8b8018a75cfdb1310d79caefa3a80c9098cf0b2eee8f8b88399c30" }, "downloads": -1, "filename": "manubot-0.2.2.tar.gz", "has_sig": false, "md5_digest": "6d78c99aff1b54482efa67239cc1a3eb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 33060, "upload_time": "2018-12-17T22:02:45", "url": "https://files.pythonhosted.org/packages/5f/0f/6abce53be873d7bdae5645c87fd41feb9203f7fa8d3b07ebc0a9d830d80e/manubot-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "b8fcebae53b3457d84456a643a6ebb10", "sha256": "14e53c61e69a7cffb5222067e41f31c065be2e19fc9532a02bdbeb0c317c0bba" }, "downloads": -1, "filename": "manubot-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b8fcebae53b3457d84456a643a6ebb10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 48404, "upload_time": "2019-02-12T03:27:33", "url": "https://files.pythonhosted.org/packages/fb/ee/c6460f8c4e1b7c40eaaec54d4a41a6f76549b16361716b87c6fda0cee127/manubot-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "60b8fea34ed2d33178d03c3a06f1724e", "sha256": "e946571a92e1ce9a0aa37774cbeb2b28e59d2cd86508355e2d70fce8f25ce4ef" }, "downloads": -1, "filename": "manubot-0.2.3.tar.gz", "has_sig": false, "md5_digest": "60b8fea34ed2d33178d03c3a06f1724e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 35437, "upload_time": "2019-02-12T03:27:35", "url": "https://files.pythonhosted.org/packages/7a/f6/32f7f4bfcb05e077a0291c67b06bcdda8a2a34e0946e675228dc31e61e36/manubot-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "c5dabdb8aae6223c4ea7fc0a0acdb8e1", "sha256": "5ddea1ff1049875ed5442d107c5abc79e82b355d09f1816e822a2b04b82afd72" }, "downloads": -1, "filename": "manubot-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c5dabdb8aae6223c4ea7fc0a0acdb8e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 56238, "upload_time": "2019-07-11T21:21:16", "url": "https://files.pythonhosted.org/packages/62/73/da3cf069ccfd487b434f651bcf31e3477e33d57665e2ff70e64429a2863a/manubot-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6a320a8001599bd0e06a2e86d2b54ec", "sha256": "aa6407edfdfa358e01167e4f899adb79f7b5f6c1b86be1df3cfcbff511329cd2" }, "downloads": -1, "filename": "manubot-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d6a320a8001599bd0e06a2e86d2b54ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 45252, "upload_time": "2019-07-11T21:21:18", "url": "https://files.pythonhosted.org/packages/9a/b0/7d888d9559580bb7279732b33ed42353b8c9b3092a0ab069ca02d283ee1a/manubot-0.2.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c5dabdb8aae6223c4ea7fc0a0acdb8e1", "sha256": "5ddea1ff1049875ed5442d107c5abc79e82b355d09f1816e822a2b04b82afd72" }, "downloads": -1, "filename": "manubot-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c5dabdb8aae6223c4ea7fc0a0acdb8e1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 56238, "upload_time": "2019-07-11T21:21:16", "url": "https://files.pythonhosted.org/packages/62/73/da3cf069ccfd487b434f651bcf31e3477e33d57665e2ff70e64429a2863a/manubot-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6a320a8001599bd0e06a2e86d2b54ec", "sha256": "aa6407edfdfa358e01167e4f899adb79f7b5f6c1b86be1df3cfcbff511329cd2" }, "downloads": -1, "filename": "manubot-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d6a320a8001599bd0e06a2e86d2b54ec", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 45252, "upload_time": "2019-07-11T21:21:18", "url": "https://files.pythonhosted.org/packages/9a/b0/7d888d9559580bb7279732b33ed42353b8c9b3092a0ab069ca02d283ee1a/manubot-0.2.4.tar.gz" } ] }