Add `Tags::from_interpreter` (#498)

Small refactoring
This commit is contained in:
konsti 2023-11-24 12:36:01 +01:00 committed by GitHub
parent f7976ce5cc
commit 8d247fe95b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 12 additions and 20 deletions

1
Cargo.lock generated
View File

@ -2208,6 +2208,7 @@ dependencies = [
"anyhow",
"fxhash",
"platform-host",
"puffin-interpreter",
]
[[package]]

View File

@ -14,6 +14,7 @@ workspace = true
[dependencies]
platform-host = { path = "../platform-host" }
puffin-interpreter = { path = "../puffin-interpreter" }
anyhow = { workspace = true }
fxhash = { workspace = true }

View File

@ -4,6 +4,7 @@ use anyhow::{Error, Result};
use fxhash::FxHashMap;
use platform_host::{Arch, Os, Platform, PlatformError};
use puffin_interpreter::Interpreter;
/// A set of compatible tags for a given Python version and platform.
///
@ -33,6 +34,10 @@ impl Tags {
Self { map }
}
pub fn from_interpreter(interpreter: &Interpreter) -> Result<Self, PlatformError> {
Self::from_env(interpreter.platform(), interpreter.simple_version())
}
/// Returns the compatible tags for the given Python version and platform.
pub fn from_env(platform: &Platform, python_version: (u8, u8)) -> Result<Self, PlatformError> {
let platform_tags = compatible_tags(platform)?;

View File

@ -121,10 +121,7 @@ pub(crate) async fn pip_compile(
);
// Determine the compatible platform tags.
let tags = Tags::from_env(
venv.interpreter().platform(),
venv.interpreter().simple_version(),
)?;
let tags = Tags::from_interpreter(venv.interpreter())?;
// Determine the markers to use for resolution.
let markers = python_version.map_or_else(

View File

@ -104,10 +104,7 @@ pub(crate) async fn sync_requirements(
}
// Determine the current environment markers.
let tags = Tags::from_env(
venv.interpreter().platform(),
venv.interpreter().simple_version(),
)?;
let tags = Tags::from_interpreter(venv.interpreter())?;
// Instantiate a client.
let client = {

View File

@ -56,10 +56,7 @@ pub(crate) async fn resolve_cli(args: ResolveCliArgs) -> Result<()> {
);
// Copied from `BuildDispatch`
let tags = Tags::from_env(
venv.interpreter().platform(),
venv.interpreter().simple_version(),
)?;
let tags = Tags::from_interpreter(venv.interpreter())?;
let resolver = Resolver::new(
Manifest::new(
args.requirements.clone(),

View File

@ -82,10 +82,7 @@ impl BuildContext for BuildDispatch {
requirements: &'a [Requirement],
) -> Pin<Box<dyn Future<Output = Result<Vec<Requirement>>> + Send + 'a>> {
Box::pin(async {
let tags = Tags::from_env(
self.interpreter.platform(),
self.interpreter.simple_version(),
)?;
let tags = Tags::from_interpreter(&self.interpreter)?;
let resolver = Resolver::new(
Manifest::new(requirements.to_vec(), Vec::default(), Vec::default(), None),
self.options,
@ -123,10 +120,7 @@ impl BuildContext for BuildDispatch {
extraneous,
} = InstallPlan::try_from_requirements(requirements, &self.cache, venv)?;
let tags = Tags::from_env(
self.interpreter.platform(),
self.interpreter.simple_version(),
)?;
let tags = Tags::from_interpreter(&self.interpreter)?;
// Resolve the dependencies.
let remote = if remote.is_empty() {