Skip to content

Dev 0.2.28#67

Merged
noamteyssier merged 18 commits into
mainfrom
dev-0.2.28
Mar 4, 2026
Merged

Dev 0.2.28#67
noamteyssier merged 18 commits into
mainfrom
dev-0.2.28

Conversation

@noamteyssier

Copy link
Copy Markdown
Collaborator

No description provided.

@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on introducing a new Compressed BINSEQ (CBQ) output format, which is now the default for recoding operations. It also includes a significant refactoring of the BINSEQ recoding logic to unify handling of all BINSEQ formats (BQ, VBQ, CBQ) and integrates a comprehensive logging system for improved diagnostics. Additionally, various project dependencies have been updated to their latest versions.

Highlights

  • New BINSEQ Format: CBQ: Introduced a new Compressed BINSEQ (CBQ) output format, enhancing flexibility for users. This new format is now the default for recode operations.
  • Unified BINSEQ Recoding Logic: Refactored the internal recoding mechanism to use a single recode_inner function and a unified BinseqWriterBuilder from the binseq crate, simplifying the codebase and supporting BQ, VBQ, and CBQ formats more consistently.
  • Enhanced Logging: Integrated the log and env_logger crates across the application, replacing numerous eprintln! calls with structured info!, debug!, warn!, and error! macros. This provides more granular and configurable output for better debugging and operational insights.
  • Dependency Updates: Updated several key dependencies in Cargo.toml, including anyhow, binseq, clap, futures, indicatif, ncbi-vdb-sys, reqwest, serde_json, and tokio, ensuring the project benefits from the latest features and fixes.
  • Version Bump: The project version has been updated to 0.2.28 in Cargo.toml, reflecting the new features and improvements.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • Cargo.toml
    • Updated project version to 0.2.28
    • Updated multiple dependencies including anyhow, binseq, clap, futures, indicatif, ncbi-vdb-sys, reqwest, serde_json, and tokio
    • Added env_logger and log dependencies
    • Removed hashbrown and libc dependencies
    • Removed 'rustls-tls' feature from reqwest dependency
  • README.md
    • Updated BINSEQ output format options to include '*.cbq'
    • Revised example commands to demonstrate the new CBQ format and clarify existing BQ/VBQ usage
  • src/cli/mod.rs
    • Removed BinseqFlavor from the public exports of the recode module
  • src/cli/recode.rs
    • Imported binseq::write::Format
    • Updated RecodeOutput struct to include cbq in default output name and set flavor default to 'c' (CBQ)
    • Added help text for bitsize and block_size indicating format-specific usage
    • Modified BinseqFlavor enum to include CBQ as a default variant and renamed Binseq to BQ and VBinseq to VBQ
    • Added to_format method to BinseqFlavor to convert to binseq::write::Format
  • src/describe/mod.rs
    • Replaced eprintln! calls with info! and debug! for logging SRA URL identification and local file usage
  • src/dump/mod.rs
    • Replaced eprintln! calls with info!, debug!, and warn! for logging SRA URL identification, spot limit warnings, and empty file handling
  • src/main.rs
    • Added initialize_logger function to configure env_logger
    • Called initialize_logger at the start of the main function
  • src/output.rs
    • Replaced eprintln! with info! for logging existing FIFO usage
  • src/prefetch/mod.rs
    • Replaced eprintln! calls with trace!, warn!, error!, and info! for various logging scenarios
    • Corrected File::create(path) to File::create(&path) for consistent path handling in download_url
  • src/recode/mod.rs
    • Updated binseq imports to use binseq::write::{BinseqWriterBuilder, Format} and binseq::SequencingRecordBuilder
    • Removed BinseqFlavor import from crate::cli
    • Refactored recode function to use a single recode_inner function, passing binseq::write::Format
    • Implemented dynamic BinseqWriterBuilder configuration based on the selected format, including fixed-length checks for BQ
    • Updated record writing logic within threads to use SequencingRecordBuilder and t_writer.push()
    • Replaced eprintln! calls with info! and debug! for logging
  • tests/dump.rs
    • Updated assert_cmd::Command::cargo_bin to assert_cmd::cargo::cargo_bin_cmd! for test commands
  • tests/prefetch.rs
    • Updated assert_cmd::Command::cargo_bin to assert_cmd::cargo::cargo_bin_cmd! for test commands
  • tests/recode.rs
    • Updated error message in test_recode_to_binseq_variable_length_error to reflect new BQ/VBQ/CBQ terminology
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates several dependencies, including a major version bump for binseq, and refactors the code to use the log crate for structured logging instead of eprintln!. The recode command is updated to support the new cbq format from binseq and is now the default. A comprehensive security audit found no significant security vulnerabilities. However, a critical issue with the reqwest dependency configuration that would break functionality relying on network requests, and a minor documentation issue in the README.md were identified. Please see the specific comments for details.

Comment thread Cargo.toml
Comment on lines +25 to 28
reqwest = { version = "0.13.2", default-features = false, features = [
"blocking",
"stream",
"rustls-tls",
] }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

The rustls-tls feature has been removed from the reqwest dependency, but default-features is still false. This means reqwest is being built without any TLS backend, which will cause all HTTPS requests to fail at runtime. Commands like prefetch, dump, describe, and recode rely on HTTPS when an accession is not a local file.

Please add a TLS feature back. For reqwest 0.13+, rustls-tls-native-roots is a good option.

Suggested change
reqwest = { version = "0.13.2", default-features = false, features = [
"blocking",
"stream",
"rustls-tls",
] }
reqwest = { version = "0.13.2", default-features = false, features = [
"blocking",
"stream",
"rustls-tls-native-roots",
] }

Comment thread README.md
Comment on lines +101 to +103
# Write a CBQ file to (output.cbq) selecting segments 1 and 2 (zero-indexed) as primary and extended.
xsra record <ACCESSION>.sra -fc -I 0,1

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This example appears to be a copy-paste error. The command has a typo (record instead of recode), and the example itself is redundant. The previous example on line 99 already demonstrates how to create a CBQ file, which is the new default format. I recommend removing this block to avoid confusion.

@noamteyssier noamteyssier merged commit 11155d6 into main Mar 4, 2026
9 checks passed
@noamteyssier noamteyssier deleted the dev-0.2.28 branch March 4, 2026 01:04
@noamteyssier noamteyssier mentioned this pull request Mar 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant