pub struct Resolver { /* private fields */ }Expand description
Cache and download policy for one repository.
Implementations§
Source§impl Resolver
impl Resolver
Sourcepub fn new(repository: Repository) -> Self
pub fn new(repository: Repository) -> Self
Resolve files from a repository, downloading cache misses by default.
Examples found in repository?
examples/qualify_checkpoints.rs (lines 31-33)
20fn main() -> Result<(), Box<dyn std::error::Error>> {
21 let args: Vec<_> = std::env::args().skip(1).collect();
22 let fetch = match args.as_slice() {
23 [] => false,
24 [argument] if argument == "--fetch" => true,
25 _ => return Err("usage: qualify_checkpoints [--fetch]".into()),
26 };
27 let repositories: Vec<Repository> =
28 serde_json::from_str(include_str!("../native/qualification/checkpoints.json"))?;
29 let mut failures = 0;
30 for repository in repositories {
31 let resolver = hf::Resolver::new(
32 hf::Repository::new(&repository.owner, &repository.repository).at(&repository.revision),
33 )
34 .offline(!fetch);
35 for file in repository.files {
36 eprintln!(
37 "Checking {}/{} at {}: {}",
38 repository.owner, repository.repository, repository.revision, file.name
39 );
40 let result = (|| -> hrx::Result<()> {
41 let path = resolver.resolve(&hf::HubFile::new(file.name).sha256(file.sha256))?;
42 // SAFETY: qualification requires completed, immutable cache files.
43 // The Hub publishes downloads atomically; do not mutate these files
44 // while this command is running.
45 let view = unsafe { FileView::map(&path)? };
46 println!("OK: {} tensors, {}", view.entries().len(), path.display());
47 Ok(())
48 })();
49 if let Err(error) = result {
50 failures += 1;
51 eprintln!("FAILED: {error}");
52 }
53 }
54 }
55 if failures != 0 {
56 return Err(format!("{failures} checkpoint(s) failed qualification").into());
57 }
58 Ok(())
59}Sourcepub fn offline(self, offline: bool) -> Self
pub fn offline(self, offline: bool) -> Self
Restrict resolution to local cache entries.
Examples found in repository?
examples/qualify_checkpoints.rs (line 34)
20fn main() -> Result<(), Box<dyn std::error::Error>> {
21 let args: Vec<_> = std::env::args().skip(1).collect();
22 let fetch = match args.as_slice() {
23 [] => false,
24 [argument] if argument == "--fetch" => true,
25 _ => return Err("usage: qualify_checkpoints [--fetch]".into()),
26 };
27 let repositories: Vec<Repository> =
28 serde_json::from_str(include_str!("../native/qualification/checkpoints.json"))?;
29 let mut failures = 0;
30 for repository in repositories {
31 let resolver = hf::Resolver::new(
32 hf::Repository::new(&repository.owner, &repository.repository).at(&repository.revision),
33 )
34 .offline(!fetch);
35 for file in repository.files {
36 eprintln!(
37 "Checking {}/{} at {}: {}",
38 repository.owner, repository.repository, repository.revision, file.name
39 );
40 let result = (|| -> hrx::Result<()> {
41 let path = resolver.resolve(&hf::HubFile::new(file.name).sha256(file.sha256))?;
42 // SAFETY: qualification requires completed, immutable cache files.
43 // The Hub publishes downloads atomically; do not mutate these files
44 // while this command is running.
45 let view = unsafe { FileView::map(&path)? };
46 println!("OK: {} tensors, {}", view.entries().len(), path.display());
47 Ok(())
48 })();
49 if let Err(error) = result {
50 failures += 1;
51 eprintln!("FAILED: {error}");
52 }
53 }
54 }
55 if failures != 0 {
56 return Err(format!("{failures} checkpoint(s) failed qualification").into());
57 }
58 Ok(())
59}Sourcepub fn progress(self, progress: bool) -> Self
pub fn progress(self, progress: bool) -> Self
Force progress on or off. The default uses an interactive terminal and
HF_HUB_DISABLE_PROGRESS_BARS.
Sourcepub fn resolve(&self, file: &HubFile) -> Result<PathBuf>
pub fn resolve(&self, file: &HubFile) -> Result<PathBuf>
Resolve a required file, checking the cache before any network request.
Examples found in repository?
examples/qualify_checkpoints.rs (line 41)
20fn main() -> Result<(), Box<dyn std::error::Error>> {
21 let args: Vec<_> = std::env::args().skip(1).collect();
22 let fetch = match args.as_slice() {
23 [] => false,
24 [argument] if argument == "--fetch" => true,
25 _ => return Err("usage: qualify_checkpoints [--fetch]".into()),
26 };
27 let repositories: Vec<Repository> =
28 serde_json::from_str(include_str!("../native/qualification/checkpoints.json"))?;
29 let mut failures = 0;
30 for repository in repositories {
31 let resolver = hf::Resolver::new(
32 hf::Repository::new(&repository.owner, &repository.repository).at(&repository.revision),
33 )
34 .offline(!fetch);
35 for file in repository.files {
36 eprintln!(
37 "Checking {}/{} at {}: {}",
38 repository.owner, repository.repository, repository.revision, file.name
39 );
40 let result = (|| -> hrx::Result<()> {
41 let path = resolver.resolve(&hf::HubFile::new(file.name).sha256(file.sha256))?;
42 // SAFETY: qualification requires completed, immutable cache files.
43 // The Hub publishes downloads atomically; do not mutate these files
44 // while this command is running.
45 let view = unsafe { FileView::map(&path)? };
46 println!("OK: {} tensors, {}", view.entries().len(), path.display());
47 Ok(())
48 })();
49 if let Err(error) = result {
50 failures += 1;
51 eprintln!("FAILED: {error}");
52 }
53 }
54 }
55 if failures != 0 {
56 return Err(format!("{failures} checkpoint(s) failed qualification").into());
57 }
58 Ok(())
59}Trait Implementations§
Auto Trait Implementations§
impl Freeze for Resolver
impl RefUnwindSafe for Resolver
impl Send for Resolver
impl Sync for Resolver
impl Unpin for Resolver
impl UnsafeUnpin for Resolver
impl UnwindSafe for Resolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DropFlavorWrapper<T> for T
impl<T> DropFlavorWrapper<T> for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more