{ "info": { "author": "Amperser Labs", "author_email": "hello@amperser.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython" ], "description": "\n\"proselint\n\n[![Build Status](https://travis-ci.org/amperser/proselint.svg)](https://travis-ci.org/amperser/proselint)\n[![Build status](https://ci.appveyor.com/api/projects/status/hfgv05nkjxkg2gcc/branch/master?svg=true)](https://ci.appveyor.com/project/suchow/proselint-knwyf/branch/master)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n[![Code Climate](https://codeclimate.com/repos/5538989ee30ba0793100090f/badges/e10a2fe18a9256d69e2a/gpa.svg)](https://codeclimate.com/repos/5538989ee30ba0793100090f/feed)\n[![Coverage Status](https://coveralls.io/repos/github/amperser/proselint/badge.svg?branch=master)](https://coveralls.io/github/amperser/proselint?branch=master)\n[![Dependency Status](https://gemnasium.com/amperser/proselint.svg)](https://gemnasium.com/amperser/proselint)\n[![License](https://img.shields.io/badge/License-BSD-blue.svg)](https://en.wikipedia.org/wiki/BSD_licenses)\n\nWriting is notoriously hard, even for the best writers, and it's not for lack of good advice \u2014 a tremendous amount of knowledge about the craft is strewn across usage guides, dictionaries, technical manuals, essays, pamphlets, websites, and the hearts and minds of great authors and editors. But poring over Strunk & White hardly makes one a better writer \u2014 it turns you into neither Strunk nor White. And nobody has the capacity to apply all the advice from *Garner\u2019s Modern American Usage*, a 975-page usage guide, to everything they write. In fact, the whole notion that one becomes a better writer by reading advice on writing rests on untenable assumptions about learning and memory. The traditional formats of knowledge about writing are thus essentially inert, waiting to be transformed.\n\nWe devised a simple solution: `proselint`, a linter for English prose. (A linter is a computer program that, like a spell checker, scans through a document and analyzes it.)\n\n`proselint` places the world\u2019s greatest writers and editors by your side, where they whisper suggestions on how to improve your prose. You\u2019ll be guided by advice inspired by Bryan Garner, David Foster Wallace, Chuck Palahniuk, Steve Pinker, Mary Norris, Mark Twain, Elmore Leonard, George Orwell, Matthew Butterick, William Strunk, E.B. White, Philip Corbett, Ernest Gowers, and the editorial staff of the world\u2019s finest literary magazines and newspapers, among others. Our goal is to aggregate knowledge about best practices in writing and to make that knowledge immediately accessible to all authors in the form of a linter for prose.\n\n`proselint` is a command-line utility that can be integrated into existing tools.\n\n### Installation\n\nTo get this up and running, install it using [pip](https://packaging.python.org/installing/#use-pip-for-installing):\n\n```\npip install proselint\n```\n\n#### Fedora\n\n```\nsudo dnf install proselint\n```\n\n#### Debian\n\n```\nsudo apt install python3-proselint\n```\n\n#### Ubuntu\n\n```\nsudo add-apt-repository universe\nsudo apt install python3-proselint\n```\n\n### Plugins for other software\n\n`proselint` is available on:\n\n- [x] A [demo editor](http://proselint.com/write)\n- [x] [Sublime Text](https://github.com/amperser/proselint/tree/master/plugins/sublime/SublimeLinter-contrib-proselint)\n- [x] [Atom Editor](https://github.com/smockle/linter-proselint) (thanks to [Clay Miller](https://github.com/smockle)).\n- [x] [Emacs via Flycheck](http://www.flycheck.org/).\n- [x] Vim via [ALE](https://github.com/w0rp/ale) or [Syntastic](https://github.com/vim-syntastic/syntastic) (thanks to @lcd047, @Carreau, and [Daniel M. Capella](https://github.com/polyzen))\n- [x] [Phabricator's `arc` CLI](https://github.com/google/arc-proselint) (thanks to [Jeff Verkoeyen](https://github.com/jverkoey))\n- [x] [Danger](https://github.com/dbgrandi/danger-prose) (thanks to [David Grandinetti](https://github.com/dbgrandi) and [Orta Therox](https://github.com/orta))\n- [x] [Visual Studio Code](https://github.com/ppeszko/vscode-proselint) (thanks to [Patryk Peszko](https://github.com/ppeszko))\n- [x] [coala](https://github.com/coala-analyzer/bear-docs/blob/master/docs/ProseLintBear.rst) (thanks to the [coala Development Group](https://github.com/coala-analyzer))\n- [x] [IntelliJ](https://github.com/kropp/intellij-proselint) (by [Victor Kropp](https://github.com/kropp))\n- [x] [pre-commit](https://pre-commit.com/) (by [Andy Airey](https://github.com/aairey))\n\n### Usage\n\nSuppose you had a document `text.md` with the following text:\n\n```\nJohn is very unique.\n```\n\nYou can run `proselint` over the document using the command line:\n\n```bash\n\u276f proselint text.md\n```\n\nThis prints a list of suggestions to stdout, one per line. Each suggestion has the form:\n\n```bash\ntext.md::: \n```\n\nFor example,\n\n```bash\ntext.md:0:10: wallace.uncomparables Comparison of an uncomparable: 'unique' cannot be compared.\n```\n\nThe command-line utility can also print suggestions in JSON using the `--json` flag. In this case, the output is considerably richer:\n\n```javascript\n{\n // Type of check that output this suggestion.\n check: \"wallace.uncomparables\",\n\n // Message to describe the suggestion.\n message: \"Comparison of an uncomparable: 'unique' cannot be compared.\",\n\n // The person or organization giving the suggestion.\n source: \"David Foster Wallace\"\n\n // URL pointing to the source material.\n source_url: \"http://www.telegraph.co.uk/a/9715551\"\n\n // Line where the error starts.\n line: 0,\n\n // Column where the error starts.\n column: 10,\n\n // Index in the text where the error starts.\n start: 10,\n\n // Index in the text where the error ends.\n end: 21,\n\n // start - end\n extent: 11,\n\n // How important is this? Can be \"suggestion\", \"warning\", or \"error\".\n severity: \"warning\",\n\n // Possible replacements.\n replacements: [\n {\n value: \"unique\"\n }\n ]\n}\n```\n\nTo run the linter as part of another program, you can use the `lint` function in `proselint.tools`:\n\n```python\nimport proselint\n\nsuggestions = proselint.tools.lint(\"This sentence is very unique\")\n```\n\nThis will return a list of suggestions:\n\n```python\n[('weasel_words.very', \"Substitute 'damn' every time you're inclined to write 'very;' your editor will delete it and the writing will be just as it should be.\", 0, 17, 17, 22, 5, 'warning', None), ('uncomparables.misc', \"Comparison of an uncomparable: 'very unique.' is not comparable.\", 0, 17, 17, 29, 12, 'warning', None)]\n```\n\n### Checks\n\nYou can disable any of the checks by modifying `$XDG_CONFIG_HOME/proselint/config`. If `$XDG_CONFIG_HOME` is not set or empty, `~/.config/proselint/config` will be used.\nAdditionally for compatible reason, the legacy configuration `~/.proselintrc` will be used if `$XDG_CONFIG_HOME/proselint/config` does not exist.\n\n```json\n{\n \"checks\": {\n \"typography.diacritical_marks\": false\n }\n}\n```\n\n| ID | Description |\n| ----- | --------------- |\n| `airlinese.misc` | Avoiding jargon of the airline industry |\n| `annotations.misc` | Catching annotations left in the text |\n| `archaism.misc` | Avoiding archaic forms |\n| `cliches.hell` | Avoiding a common clich\u00e9 |\n| `cliches.misc` | Avoiding clich\u00e9s |\n| `consistency.spacing` | Consistent sentence spacing |\n| `consistency.spelling` | Consistent spelling |\n| `corporate_speak.misc` | Avoiding corporate buzzwords |\n| `cursing.filth` | Words to avoid |\n| `cursing.nfl` | Avoiding words banned by the NFL |\n| `dates_times.am_pm` | Using the right form for the time of day |\n| `dates_times.dates` | Stylish formatting of dates |\n| `hedging.misc` | Not hedging |\n| `hyperbole.misc` | Not being hyperbolic |\n| `jargon.misc` | Avoiding miscellaneous jargon |\n| `lgbtq.offensive_terms` | Avoding offensive LGBTQ terms |\n| `lgbtq.terms` | Misused LGBTQ terms |\n| `lexical_illusions.misc` | Avoiding lexical illusions |\n| `links.broken` | Linking only to existing sites |\n| `malapropisms.misc` | Avoiding common malapropisms |\n| `misc.apologizing` | Being confident |\n| `misc.back_formations` | Avoiding needless backformations |\n| `misc.bureaucratese` | Avoiding bureaucratese |\n| `misc.but` | Avoid starting a paragraph with \"But...\" |\n| `misc.capitalization` | Capitalizing only what ought to be capitalized |\n| `misc.chatspeak` | Avoiding lolling and other chatspeak |\n| `misc.commercialese` | Avoiding jargon of the commercial world |\n| `misc.currency` | Avoiding redundant currency symbols |\n| `misc.debased` | Avoiding debased language |\n| `misc.false_plurals` | Avoiding false plurals |\n| `misc.illogic` | Avoiding illogical forms |\n| `misc.inferior_superior` | Superior to, not than |\n| `misc.latin` | Avoiding overuse of Latin phrases |\n| `misc.many_a` | Many a singular |\n| `misc.metaconcepts` | Avoiding overuse of metaconcepts |\n| `misc.narcissism` | Talking about the subject, not its study |\n| `misc.phrasal_adjectives` | Hyphenating phrasal adjectives |\n| `misc.preferred_forms` | Miscellaneous preferred forms |\n| `misc.pretension` | Avoiding being pretentious |\n| `misc.professions` | Calling jobs by the right name |\n| `misc.punctuation` | Using punctuation assiduously |\n| `misc.scare_quotes` | Using scare quotes only when needed |\n| `misc.suddenly` | Avoiding the word suddenly |\n| `misc.tense_present` | Advice from Tense Present |\n| `misc.waxed` | Waxing poetic |\n| `misc.whence` | Using \"whence\" |\n| `mixed_metaphors.misc` | Not mixing metaphors |\n| `mondegreens.misc` | Avoiding mondegreen |\n| `needless_variants.misc` | Using the preferred form |\n| `nonwords.misc` | Avoid using nonwords |\n| `oxymorons.misc` | Avoiding oxymorons |\n| `psychology.misc` | Avoiding misused psychological terms |\n| `redundancy.misc` | Avoiding redundancy and saying things twice |\n| `redundancy.ras_syndrome` | Avoiding RAS syndrome |\n| `skunked_terms.misc` | Avoid using skunked terms |\n| `spelling.able_atable` | -able vs. -atable |\n| `spelling.able_ible` | -able vs. -ible |\n| `spelling.athletes` | Spelling of athlete names |\n| `spelling.em_im_en_in` | -em vs. -im and -en vs. -in |\n| `spelling.er_or` | -er vs. -or |\n| `spelling.in_un` | in- vs. un- |\n| `spelling.misc` | Spelling words corectly |\n| `security.credit_card` | Keeping credit card numbers secret |\n| `security.password` | Keeping passwords secret |\n| `sexism.misc` | Avoiding sexist language |\n| `terms.animal_adjectives` | Animal adjectives |\n| `terms.denizen_labels` | Calling denizens by the right name |\n| `terms.eponymous_adjectives` | Calling people by the right name |\n| `terms.venery` | Call groups of animals by the right name |\n| `typography.diacritical_marks` | Using d\u00efacr\u00edtic\u00e2l marks |\n| `typography.exclamation` | Avoiding overuse of exclamation |\n| `typography.symbols` | Using the right symbols |\n| `uncomparables.misc` | Not comparing uncomparables |\n| `weasel_words.misc` | Avoiding weasel words |\n| `weasel_words.very` | Avoiding the word \"very\" |\n\n### Contributing\n\nInterested in contributing to `proselint`? Great \u2014 there are plenty of ways you can help. Read more on [our website](http://proselint.com/contributing/), where we describe how you can help us build `proselint` into the greatest writing tool in the world.\n\n- [Issue Tracker](http://github.com/amperser/proselint/issues)\n- [Source Code](http://github.com/amperser/proselint)\n\n### Support\n\nIf you run into a problem, please [open an issue](http://github.com/amperser/proselint/issues) in or send an email to hello@amperser.com.\n\n### Running Automated Tests\n\nAutomated tests are included in the `proselint/tests` directory. To run these tests locally, use the test runner [pytest](https://docs.pytest.org/en/latest/) and run the following commands:\n```bash\npytest\n```\nand watch the output. Nose is compatible with Python versions 2.7, 3.4, 3.5 and 3.6.\n\nAll automated tests in `tests/` are run as part of each submitted pull request, including newly added tests.\n\n### License\n\nThe project is licensed under the BSD license.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "http://github.com/amperser/proselint/tarball/0.10.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/amperser/proselint", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "proselint", "package_url": "https://pypi.org/project/proselint/", "platform": "", "project_url": "https://pypi.org/project/proselint/", "project_urls": { "Download": "http://github.com/amperser/proselint/tarball/0.10.2", "Homepage": "http://github.com/amperser/proselint" }, "release_url": "https://pypi.org/project/proselint/0.10.2/", "requires_dist": [ "click", "future", "six" ], "requires_python": "", "summary": "A linter for prose.", "version": "0.10.2" }, "last_serial": 4134795, "releases": { "0.10.0": [ { "comment_text": "", "digests": { "md5": "c150b58961788a9b5166b59493836245", "sha256": "9cb2d70852d423d323c85fc73f27404772fd98d1f0fe21f496e437a7cfee6991" }, "downloads": -1, "filename": "proselint-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c150b58961788a9b5166b59493836245", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 111426, "upload_time": "2018-07-23T14:44:23", "url": "https://files.pythonhosted.org/packages/7e/15/0065661224d8517a4f946ad0cfb1e5ea4a5aebefb1db10c00c083d37bdb0/proselint-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c1f6b33f64266f617fb5c88389b9718c", "sha256": "0ffaf8238a71b51a54c43bd60b69df2370ab9ccfc018e23120323ee16a49b94e" }, "downloads": -1, "filename": "proselint-0.10.0.tar.gz", "has_sig": false, "md5_digest": "c1f6b33f64266f617fb5c88389b9718c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85345, "upload_time": "2018-07-23T14:44:24", "url": "https://files.pythonhosted.org/packages/ed/84/d2adefc48e8cf4d8c385cd39d68c9ff67a714a0a95b5ee25e6c7c4448bf0/proselint-0.10.0.tar.gz" } ], "0.10.1": [ { "comment_text": "", "digests": { "md5": "5207d12c2c232f436705683f61031616", "sha256": "eeb21299ba05a3ffac94dda1083f7e21eb8695f6df14ddf5d15c51755d67ea20" }, "downloads": -1, "filename": "proselint-0.10.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5207d12c2c232f436705683f61031616", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 111495, "upload_time": "2018-08-02T14:32:37", "url": "https://files.pythonhosted.org/packages/f0/18/6cb125ed5267ada3ca9d34593da6d85de776fc5cb924653448e8d0c839ec/proselint-0.10.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7e9d221c0f97e2a9c90009300754d8c0", "sha256": "64ddfb036b63fa062c1303a784924c842e490ff6b7d90ee84bf9622422f888d8" }, "downloads": -1, "filename": "proselint-0.10.1.tar.gz", "has_sig": false, "md5_digest": "7e9d221c0f97e2a9c90009300754d8c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 85483, "upload_time": "2018-08-02T14:32:38", "url": "https://files.pythonhosted.org/packages/f3/e8/97487c264e3aa08171bc9a028f65e023ecd1e77680b23df67b871c840fda/proselint-0.10.1.tar.gz" } ], "0.10.2": [ { "comment_text": "", "digests": { "md5": "f0899cf57fa6bae4b3800a6f0315530f", "sha256": "7db295005d1a2c597ab44b359fea95bb6b92e739784aede69f8ba7098b3c3244" }, "downloads": -1, "filename": "proselint-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f0899cf57fa6bae4b3800a6f0315530f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 111497, "upload_time": "2018-08-04T04:24:36", "url": "https://files.pythonhosted.org/packages/83/b3/892f7312cd23d0d497014a05fd2ebf395f1ecc24b1341d019396bc25955f/proselint-0.10.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68b800b5df2b98b2759087749eb88660", "sha256": "3a87eb393056d1bc77d898e4bcf8998f50e9ad84f7b9ff7cf2720509ac8ef904" }, "downloads": -1, "filename": "proselint-0.10.2.tar.gz", "has_sig": false, "md5_digest": "68b800b5df2b98b2759087749eb88660", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 100979, "upload_time": "2018-08-04T04:24:37", "url": "https://files.pythonhosted.org/packages/42/ff/8e7ad0108b8faffdf2ec7d170b4a8a3c9bc91f5077debf5381ef14702588/proselint-0.10.2.tar.gz" } ], "0.2.0": [], "0.2.1": [ { "comment_text": "", "digests": { "md5": "7e87c86a672f3237ddfd91f080ae1b28", "sha256": "db674033a5e10b07225162a49e6d5debfcd66b1aac16e724ce12ea4135def0c4" }, "downloads": -1, "filename": "proselint-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7e87c86a672f3237ddfd91f080ae1b28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43337, "upload_time": "2015-09-30T18:32:06", "url": "https://files.pythonhosted.org/packages/53/a8/6e3148c37cba1dbd88ebf430c1c973ab37ec87f7ada172ed65b22d31faec/proselint-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e2c155e51b65ffbdfd99b7e07af6b41a", "sha256": "18e6dd177fa3adb1ce32528aca177401208a04cbb2cd5785ed10c4b9639e5370" }, "downloads": -1, "filename": "proselint-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e2c155e51b65ffbdfd99b7e07af6b41a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42844, "upload_time": "2015-09-30T19:09:04", "url": "https://files.pythonhosted.org/packages/2b/35/be2154e6f705f992e0244d46f8d50040dfae4a42d250c9d3f2e78709bdb2/proselint-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "f62e22ab42bd7360ea8f0979f5db3be2", "sha256": "69e506e5c2deeb6a22ec15e099f89d74047c59168465e5c38b4851c13a291444" }, "downloads": -1, "filename": "proselint-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f62e22ab42bd7360ea8f0979f5db3be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54706, "upload_time": "2015-09-30T19:54:52", "url": "https://files.pythonhosted.org/packages/15/c2/b1dfb667b538ea3e0e76a39dbb80683d2afc2c2d230b72dbd007ce08dc3f/proselint-0.3.1.tar.gz" } ], "0.3.3": [], "0.3.4": [ { "comment_text": "", "digests": { "md5": "d3cbd97b0d229301e92c9eb33e6780fc", "sha256": "5b06bf65f6900ff3329b8ae9e8d38052b166671815c9fd52315fe68d795e4eaa" }, "downloads": -1, "filename": "proselint-0.3.4.tar.gz", "has_sig": false, "md5_digest": "d3cbd97b0d229301e92c9eb33e6780fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54492, "upload_time": "2015-10-01T06:34:18", "url": "https://files.pythonhosted.org/packages/6e/ed/64db4ee750882b6968723a94d5705254a3962f08842815977cddb51f34ea/proselint-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "e212c21564d73c20bf082d3306ce5da3", "sha256": "17a8590501da25fab40b25e1eb7137f8a4779a3711d2d8d48d9d25437ae8e0e1" }, "downloads": -1, "filename": "proselint-0.3.5.tar.gz", "has_sig": false, "md5_digest": "e212c21564d73c20bf082d3306ce5da3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56292, "upload_time": "2015-10-20T06:15:02", "url": "https://files.pythonhosted.org/packages/7b/97/8a024a705e9fb7ca5bffe33c421f9c0ee8a55c7e072d8db9c3c223d34c11/proselint-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "8776df08dd388bf5d3553ab4fd1f8694", "sha256": "807013624c9cd9c5edcbff4c6046bb393feb4d3290424c54b5bbbc46873f403b" }, "downloads": -1, "filename": "proselint-0.3.6.tar.gz", "has_sig": false, "md5_digest": "8776df08dd388bf5d3553ab4fd1f8694", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60829, "upload_time": "2016-03-07T08:50:40", "url": "https://files.pythonhosted.org/packages/94/d2/21954d6da645e0df3d4d020a462132b5fab846904656ef0aaec95374a195/proselint-0.3.6.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a732ec8e26009496caade157f4c4be48", "sha256": "6c19132f3adb5d5b3729a9a1d41ec80b231f4f336c5edc537939dd8fc68fafbf" }, "downloads": -1, "filename": "proselint-0.4.0.tar.gz", "has_sig": false, "md5_digest": "a732ec8e26009496caade157f4c4be48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65197, "upload_time": "2016-03-08T18:23:27", "url": "https://files.pythonhosted.org/packages/95/9e/61a88d881cf9adc899ee2af1d0aef8af5b6536efe47f7e75cf8495387ea4/proselint-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "fcdeb07c6e98ebe995cbc404f1ea386a", "sha256": "3eaac5b1de637376146fff98a4e71e9b6e0adcc4bf451b70c2ccbb4db1b7f6ee" }, "downloads": -1, "filename": "proselint-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fcdeb07c6e98ebe995cbc404f1ea386a", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 105339, "upload_time": "2016-03-19T08:39:46", "url": "https://files.pythonhosted.org/packages/86/e1/d3d7b318a30d257aa2d116c898a40c2b19db6ea129b49146d11f79797711/proselint-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce6788597171333b4be6ea4ed23b02ee", "sha256": "8a584027790cd7faa66db3e8b20ac22d7f087e7df609bf0c2cbbe5e4b3b7dbac" }, "downloads": -1, "filename": "proselint-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ce6788597171333b4be6ea4ed23b02ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67676, "upload_time": "2016-03-19T08:36:35", "url": "https://files.pythonhosted.org/packages/a0/fb/3eaf5463a1f8aeafc28301e2436b36356d825716540d97d8ed861aecbbd4/proselint-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "e608d2d10a2bb69c22fa0708dc71882e", "sha256": "c313523aed0bf04c769a0e2e8356cee8e6e2ca94465be31e3bc41a9784c15e73" }, "downloads": -1, "filename": "proselint-0.4.2.tar.gz", "has_sig": false, "md5_digest": "e608d2d10a2bb69c22fa0708dc71882e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67677, "upload_time": "2016-03-19T08:36:05", "url": "https://files.pythonhosted.org/packages/db/d2/5507d79623dbc0ce1f6009f7ac8082fbdc64220ebb69afcff44060046420/proselint-0.4.2.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "4934d29f11cfcf3697bc6b5af9d73b07", "sha256": "23fa4dd738b9188141172a0e7c2113d71c6745bfe114d3c7877b41edf22c9c19" }, "downloads": -1, "filename": "proselint-0.4.3.tar.gz", "has_sig": false, "md5_digest": "4934d29f11cfcf3697bc6b5af9d73b07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67692, "upload_time": "2016-03-20T05:36:35", "url": "https://files.pythonhosted.org/packages/b9/df/556139c4a1c28d3ee0f2d363ac325684e1c318166df3e47e71018e802cb7/proselint-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "4ba7719ee83be0d94f3cee28ceeae002", "sha256": "81e59e8e5d7c1950c1ce2acb199af1c881603fe37575d231398dd2e0bad0c11b" }, "downloads": -1, "filename": "proselint-0.4.4.tar.gz", "has_sig": false, "md5_digest": "4ba7719ee83be0d94f3cee28ceeae002", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67930, "upload_time": "2016-03-30T02:53:05", "url": "https://files.pythonhosted.org/packages/e8/d6/b66a1d3513c6ca445500bf1a8ffd498a614017e9fe109adb23eaa67f5d2f/proselint-0.4.4.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "3cbb5b3e7eb6f061c6c6ebfa68d70360", "sha256": "2c14b2d055963e1c09c9a1117e0a5a68391c2cffadd34c4d3134c27c2a687f30" }, "downloads": -1, "filename": "proselint-0.5.0.tar.gz", "has_sig": false, "md5_digest": "3cbb5b3e7eb6f061c6c6ebfa68d70360", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68251, "upload_time": "2016-03-31T06:35:48", "url": "https://files.pythonhosted.org/packages/0e/f0/e3277a3695d247484c633f2a8f63dd7447eca32eb47dcf9ce3e04c54f9cd/proselint-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "9c41029de19948db88c42802845d99d0", "sha256": "a9174de80162acdb3e33b018dd509377bec7fff4349ec0fbc23c067c1ddcf98a" }, "downloads": -1, "filename": "proselint-0.5.1.tar.gz", "has_sig": false, "md5_digest": "9c41029de19948db88c42802845d99d0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68792, "upload_time": "2016-04-02T19:47:33", "url": "https://files.pythonhosted.org/packages/6c/9e/c2062cd3e226e961d85b524684b4e27faa7f5ebe1060cc98def63e7f0780/proselint-0.5.1.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "ed37025278691f54e65e1d218a28636f", "sha256": "bbb4f95bad952146a7260d5892b1ec45ca54728fb163006a527aa12d1e9ab880" }, "downloads": -1, "filename": "proselint-0.5.3.tar.gz", "has_sig": false, "md5_digest": "ed37025278691f54e65e1d218a28636f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68983, "upload_time": "2016-04-05T16:16:37", "url": "https://files.pythonhosted.org/packages/0c/97/b59dad2f14ee788f21fbbcb244703ade7db0cf01a48b7cae7502622c919b/proselint-0.5.3.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "8996e4708166284b8b83c928e0f6b200", "sha256": "01e5cfacf909b82a9d505790e26d1195ea887f28cfc7e858ce8053c8c626423d" }, "downloads": -1, "filename": "proselint-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8996e4708166284b8b83c928e0f6b200", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 112306, "upload_time": "2016-07-01T12:49:44", "url": "https://files.pythonhosted.org/packages/68/06/9f8cf6d2e6ad74d38b952e36e2e16e71784f787bcaea56249594208c4623/proselint-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "318822144c57164e7c7c6353b56449d1", "sha256": "fc4fa1646a52edcae75408d0bc52138203201b8e304f7275be36a55aca0cdbdb" }, "downloads": -1, "filename": "proselint-0.6.0.tar.gz", "has_sig": false, "md5_digest": "318822144c57164e7c7c6353b56449d1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74444, "upload_time": "2016-07-01T12:49:16", "url": "https://files.pythonhosted.org/packages/5b/ef/de815ab5b727e79a115545b980035e7b06c28b243c879c46da1ced630093/proselint-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "07889ec2387dba44192ea791d298429b", "sha256": "5e7281ca0abae844f18b31bdf4a545e563f50dfc446c980a7b8820fe1f0f56c2" }, "downloads": -1, "filename": "proselint-0.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "07889ec2387dba44192ea791d298429b", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 114670, "upload_time": "2016-07-18T07:28:45", "url": "https://files.pythonhosted.org/packages/b7/24/2d6b8215866a4c1fa86c7e5593479fae064bd0fd5fa8196c5fd74e4ea9a0/proselint-0.6.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3481c72fdaa2c01c64cbe936183e548", "sha256": "e3930c786f472577607f2977c0aeb7d070ca63e9086981e6c62190ff591b4a42" }, "downloads": -1, "filename": "proselint-0.6.1.tar.gz", "has_sig": false, "md5_digest": "b3481c72fdaa2c01c64cbe936183e548", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75456, "upload_time": "2016-07-18T07:28:36", "url": "https://files.pythonhosted.org/packages/f4/45/28d6af5661289d6313a89a76b2dbdbeb9af6e4f3c804e1a6ac423ddc74c7/proselint-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "a67d1f5439635ca8108ddbde118ba311", "sha256": "ec886ae96bd9eb51994d1fd44d94e937868171abd5f7a8e0066307c3e8591f85" }, "downloads": -1, "filename": "proselint-0.7.0-py2-none-any.whl", "has_sig": false, "md5_digest": "a67d1f5439635ca8108ddbde118ba311", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 125149, "upload_time": "2016-08-25T14:51:38", "url": "https://files.pythonhosted.org/packages/ee/82/e09917264cb18193687fe9cc64fb951db1481d2f07e13315405188b0bbed/proselint-0.7.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d6e77707e0ba4d7c240998571a23032a", "sha256": "094d808d44bf1a60dcb1465749be5cc44f4f6c146c04bc5f28976a833786e830" }, "downloads": -1, "filename": "proselint-0.7.0.tar.gz", "has_sig": false, "md5_digest": "d6e77707e0ba4d7c240998571a23032a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 78585, "upload_time": "2016-08-25T14:51:30", "url": "https://files.pythonhosted.org/packages/e6/78/c46f694a0e43ce47d0d6ae089f750131544018dc1119fc7da58ffd4b1e03/proselint-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "e782e1aa4c9344f1f96b241790d950d2", "sha256": "08d48494533f178eb7a978cbdf10ddf85ed7fc2eb486ff5e7d0aecfa08e81bbd" }, "downloads": -1, "filename": "proselint-0.8.0.tar.gz", "has_sig": false, "md5_digest": "e782e1aa4c9344f1f96b241790d950d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94169, "upload_time": "2017-02-23T06:14:51", "url": "https://files.pythonhosted.org/packages/1b/d2/2e6afa3f933a12bfb1eb588f1ec8c26f915935356d8a0e51b2e5c53bfd04/proselint-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "656659d41b1e76d2ad783d1c60e31f51", "sha256": "70eabcca8c6035c5dea8bd35b5da7b22a6992683c8c5d4199210753df60e3056" }, "downloads": -1, "filename": "proselint-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "656659d41b1e76d2ad783d1c60e31f51", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 126548, "upload_time": "2018-07-20T21:27:15", "url": "https://files.pythonhosted.org/packages/fc/91/72dfecc05bbb3bee6f07d60354396381ec49c862d0d9e96103ec805f843c/proselint-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8be23b95d9ef8bbcc0e0d73a3d5e5123", "sha256": "4b91f71b15aba9e1f44161261ad9b4e2b314ca663346f281750b80ee88982bba" }, "downloads": -1, "filename": "proselint-0.9.0.tar.gz", "has_sig": false, "md5_digest": "8be23b95d9ef8bbcc0e0d73a3d5e5123", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94834, "upload_time": "2018-07-20T21:27:17", "url": "https://files.pythonhosted.org/packages/32/1b/573ba8b6bf254906c7c305cb1708036d5f989c8997c89a7d01eba1e8a363/proselint-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f0899cf57fa6bae4b3800a6f0315530f", "sha256": "7db295005d1a2c597ab44b359fea95bb6b92e739784aede69f8ba7098b3c3244" }, "downloads": -1, "filename": "proselint-0.10.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f0899cf57fa6bae4b3800a6f0315530f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 111497, "upload_time": "2018-08-04T04:24:36", "url": "https://files.pythonhosted.org/packages/83/b3/892f7312cd23d0d497014a05fd2ebf395f1ecc24b1341d019396bc25955f/proselint-0.10.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68b800b5df2b98b2759087749eb88660", "sha256": "3a87eb393056d1bc77d898e4bcf8998f50e9ad84f7b9ff7cf2720509ac8ef904" }, "downloads": -1, "filename": "proselint-0.10.2.tar.gz", "has_sig": false, "md5_digest": "68b800b5df2b98b2759087749eb88660", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 100979, "upload_time": "2018-08-04T04:24:37", "url": "https://files.pythonhosted.org/packages/42/ff/8e7ad0108b8faffdf2ec7d170b4a8a3c9bc91f5077debf5381ef14702588/proselint-0.10.2.tar.gz" } ] }