{ "info": { "author": "Tzu-ping Chung", "author_email": "uranusjr@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "==========\nResolveLib\n==========\n\nResolveLib at the highest level provides a `Resolver` class that includes\ndependency resolution logic. You give it some things, and a little information\non how it should interact with them, and it will spit out a resolution result.\n\n\nIntended Usage\n==============\n\n::\n\n # Things I want to resolve.\n requirements = [...]\n\n # Implement logic so the resolver understands the requirement format.\n class MyProvider:\n ...\n\n provider = MyProvider()\n\n # Create the (reusable) resolver.\n from resolvelib import Resolver\n resolver = Resolver(provider)\n\n # Kick off the resolution process, and get the final result.\n result = resolver.resolve(requirements)\n\nThe provider interface is specified in ``resolvelib.providers``. You don't\nneed to inherit anything, however, only need to implement the right methods.\n\n\nTerminology\n===========\n\nThe intention of this section is to unify the terms we use when talking about\nthis code base, and packaging in general, to avoid confusion. Class and\nvariable names in the code base should try to stick to terms defined here.\n\nThings passed into `Resolver.resolve()` and provided by the provider are all\nconsidered opaque. They don't need to adhere to this set of terminologies.\nNothing can go wrong as long as the provider implementers can keep their heads\nstraight.\n\n\nPackage\n-------\n\nA thing that can be installed. A Package can have one or more versions\navailable for installation.\n\nVersion\n-------\n\nA string, usually in a number form, describing a snapshot of a Package. This\nnumber should increase when a Package post a new snapshot, i.e. a higher number\nmeans a more up-to-date snapshot.\n\nSpecifier\n---------\n\nA collection of one or more Versions. This could be a wildcard, indicating that\nany Version is acceptable.\n\nCandidate\n---------\n\nA combination of a Package and a Version, i.e. a \"concrete requirement\". Python\npeople sometimes call this a \"locked\" or \"pinned\" dependency. Both of\n\"requirement\" and \"dependency\", however, SHOULD NOT be used when describing a\nCandidate, to avoid confusion.\n\nSome resolver architectures (e.g. Molinillo) refer this as a \"specicifation\",\nbut this is not chosen to avoid confusion with a *Specifier*.\n\nRequirement\n-----------\n\nAn intention to acquire a needed package, i.e. an \"abstract requirement\". A\n\"dependency\", if not clarified otherwise, also refers to this concept.\n\nA Requiremnt should specify two things: a Package, and a Specifier.\n\n\nDependency\n----------\n\nA dependency can be either a requirement, or a candidate. In implementations\nyou can treat it as the parent class and/or a protocol of the two.\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/sarugaku/resolvelib", "keywords": "dependency,resolution", "license": "ISC License", "maintainer": "", "maintainer_email": "", "name": "resolvelib", "package_url": "https://pypi.org/project/resolvelib/", "platform": "", "project_url": "https://pypi.org/project/resolvelib/", "project_urls": { "Homepage": "https://github.com/sarugaku/resolvelib" }, "release_url": "https://pypi.org/project/resolvelib/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "Resolve abstract dependencies into concrete ones", "version": "0.2.2" }, "last_serial": 4231559, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "7d51edc00e36d6e4ebbaaddcdd0b38e2", "sha256": "42626ec63074d9c13fd05ae2ca9987485f45d1fb9996e49172f65bd780be318e" }, "downloads": -1, "filename": "resolvelib-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7d51edc00e36d6e4ebbaaddcdd0b38e2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7999, "upload_time": "2018-08-06T10:59:53", "url": "https://files.pythonhosted.org/packages/45/c5/13d9a21c962e341018a1e3e16cf67b5220e3075315f8bb18201e48905c2f/resolvelib-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "78d8f8ebda0d0a9d5e1b1e6ddf7e17a2", "sha256": "274368e7b604553f7012369c079b9197807803551174f5f35652db894534087c" }, "downloads": -1, "filename": "resolvelib-0.1.0.tar.gz", "has_sig": false, "md5_digest": "78d8f8ebda0d0a9d5e1b1e6ddf7e17a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7310, "upload_time": "2018-08-06T10:59:54", "url": "https://files.pythonhosted.org/packages/92/ee/5b2544cf30fac3c61ac009446d6b5413fa1b2faca6f3221c526e008b5a03/resolvelib-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9fab16ca60cbdba165fe98b551511b86", "sha256": "4779dcdae1d9000bdd4eac11e0846d1f9c8689b58ba3302c9d5524ac14c42d24" }, "downloads": -1, "filename": "resolvelib-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9fab16ca60cbdba165fe98b551511b86", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8210, "upload_time": "2018-08-07T08:56:48", "url": "https://files.pythonhosted.org/packages/3c/08/1b9f0a005f31154f46e64b1deffcf7a32ca9878fcf79c3f92841ab4dbf3c/resolvelib-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1b853b7a32e40868043b507f97f741a8", "sha256": "c5dbadac79c1ac8a20d225f41aa5ca09696340411b26ff3b5ef05cc0b116914f" }, "downloads": -1, "filename": "resolvelib-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1b853b7a32e40868043b507f97f741a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7931, "upload_time": "2018-08-07T08:56:49", "url": "https://files.pythonhosted.org/packages/96/c0/ba6d7b11032cbdee8f2e186172a60d10acd461e6b9bbc903da67cfac5d59/resolvelib-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "ce64bb6a3e442cd9b8451bf6142b7533", "sha256": "d52f2c0762deeb2a4cc34a84371a7a5ac85e111bdc69ce9ae729d8d636606ad6" }, "downloads": -1, "filename": "resolvelib-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ce64bb6a3e442cd9b8451bf6142b7533", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8761, "upload_time": "2018-08-20T17:39:19", "url": "https://files.pythonhosted.org/packages/a3/a6/60b10b706e8dd4d836bb7ef973508fe5151b5e3a83e54587e48ace490119/resolvelib-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "00ab81076b438c2ce9f5e961eeaf5844", "sha256": "eb759d43bbf50de9bf36afb9f6c269fabf9ff49084dbfad4ba67252d134bf4b5" }, "downloads": -1, "filename": "resolvelib-0.2.1.tar.gz", "has_sig": false, "md5_digest": "00ab81076b438c2ce9f5e961eeaf5844", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8317, "upload_time": "2018-08-20T17:39:21", "url": "https://files.pythonhosted.org/packages/3f/cd/de5592a60b8894056585dddbf3a18144f9c543b9a5d564095ec6c554dcd6/resolvelib-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "e22348e8d28933a2aa98327d1f9788ff", "sha256": "6c4c6690b0bdd78bcc002e1a5d1b6abbde58c694a6ea1838f165b20d2c943db7" }, "downloads": -1, "filename": "resolvelib-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e22348e8d28933a2aa98327d1f9788ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8664, "upload_time": "2018-09-02T17:07:36", "url": "https://files.pythonhosted.org/packages/47/07/162748bcea9f9dfd2ba593b0fb562d4959cb9577090e5cd3028e8743218a/resolvelib-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89794f19d61c428fbf378c91e36c3df6", "sha256": "8734e53271ef98f38a2c99324d5e7905bc00c97dc3fc5bb7d83c82a979e71c04" }, "downloads": -1, "filename": "resolvelib-0.2.2.tar.gz", "has_sig": false, "md5_digest": "89794f19d61c428fbf378c91e36c3df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8258, "upload_time": "2018-09-02T17:07:37", "url": "https://files.pythonhosted.org/packages/25/1e/a08e328bd1286805ecec9defb1a8eff6525b7c67b0d700994b53a8ca869e/resolvelib-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e22348e8d28933a2aa98327d1f9788ff", "sha256": "6c4c6690b0bdd78bcc002e1a5d1b6abbde58c694a6ea1838f165b20d2c943db7" }, "downloads": -1, "filename": "resolvelib-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e22348e8d28933a2aa98327d1f9788ff", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8664, "upload_time": "2018-09-02T17:07:36", "url": "https://files.pythonhosted.org/packages/47/07/162748bcea9f9dfd2ba593b0fb562d4959cb9577090e5cd3028e8743218a/resolvelib-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "89794f19d61c428fbf378c91e36c3df6", "sha256": "8734e53271ef98f38a2c99324d5e7905bc00c97dc3fc5bb7d83c82a979e71c04" }, "downloads": -1, "filename": "resolvelib-0.2.2.tar.gz", "has_sig": false, "md5_digest": "89794f19d61c428fbf378c91e36c3df6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8258, "upload_time": "2018-09-02T17:07:37", "url": "https://files.pythonhosted.org/packages/25/1e/a08e328bd1286805ecec9defb1a8eff6525b7c67b0d700994b53a8ca869e/resolvelib-0.2.2.tar.gz" } ] }