Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ jobs:

clippy-stable:
runs-on: ubuntu-latest
env:
RUST_VERSION: "1.98.0"
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -59,20 +61,20 @@ jobs:
~/.cargo/git/db/
~/.rustup/toolchains/
target/
key: ${{ runner.os }}-cargo-check-stable-${{ hashFiles('**/Cargo.lock') }}
key: ${{ runner.os }}-cargo-check-${{ env.RUST_VERSION }}-${{ hashFiles('**/Cargo.lock') }}

- name: Install stable toolchain
run: rustup toolchain install stable
run: rustup toolchain install ${{ env.RUST_VERSION }} --component clippy

- name: Install WASM toolchain
run: rustup target add wasm32-unknown-unknown --toolchain stable
run: rustup target add wasm32-unknown-unknown --toolchain ${{ env.RUST_VERSION }}

- name: Check on stable
run: cargo +stable clippy --all-targets -p utile -p puv -- -D warnings
run: cargo +${{ env.RUST_VERSION }} clippy --all-targets -p utile -p puv -- -D warnings

- name: Check project (WASM) on stable
# Note lack of --all-targets here because tests and examples are not wasm compatible
run: cargo +stable clippy --target wasm32-unknown-unknown -p utile -p puv -- -D warnings
run: cargo +${{ env.RUST_VERSION }} clippy --target wasm32-unknown-unknown -p utile -p puv -- -D warnings

test:
runs-on: ubuntu-latest
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ensembl/src/contig/grch37_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::resource::EnsemblResource;

Expand Down
2 changes: 1 addition & 1 deletion ensembl/src/contig/grch38_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::resource::EnsemblResource;

Expand Down
11 changes: 6 additions & 5 deletions ensembl/src/resource.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use resource::{ReadResource, Resource, UrlResource};
use url::Url;
use resource::{RawResource, UrlResource};

const GRCH38_REFERENCE_GENOME_INDEXED: &str =
"fasta/homo_sapiens/dna_index/Homo_sapiens.GRCh38.dna.toplevel.fa.gz";
Expand Down Expand Up @@ -106,7 +106,7 @@ impl EnsemblResource {
UrlResource::new(self.url()).unwrap()
}
}
impl RawResource for EnsemblResource {
impl Resource for EnsemblResource {
const NAMESPACE: &'static str = "ensembl";

fn key(&self) -> String {
Expand All @@ -116,16 +116,17 @@ impl RawResource for EnsemblResource {
fn compression(&self) -> Option<resource::Compression> {
resource::Compression::infer(&self.key)
}

type Reader = <UrlResource as RawResource>::Reader;
}
impl ReadResource for EnsemblResource {
type Reader = <UrlResource as ReadResource>::Reader;
fn size(&self) -> std::io::Result<u64> {
self.url_resource().size()
}
fn read(&self) -> std::io::Result<Self::Reader> {
self.url_resource().read()
}

type AsyncReader = <UrlResource as RawResource>::AsyncReader;
type AsyncReader = <UrlResource as ReadResource>::AsyncReader;
async fn size_async(&self) -> std::io::Result<u64> {
self.url_resource().size_async().await
}
Expand Down
2 changes: 1 addition & 1 deletion genomes1000/examples/load_all.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use resource::RawResourceExt;
use resource::ResourceExt;

use genomes1000::{GRCh38Contig, load_grch38_reference_genome, source::Genomes1000Resource};

Expand Down
2 changes: 1 addition & 1 deletion genomes1000/src/contig/grch37_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::source::Genomes1000Resource;

Expand Down
2 changes: 1 addition & 1 deletion genomes1000/src/contig/grch38_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3388,7 +3388,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::source::Genomes1000Resource;

Expand Down
16 changes: 8 additions & 8 deletions genomes1000/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use biocore::{
location::{ContigPosition, ContigRange},
vcf::IndexedVcfReader,
};
use resource::{RawResource, RawResourceExt, fs::FsCache};
use resource::{ReadResource, ResourceExt, cache::fs::FsCache};
use utile::{io::FromUtf8Bytes, iter::IteratorExt};

use self::{pedigree::Pedigree, simplified::SimplifiedRecord, source::Genomes1000Resource};
Expand Down Expand Up @@ -435,7 +435,7 @@ pub async fn load_contig(
parse::parse(resource.read()?, sample_reading_function(c))
}

pub async fn load_pedigree(resource: impl RawResource) -> io::Result<Vec<Pedigree>> {
pub async fn load_pedigree(resource: impl ReadResource) -> io::Result<Vec<Pedigree>> {
Ok(csv::ReaderBuilder::new()
.delimiter(b' ')
.from_reader(resource.read()?)
Expand All @@ -458,11 +458,11 @@ pub async fn load_pedigree(resource: impl RawResource) -> io::Result<Vec<Pedigre
/// It should also implement [Seek](std::io::Seek) if random access is needed.
pub async fn load_grch38_reference_genome<F>(
fasta: F,
index: impl RawResource,
index: impl ReadResource,
) -> io::Result<biocore::fasta::IndexedFastaReader<F::Reader>>
where
F: RawResource,
<F as RawResource>::Reader: std::io::BufRead,
F: ReadResource,
<F as ReadResource>::Reader: std::io::BufRead,
{
biocore::fasta::IndexedFastaReader::new(fasta.read()?, index.decompressed().buffered().read()?)
}
Expand All @@ -471,11 +471,11 @@ where
/// It should also implement [Seek](std::io::Seek) if random access is needed.
pub async fn load_grch37_reference_genome<F>(
fasta: F,
index: impl RawResource,
index: impl ReadResource,
) -> io::Result<biocore::fasta::IndexedFastaReader<F::Reader>>
where
F: RawResource,
<F as RawResource>::Reader: std::io::BufRead,
F: ReadResource,
<F as ReadResource>::Reader: std::io::BufRead,
{
biocore::fasta::IndexedFastaReader::new(fasta.read()?, index.decompressed().buffered().read()?)
}
Expand Down
2 changes: 1 addition & 1 deletion genomes1000/src/slow.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};
use std::{collections::HashMap, io::Read};

use crate::source::Genomes1000Resource;
Expand Down
11 changes: 6 additions & 5 deletions genomes1000/src/source.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use resource::{RawResource, UrlResource};
use resource::{ReadResource, Resource, UrlResource};
use url::Url;

use crate::contig::GRCh38Contig;
Expand Down Expand Up @@ -158,7 +158,7 @@ impl Genomes1000Resource {
UrlResource::new(self.url()).unwrap()
}
}
impl RawResource for Genomes1000Resource {
impl Resource for Genomes1000Resource {
const NAMESPACE: &'static str = "1000genomes";

fn key(&self) -> String {
Expand All @@ -172,16 +172,17 @@ impl RawResource for Genomes1000Resource {
resource::Compression::infer(&self.key)
}
}

type Reader = <UrlResource as RawResource>::Reader;
}
impl ReadResource for Genomes1000Resource {
type Reader = <UrlResource as ReadResource>::Reader;
fn size(&self) -> std::io::Result<u64> {
self.url_resource().size()
}
fn read(&self) -> std::io::Result<Self::Reader> {
self.url_resource().read()
}

type AsyncReader = <UrlResource as RawResource>::AsyncReader;
type AsyncReader = <UrlResource as ReadResource>::AsyncReader;
async fn size_async(&self) -> std::io::Result<u64> {
self.url_resource().size_async().await
}
Expand Down
11 changes: 6 additions & 5 deletions gwas_catalog/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use serde::{Deserialize, Serialize};
use url::Url;

use biocore::location::ContigPosition;
use resource::{RawResource, RawResourceExt, UrlResource};
use resource::{ReadResource, Resource, ResourceExt, UrlResource};
use utile::io::reqwest_error;

#[derive(Debug, Clone, PartialEq, Eq, Hash)]
Expand Down Expand Up @@ -39,7 +39,7 @@ impl GwasCatalogResource {
Self::ANCESTRY_URL.parse().unwrap()
}
}
impl RawResource for GwasCatalogResource {
impl Resource for GwasCatalogResource {
const NAMESPACE: &'static str = "gwas_catalog";

fn key(&self) -> String {
Expand All @@ -49,8 +49,9 @@ impl RawResource for GwasCatalogResource {
fn compression(&self) -> Option<resource::Compression> {
None
}

type Reader = <UrlResource as RawResource>::Reader;
}
impl ReadResource for GwasCatalogResource {
type Reader = <UrlResource as ReadResource>::Reader;
fn size(&self) -> std::io::Result<u64> {
Ok(self.size)
}
Expand All @@ -59,7 +60,7 @@ impl RawResource for GwasCatalogResource {
UrlResource::new(self.url).unwrap().read()
}

type AsyncReader = <UrlResource as RawResource>::AsyncReader;
type AsyncReader = <UrlResource as ReadResource>::AsyncReader;
async fn size_async(&self) -> std::io::Result<u64> {
Ok(self.size)
}
Expand Down
2 changes: 1 addition & 1 deletion hail/src/contig/grch37_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::source::HailCommonResource;

Expand Down
2 changes: 1 addition & 1 deletion hail/src/contig/grch38_meta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3375,7 +3375,7 @@ pub static META: phf::Map<&'static str, ContigMeta> = phf::phf_map! {

#[cfg(test)]
mod tests {
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};

use crate::source::HailCommonResource;

Expand Down
2 changes: 1 addition & 1 deletion hail/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
pub mod contig;
pub mod source;

use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};
use source::HailCommonResource;

pub async fn load_grch38_reference_genome()
Expand Down
11 changes: 6 additions & 5 deletions hail/src/source.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use resource::{RawResource, UrlResource};
use resource::{ReadResource, Resource, UrlResource};
use url::Url;

const HAIL_COMMON_BUCKET: &str = "hail-common";
Expand Down Expand Up @@ -44,7 +44,7 @@ impl HailCommonResource {
UrlResource::new(self.url()).unwrap()
}
}
impl RawResource for HailCommonResource {
impl Resource for HailCommonResource {
const NAMESPACE: &'static str = "hail_common";

fn key(&self) -> String {
Expand All @@ -63,16 +63,17 @@ impl RawResource for HailCommonResource {
_ => resource::Compression::infer_strict(&self.key),
}
}

type Reader = <UrlResource as RawResource>::Reader;
}
impl ReadResource for HailCommonResource {
type Reader = <UrlResource as ReadResource>::Reader;
fn size(&self) -> std::io::Result<u64> {
self.url_resource().size()
}
fn read(&self) -> std::io::Result<Self::Reader> {
self.url_resource().read()
}

type AsyncReader = <UrlResource as RawResource>::AsyncReader;
type AsyncReader = <UrlResource as ReadResource>::AsyncReader;
async fn size_async(&self) -> std::io::Result<u64> {
self.url_resource().size_async().await
}
Expand Down
2 changes: 1 addition & 1 deletion liftover/examples/load_all.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use liftover::{
Liftover,
sources::{EnsemblHG, EnsemblResource, UcscHG, UcscResource},
};
use resource::RawResourceExt;
use resource::ResourceExt;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
Expand Down
6 changes: 3 additions & 3 deletions liftover/src/parse.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@ use std::{
};

use biocore::{genome::ArcContig, location::orientation::Stranded};
use resource::{RawResource, RawResourceExt};
use resource::{ReadResource, ResourceExt};
use utile::io::read_ext::AsyncReadInto;

use super::{
AlignmentBlock, Chain, ChainHeader, ChainRange, ContigRange, Liftover, SequenceOrientation,
};

impl Liftover<ArcContig, ArcContig> {
pub fn load(resource: impl RawResource) -> anyhow::Result<Self> {
pub fn load(resource: impl ReadResource) -> anyhow::Result<Self> {
Ok(Self::read(resource.decompressed().buffered().read()?)?)
}
pub async fn load_async(resource: impl RawResource) -> anyhow::Result<Self> {
pub async fn load_async(resource: impl ReadResource) -> anyhow::Result<Self> {
Ok(Self::read(
&*resource
.decompressed()
Expand Down
Loading
Loading