{ "info": { "author": "University of Canterbury ComputerScience Education Research Group", "author_email": "csse-education-research@canterbury.ac.nz", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python :: 3", "Topic :: Text Processing :: Markup", "Topic :: Text Processing :: Markup :: HTML" ], "description": "|Linkie logo|\n\nLinkie\n==============================================================================\n\nLinkie looks through files for broken links using Python 3.5+\n\n|Build Status|\n\nUsage\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nLinkie will search all files within the directory it's run and any\nsubdirectories, and requires a simple YAML config file to run.\nYou can then run Linkie from the command line.\n\n.. code-block:: bash\n\n linkie\n\nYou can also pass Linkie a YAML file of configuration values (for example\n``linkie linkie.yaml``). The YAML file can contain the following optional\nsettings:\n\n1) ``exclude-directories`` - Any directories listed will be ignored, these\n are relative to the directory Linkie is run from.\n2) ``file-types`` - The file extensions to search for URLs.\n3) ``skip-urls`` - URLs to skip checking.\n\nExample configuration file (these are the default values Linkie uses):\n\n.. code-block:: yaml\n\n exclude-directories:\n - .git/\n - docs/build/\n\n file-types:\n - html\n - md\n - rst\n - txt\n\nLinkie can also be used within Python:\n\n.. code-block:: python3\n\n import linkie\n checker = linkie.Linkie() # Creates a linkie object.\n result = checker.run() # Returns 1 if broken links found, otherwise 0.\n\nYou can pass a dictionary of settings directly using Python:\n\n.. code-block:: python3\n\n import linkie\n settings = {\"file-types\": [\"md\", \"rst\"]}\n checker = linkie.Linkie(config=settings)\n\nYou can also use a config file within Python:\n\n.. code-block:: python3\n\n import linkie\n checker = linkie.Linkie(config_file_path='linkie.yaml')\n\nYou can also access the following attributes from the linkie after it's run:\n\n.. code-block:: python3\n\n linkie.urls # Dictionary of processed URLs and their data.\n linkie.status_counts # Dictionary of status codes and their counts.\n linkie.file_count # Number of files processed.\n\nLicense\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nLinkie is licensed under the MIT License. Read the `license file`_ for\nmore details.\n\nChangelog\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n1.4.0\n------------------------------------------------------------------------------\n\n- Update to only check links prefixed by one of [=\", (, <, ' '(a space)].\n- Linkie now finds all unique links at once, then uses multithreading to check them all.\n- Linkie now rechecks links that had a ConnectionError, as these are often valid.\n- Broken links in the SUMMARY are now also displayed with their status code.\n\n1.3.1\n------------------------------------------------------------------------------\n\n- Update logging configuration.\n- Update dependencies.\n\n1.3.0\n------------------------------------------------------------------------------\n\n- Set User-Agent to emulate browser viewing.\n- Use Python logging module.\n\n1.2.0\n------------------------------------------------------------------------------\n\n- Allow passing of variable of config settings in Python.\n\n1.1.1\n------------------------------------------------------------------------------\n\n- Update method for URLs with brackets.\n\n1.1.0\n------------------------------------------------------------------------------\n\n- Allow adding URLs to skip to configuration file.\n- Skip checking URLs that have already been checked.\n- Show connection error names instead of 999 status.\n- Uses class based object allowing user to retrieve values after running.\n\n1.0.0\n------------------------------------------------------------------------------\n\n- Initial linkie release.\n\nFAQ\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nWhy was this created as a Python package?\n------------------------------------------------------------------------------\n\nWe required a script to check our repositories for broken links.\nThis tool was initially written in Python, and a published Python package makes\nit easy for repositories to use this tool, in combination with pyup notifying\nif the package is updated.\n\nCan you update linkie to support this specific URL?\n------------------------------------------------------------------------------\n\nProbably not. This script was initally created as an internal tool so we are\nnot actively developing and supporting it compared to our other repositories.\nHowever we have published it freely under the MIT License to allow you to\ncopy and modify linkie as you wish.\n\nWill you get around to writing proper documentation?\n------------------------------------------------------------------------------\n\nMaybe. This script was initally created as an internal tool so doesn't have\nthe same level of polish as other projects we create. If we have more time\ndown the road, we may spend more time developing linkie.\n\nHow do I install the development version as local package?\n------------------------------------------------------------------------------\n\n1. ``$ git clone https://github.com/uccser/linkie.git``\n2. ``$ cd linkie``\n3. ``$ pip3 install .``\n\n.. |Linkie logo| image:: https://raw.githubusercontent.com/uccser/linkie/master/images/linkie-logo.png\n :target: https://github.com/uccser/linkie\n :alt: Linkie logo\n\n.. _license file: LICENSE\n\n.. |Build Status| image:: https://travis-ci.org/uccser/linkie.svg?branch=master\n :target: https://travis-ci.org/uccser/linkie\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/uccser/linkie", "keywords": "link url checker", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "linkie", "package_url": "https://pypi.org/project/linkie/", "platform": "", "project_url": "https://pypi.org/project/linkie/", "project_urls": { "Homepage": "https://github.com/uccser/linkie" }, "release_url": "https://pypi.org/project/linkie/1.4.0/", "requires_dist": [ "PyYaml (==5.1.1)", "requests (==2.22.0)" ], "requires_python": "~=3.4", "summary": "Linkie looks through files for broken links using Python 3.", "version": "1.4.0" }, "last_serial": 5564937, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "7d7f9f0f8d07623e4ef0136ff0728742", "sha256": "2f1eff0826d5aa0cc0c30e22a1bf78e9386c94c0d9224fc34fa7c5f8ddac9c19" }, "downloads": -1, "filename": "linkie-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d7f9f0f8d07623e4ef0136ff0728742", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 6062, "upload_time": "2018-03-11T08:05:52", "url": "https://files.pythonhosted.org/packages/7a/3e/38d18fa48706de176b1013d6d0fb3dff2042ec07df799821ed2e42cc3000/linkie-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b9a56e3780523ad0f057854b084815f", "sha256": "7610d40b48ddab63879da01a1ce57ec982e1ec09d5528b9525e71f1822847435" }, "downloads": -1, "filename": "linkie-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8b9a56e3780523ad0f057854b084815f", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 3840, "upload_time": "2018-03-11T08:05:54", "url": "https://files.pythonhosted.org/packages/60/b0/a3d701e29c084f161b8e1f560f0b8ee1fef37634cfb825eeb47f57280774/linkie-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "c4460c0cf63c3e33b060fb079f1135ff", "sha256": "bf0a90a70a708dd11e230375ec896d223927517b24dbe9f46fd80ddf30f0ebdc" }, "downloads": -1, "filename": "linkie-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c4460c0cf63c3e33b060fb079f1135ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 7815, "upload_time": "2018-03-13T06:13:43", "url": "https://files.pythonhosted.org/packages/8b/2a/ced95a2bb11fdc0e4f753060300dc0f3860ad60e1f818fe25ec2a9b02b63/linkie-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5ab00e821ccaf9774982a6358259d9a", "sha256": "e8119ecccf5886d3ecce40fbd446892eccf9d6dc636d28b409959bec26431d1a" }, "downloads": -1, "filename": "linkie-1.1.0.tar.gz", "has_sig": false, "md5_digest": "d5ab00e821ccaf9774982a6358259d9a", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 5160, "upload_time": "2018-03-13T06:13:46", "url": "https://files.pythonhosted.org/packages/95/c9/168c39b19c014bb47ceb343f680b6e66a6698fbcec7372c7f76f88671f17/linkie-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "edc138ea9871cf3572c0752b60f9317a", "sha256": "be195296ee84b4ff788bbfe1da303d9618d27badf0f68c3626a2421a648c8b3e" }, "downloads": -1, "filename": "linkie-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "edc138ea9871cf3572c0752b60f9317a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7815, "upload_time": "2018-03-13T09:23:29", "url": "https://files.pythonhosted.org/packages/42/f3/739baa3df6dfe680643066281a67a361237cfff2eaf8543e46f874cefe89/linkie-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b77db23103ca0733ee715e9e981c2a47", "sha256": "3aa8b72684e0abf4d8e056472e88c4c0fca695ea05f5caa759f7d791c7848d8c" }, "downloads": -1, "filename": "linkie-1.1.1.tar.gz", "has_sig": false, "md5_digest": "b77db23103ca0733ee715e9e981c2a47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5193, "upload_time": "2018-03-13T09:23:31", "url": "https://files.pythonhosted.org/packages/54/96/7a822745a363f266cd68515e54fba5a269ad6b90579b36fcc20edfebe1ef/linkie-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "df8627902713f80f05afd499c8490064", "sha256": "7548d9109d8336b11d964e1434614b473ae82846e4b59dd4ac1c550455ad0669" }, "downloads": -1, "filename": "linkie-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "df8627902713f80f05afd499c8490064", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8080, "upload_time": "2018-08-05T06:50:15", "url": "https://files.pythonhosted.org/packages/5e/18/64588bbc27f2a4bc8a62a9d6e16ff34f9c5d69651ae52bda313562942ca8/linkie-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6cca7391a42ade5f1564194c87992ccf", "sha256": "d86bc3e504428d238bb0f342f761c899568a3a9cd12f1d4219acc0701f4b5a62" }, "downloads": -1, "filename": "linkie-1.2.0.tar.gz", "has_sig": false, "md5_digest": "6cca7391a42ade5f1564194c87992ccf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5387, "upload_time": "2018-08-05T06:50:16", "url": "https://files.pythonhosted.org/packages/bd/6a/c714ac284b338abe821938f5f1ecbc1cc5e62cfd6f1da86d3812dc109204/linkie-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "7f70a87cf4bf5e9087eaa5ad4712a8e2", "sha256": "25e89a5b795a60b5bc0ba279516f609678faf29a6efe29cdb03536e83585ff29" }, "downloads": -1, "filename": "linkie-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7f70a87cf4bf5e9087eaa5ad4712a8e2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 6564, "upload_time": "2018-10-02T01:00:38", "url": "https://files.pythonhosted.org/packages/ee/9b/79e15fb98385b2b9578052d4201f7690bd1dfc89cdedb2226c49556ee9fe/linkie-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "110c5c8ab4f9c1464b9b539c7235ecf5", "sha256": "c09747396352eac321967df62e0ab7cf8e03d1dcb3e9363c54686dc24410ac0a" }, "downloads": -1, "filename": "linkie-1.3.0.tar.gz", "has_sig": false, "md5_digest": "110c5c8ab4f9c1464b9b539c7235ecf5", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 5683, "upload_time": "2018-10-02T01:00:40", "url": "https://files.pythonhosted.org/packages/a3/0f/84cf6f314faea5a7109d34986a9d84d8d11b5ca2b1541b2de72c1c18b002/linkie-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "9df7ddb3e27080709b6dce81605489cd", "sha256": "b30ee3a41b6f919b8fc860b0329beb73f94e78543a71aed02b1c9e41abdabd5d" }, "downloads": -1, "filename": "linkie-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9df7ddb3e27080709b6dce81605489cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 6783, "upload_time": "2018-10-02T06:34:34", "url": "https://files.pythonhosted.org/packages/e7/ab/889d530dbfd8b4f036dcbe8b4036fef7a37f683583948ab9d396cee461f8/linkie-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4ce62f5062dcd692d2c2dcf981395abc", "sha256": "d9988a48422cc6a1c91c149d5b63ad2f37f343b2da3c6441484b3297cd66f145" }, "downloads": -1, "filename": "linkie-1.3.1.tar.gz", "has_sig": false, "md5_digest": "4ce62f5062dcd692d2c2dcf981395abc", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 5895, "upload_time": "2018-10-02T06:34:36", "url": "https://files.pythonhosted.org/packages/76/7b/a379090e5fb9b442a0e5984d9aa9925e9d1147a67d245dc3465b5a9fafee/linkie-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "cf7346b01ef4c5bf8a48fbb87094f08e", "sha256": "f393c5ca1cbdfe81710dad58430b802be0449518a53e50a003543e28a40f7c9f" }, "downloads": -1, "filename": "linkie-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cf7346b01ef4c5bf8a48fbb87094f08e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 7410, "upload_time": "2019-07-21T22:42:25", "url": "https://files.pythonhosted.org/packages/f4/e3/7845bed2f0f3478e38f844008ba40e6aac4cbfe64967b245ec1a89aeab31/linkie-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "468f3897016f715ca5b7b8bdf1f39fd5", "sha256": "2cdfbb1c2e2c9d3b7db48ae754da4f13e31f229b90638428d49771ec83326280" }, "downloads": -1, "filename": "linkie-1.4.0.tar.gz", "has_sig": false, "md5_digest": "468f3897016f715ca5b7b8bdf1f39fd5", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 6531, "upload_time": "2019-07-21T22:42:27", "url": "https://files.pythonhosted.org/packages/e6/d9/51277df77b7680380f7020b777947fce61f577318fbca14f0ca76366b7ba/linkie-1.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cf7346b01ef4c5bf8a48fbb87094f08e", "sha256": "f393c5ca1cbdfe81710dad58430b802be0449518a53e50a003543e28a40f7c9f" }, "downloads": -1, "filename": "linkie-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cf7346b01ef4c5bf8a48fbb87094f08e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": "~=3.4", "size": 7410, "upload_time": "2019-07-21T22:42:25", "url": "https://files.pythonhosted.org/packages/f4/e3/7845bed2f0f3478e38f844008ba40e6aac4cbfe64967b245ec1a89aeab31/linkie-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "468f3897016f715ca5b7b8bdf1f39fd5", "sha256": "2cdfbb1c2e2c9d3b7db48ae754da4f13e31f229b90638428d49771ec83326280" }, "downloads": -1, "filename": "linkie-1.4.0.tar.gz", "has_sig": false, "md5_digest": "468f3897016f715ca5b7b8bdf1f39fd5", "packagetype": "sdist", "python_version": "source", "requires_python": "~=3.4", "size": 6531, "upload_time": "2019-07-21T22:42:27", "url": "https://files.pythonhosted.org/packages/e6/d9/51277df77b7680380f7020b777947fce61f577318fbca14f0ca76366b7ba/linkie-1.4.0.tar.gz" } ] }