129 lines
3.9 KiB
Plaintext
129 lines
3.9 KiB
Plaintext
Metadata-Version: 2.1
|
|
Name: resolvelib
|
|
Version: 1.0.1
|
|
Summary: Resolve abstract dependencies into concrete ones
|
|
Home-page: https://github.com/sarugaku/resolvelib
|
|
Author: Tzu-ping Chung
|
|
Author-email: uranusjr@gmail.com
|
|
License: ISC License
|
|
Keywords: dependency,resolution
|
|
Classifier: Development Status :: 3 - Alpha
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: License :: OSI Approved :: ISC License (ISCL)
|
|
Classifier: Operating System :: OS Independent
|
|
Classifier: Programming Language :: Python :: 2
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
Description-Content-Type: text/x-rst
|
|
License-File: LICENSE
|
|
Provides-Extra: examples
|
|
Requires-Dist: html5lib ; extra == 'examples'
|
|
Requires-Dist: packaging ; extra == 'examples'
|
|
Requires-Dist: pygraphviz ; extra == 'examples'
|
|
Requires-Dist: requests ; extra == 'examples'
|
|
Provides-Extra: lint
|
|
Requires-Dist: black ; extra == 'lint'
|
|
Requires-Dist: flake8 ; extra == 'lint'
|
|
Requires-Dist: mypy ; extra == 'lint'
|
|
Requires-Dist: isort ; extra == 'lint'
|
|
Requires-Dist: types-requests ; extra == 'lint'
|
|
Provides-Extra: release
|
|
Requires-Dist: build ; extra == 'release'
|
|
Requires-Dist: towncrier ; extra == 'release'
|
|
Requires-Dist: twine ; extra == 'release'
|
|
Provides-Extra: test
|
|
Requires-Dist: commentjson ; extra == 'test'
|
|
Requires-Dist: packaging ; extra == 'test'
|
|
Requires-Dist: pytest ; extra == 'test'
|
|
|
|
==========
|
|
ResolveLib
|
|
==========
|
|
|
|
ResolveLib at the highest level provides a ``Resolver`` class that includes
|
|
dependency resolution logic. You give it some things, and a little information
|
|
on how it should interact with them, and it will spit out a resolution result.
|
|
|
|
|
|
Intended Usage
|
|
==============
|
|
|
|
::
|
|
|
|
import resolvelib
|
|
|
|
# Things I want to resolve.
|
|
requirements = [...]
|
|
|
|
# Implement logic so the resolver understands the requirement format.
|
|
class MyProvider:
|
|
...
|
|
|
|
provider = MyProvider()
|
|
reporter = resolvelib.BaseReporter()
|
|
|
|
# Create the (reusable) resolver.
|
|
resolver = resolvelib.Resolver(provider, reporter)
|
|
|
|
# Kick off the resolution process, and get the final result.
|
|
result = resolver.resolve(requirements)
|
|
|
|
The provider interface is specified in ``resolvelib.providers``. You don't
|
|
need to inherit anything, however, only need to implement the right methods.
|
|
|
|
|
|
Terminology
|
|
===========
|
|
|
|
The intention of this section is to unify the terms we use when talking about
|
|
this code base, and packaging in general, to avoid confusion. Class and
|
|
variable names in the code base should try to stick to terms defined here.
|
|
|
|
Things passed into ``Resolver.resolve()`` and provided by the provider are all
|
|
considered opaque. They don't need to adhere to this set of terminologies.
|
|
Nothing can go wrong as long as the provider implementers can keep their heads
|
|
straight.
|
|
|
|
Package
|
|
-------
|
|
|
|
A thing that can be installed. A Package can have one or more versions
|
|
available for installation.
|
|
|
|
Version
|
|
-------
|
|
|
|
A string, usually in a number form, describing a snapshot of a Package. This
|
|
number should increase when a Package posts a new snapshot,
|
|
i.e a higher number means a more up-to-date snapshot.
|
|
|
|
Specifier
|
|
---------
|
|
|
|
A collection of one or more Versions. This could be a wildcard, indicating that
|
|
any Version is acceptable.
|
|
|
|
Candidate
|
|
---------
|
|
|
|
A combination of a Package and a Version, i.e. a "concrete requirement". Python
|
|
people sometimes call this a "locked" or "pinned" dependency. Both of
|
|
"requirement" and "dependency", however, SHOULD NOT be used when describing a
|
|
Candidate, to avoid confusion.
|
|
|
|
Some resolver architectures refer this as a "specification", but it is not
|
|
used here to avoid confusion with a *Specifier*.
|
|
|
|
Requirement
|
|
-----------
|
|
|
|
An intention to acquire a needed package, i.e. an "abstract requirement". A
|
|
"dependency", if not clarified otherwise, also refers to this concept.
|
|
|
|
A Requirement should specify two things: a Package, and a Specifier.
|
|
|
|
Contributing
|
|
============
|
|
|
|
Please see `developer documentation <./DEVELOPMENT.rst>`__.
|