mirror of https://github.com/astral-sh/uv
Expand some documentation around identifier traits (#2876)
## Summary I already added more documentation since this issue was created, but this doesn't hurt. Closes https://github.com/astral-sh/uv/issues/496.
This commit is contained in:
parent
e109e02b12
commit
52577892eb
|
|
@ -5,10 +5,12 @@ use url::Url;
|
|||
use pep440_rs::Version;
|
||||
use uv_normalize::PackageName;
|
||||
|
||||
/// A unique identifier for a package (e.g., `black==23.10.0`).
|
||||
/// A unique identifier for a package at a specific version (e.g., `black==23.10.0`).
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||
pub enum PackageId {
|
||||
/// The identifier consists of a package name and version.
|
||||
NameVersion(PackageName, Version),
|
||||
/// The identifier consists of a URL.
|
||||
Url(String),
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +35,19 @@ impl Display for PackageId {
|
|||
}
|
||||
}
|
||||
|
||||
/// A unique identifier for a distribution (e.g., `black-23.10.0-py3-none-any.whl`).
|
||||
/// A unique resource identifier for the distribution, like a SHA-256 hash of the distribution's
|
||||
/// contents.
|
||||
///
|
||||
/// A distribution is a specific archive of a package at a specific version. For a given package
|
||||
/// version, there may be multiple distributions, e.g., source distribution, along with
|
||||
/// multiple binary distributions (wheels) for different platforms. As a concrete example,
|
||||
/// `black-23.10.0-py3-none-any.whl` would represent a (binary) distribution of the `black` package
|
||||
/// at version `23.10.0`.
|
||||
///
|
||||
/// The distribution ID is used to uniquely identify a distribution. Ideally, the distribution
|
||||
/// ID should be a hash of the distribution's contents, though in practice, it's only required
|
||||
/// that the ID is unique within a single invocation of the resolver (and so, e.g., a hash of
|
||||
/// the URL would also be sufficient).
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)]
|
||||
pub struct DistributionId(String);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ pub trait DistributionMetadata: Name {
|
|||
/// for URL-based distributions.
|
||||
fn version_or_url(&self) -> VersionOrUrl;
|
||||
|
||||
/// Returns a unique identifier for the package.
|
||||
/// Returns a unique identifier for the package (e.g., `black==23.10.0`).
|
||||
///
|
||||
/// Note that this is not equivalent to a unique identifier for the _distribution_, as multiple
|
||||
/// registry-based distributions (e.g., different wheels for the same package and version)
|
||||
|
|
@ -57,6 +57,17 @@ pub trait RemoteSource {
|
|||
pub trait Identifier {
|
||||
/// Return a unique resource identifier for the distribution, like a SHA-256 hash of the
|
||||
/// distribution's contents.
|
||||
///
|
||||
/// A distribution is a specific archive of a package at a specific version. For a given package
|
||||
/// version, there may be multiple distributions, e.g., source distribution, along with
|
||||
/// multiple binary distributions (wheels) for different platforms. As a concrete example,
|
||||
/// `black-23.10.0-py3-none-any.whl` would represent a (binary) distribution of the `black` package
|
||||
/// at version `23.10.0`.
|
||||
///
|
||||
/// The distribution ID is used to uniquely identify a distribution. Ideally, the distribution
|
||||
/// ID should be a hash of the distribution's contents, though in practice, it's only required
|
||||
/// that the ID is unique within a single invocation of the resolver (and so, e.g., a hash of
|
||||
/// the URL would also be sufficient).
|
||||
fn distribution_id(&self) -> DistributionId;
|
||||
|
||||
/// Return a unique resource identifier for the underlying resource backing the distribution.
|
||||
|
|
|
|||
Loading…
Reference in New Issue