Sourcing python-remove-tests-dir-hook Sourcing python-catch-conflicts-hook.sh Sourcing python-remove-bin-bytecode-hook.sh Sourcing pypa-build-hook Using pypaBuildPhase Sourcing python-runtime-deps-check-hook Using pythonRuntimeDepsCheckHook Sourcing pypa-install-hook Using pypaInstallPhase Sourcing python-imports-check-hook.sh Using pythonImportsCheckPhase Sourcing python-namespaces-hook Sourcing python-catch-conflicts-hook.sh Sourcing pytest-check-hook Running phase: unpackPhase unpacking source archive /nix/store/g9xhjlx8aa88km8nz2dy299l081w1kf7-biorefs-cli source root is biorefs-cli setting SOURCE_DATE_EPOCH to timestamp 315619200 of file "biorefs-cli/tests/test_uniprot.py" Running phase: patchPhase Running phase: updateAutotoolsGnuConfigScriptsPhase Running phase: configurePhase no configure script, doing nothing Running phase: buildPhase Executing pypaBuildPhase Creating a wheel... pypa build flags: --no-isolation --outdir dist/ --wheel * Getting build dependencies for wheel... * Building wheel... Successfully built biorefs_cli-0.1.0-py3-none-any.whl Finished creating a wheel... Finished executing pypaBuildPhase Running phase: pythonRuntimeDepsCheckHook Executing pythonRuntimeDepsCheck Checking runtime dependencies for biorefs_cli-0.1.0-py3-none-any.whl Finished executing pythonRuntimeDepsCheck Running phase: installPhase Executing pypaInstallPhase Successfully installed biorefs_cli-0.1.0-py3-none-any.whl Finished executing pypaInstallPhase Running phase: pythonOutputDistPhase Executing pythonOutputDistPhase Finished executing pythonOutputDistPhase Running phase: fixupPhase shrinking RPATHs of ELF executables and libraries in /nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0 checking for references to /build/ in /nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0... patching script interpreter paths in /nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0 stripping (with command strip and flags -S -p) in /nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0/lib /nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0/bin shrinking RPATHs of ELF executables and libraries in /nix/store/w9v9hka3c941makjmfd8wfxny6g1vr87-biorefs-cli-0.1.0-dist checking for references to /build/ in /nix/store/w9v9hka3c941makjmfd8wfxny6g1vr87-biorefs-cli-0.1.0-dist... patching script interpreter paths in /nix/store/w9v9hka3c941makjmfd8wfxny6g1vr87-biorefs-cli-0.1.0-dist Rewriting #!/nix/store/gxzhl7aaiid7zp3y47jqqiq7zg5mqpwp-python3-3.14.6/bin/python3.14 to #!/nix/store/gxzhl7aaiid7zp3y47jqqiq7zg5mqpwp-python3-3.14.6 wrapping `/nix/store/x1cn2sda2973syixniwbrrxwd1mrlbjc-biorefs-cli-0.1.0/bin/biorefs-cli'... Executing pythonRemoveTestsDir Finished executing pythonRemoveTestsDir Running phase: installCheckPhase 47 files already formatted RUF100 [*] Unused `noqa` directive (non-enabled: `S314`) --> biorefs_cli/commands/paper.py:443:37 | 441 | if not xml_text.strip(): 442 | return [] 443 | root = ET.fromstring(xml_text) # noqa: S314 - NCBI/PubMed XML; no defusedxml dependency. | ^^^^^^^^^^^^ 444 | return [ 445 | parse_pubmed_article(article, include) | help: Remove unused `noqa` directive | 442 | return [] - root = ET.fromstring(xml_text) # noqa: S314 - NCBI/PubMed XML; no defusedxml dependency. 443 + root = ET.fromstring(xml_text) 444 | return [ | RUF100 [*] Unused `noqa` directive (non-enabled: `S314`) --> biorefs_cli/commands/paper.py:623:37 | 621 | if not xml_text.strip(): 622 | return unavailable("pmc:empty-response") 623 | root = ET.fromstring(xml_text) # noqa: S314 - NCBI/PMC XML; no defusedxml dependency. | ^^^^^^^^^^^^ 624 | article = root if strip_ns(root.tag) == "article" else first(root, "article") 625 | if article is None: | help: Remove unused `noqa` directive | 622 | return unavailable("pmc:empty-response") - root = ET.fromstring(xml_text) # noqa: S314 - NCBI/PMC XML; no defusedxml dependency. 623 + root = ET.fromstring(xml_text) 624 | article = root if strip_ns(root.tag) == "article" else first(root, "article") | RUF100 [*] Unused `noqa` directive (non-enabled: `S602`) --> biorefs_cli/config.py:103:38 | 101 | def run_secret_command(command: str, *, timeout_seconds: int) -> str: 102 | try: 103 | completed = subprocess.run( # noqa: S602 - config intentionally stores shell commands. | ^^^^^^^^^^^^ 104 | command, 105 | shell=True, | help: Remove unused `noqa` directive | 102 | try: - completed = subprocess.run( # noqa: S602 - config intentionally stores shell commands. 103 + completed = subprocess.run( 104 | command, | I001 [*] Import block is un-sorted or un-formatted --> tests/test_assay.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | from typing import TYPE_CHECKING, cast 6 | | 7 | | import pytest 8 | | from biorefs_cli.commands.assay import ( 9 | | PubChemAssayClient, 10 | | handle_http_error, 11 | | parse_assay_description, 12 | | parse_concise_activity, 13 | | parse_include, 14 | | ) 15 | | from biorefs_cli.errors import RateLimitError 16 | | from biorefs_cli.http import HttpClient, JsonObject, JsonValue 17 | | from biorefs_cli.main import main | |_________________________________^ 18 | 19 | if TYPE_CHECKING: | help: Organize imports | 7 | import pytest 8 + 9 | from biorefs_cli.commands.assay import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_compound.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | from typing import TYPE_CHECKING 6 | | 7 | | import pytest 8 | | from biorefs_cli.commands import compound 9 | | from biorefs_cli.errors import CLIError 10 | | from biorefs_cli.main import build_parser | |_________________________________________^ 11 | 12 | if TYPE_CHECKING: | help: Organize imports | 7 | import pytest 8 + 9 | from biorefs_cli.commands import compound | I001 [*] Import block is un-sorted or un-formatted --> tests/test_core_helpers.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | import stat 7 | | from typing import TYPE_CHECKING 8 | | 9 | | import pytest 10 | | from biorefs_cli.config import ( 11 | | Config, 12 | | check_configured_secrets, 13 | | config_to_public_dict, 14 | | load_config, 15 | | merge_config, 16 | | run_secret_command, 17 | | write_config, 18 | | ) 19 | | from biorefs_cli.errors import ( 20 | | ConfigError, 21 | | CredentialCheckError, 22 | | HTTPError, 23 | | RateLimitError, 24 | | ) 25 | | from biorefs_cli.http import HttpClient, HttpResponse, RetryPolicy 26 | | from biorefs_cli.output import escape_cell, markdown_heading, markdown_table, print_json 27 | | from biorefs_cli.rate_limit import RateLimitPolicy | |__________________________________________________^ 28 | 29 | if TYPE_CHECKING: | help: Organize imports | 9 | import pytest 10 + 11 | from biorefs_cli.config import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_gene.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | from typing import cast 7 | | from urllib.parse import parse_qs, urlparse 8 | | 9 | | import pytest 10 | | from biorefs_cli.commands import gene 11 | | from biorefs_cli.config import Config 12 | | from biorefs_cli.errors import CLIError, RateLimitError 13 | | from biorefs_cli.http import HttpClient, HttpResponse, JsonObject, RetryPolicy 14 | | from biorefs_cli.main import build_parser, main 15 | | from biorefs_cli.ncbi_client import NCBIClient 16 | | from biorefs_cli.rate_limit import RateLimiter | |______________________________________________^ 17 | 18 | GENE_SUMMARY: JsonObject = { | help: Organize imports | 9 | import pytest 10 + 11 | from biorefs_cli.commands import gene | I001 [*] Import block is un-sorted or un-formatted --> tests/test_http_post.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | 7 | | import pytest 8 | | from biorefs_cli.errors import HTTPError 9 | | from biorefs_cli.http import HttpClient, HttpResponse, RetryPolicy | |__________________________________________________________________^ help: Organize imports | 7 | import pytest 8 + 9 | from biorefs_cli.errors import HTTPError | I001 [*] Import block is un-sorted or un-formatted --> tests/test_ncbi_command.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | import shlex 7 | | import sys 8 | | import urllib.parse 9 | | from typing import TYPE_CHECKING 10 | | 11 | | import pytest 12 | | from biorefs_cli.commands import ncbi 13 | | from biorefs_cli.config import Config 14 | | from biorefs_cli.http import HttpClient, HttpResponse, RetryPolicy 15 | | from biorefs_cli.main import build_parser, main 16 | | from biorefs_cli.ncbi_client import NCBIClient 17 | | from biorefs_cli.rate_limit import RateLimiter, RateLimitPolicy | |_______________________________________________________________^ 18 | 19 | if TYPE_CHECKING: | help: Organize imports | 11 | import pytest 12 + 13 | from biorefs_cli.commands import ncbi | I001 [*] Import block is un-sorted or un-formatted --> tests/test_ncbi_extra.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import argparse 6 | | from typing import TYPE_CHECKING, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands import ncbi 10 | | from biorefs_cli.errors import CLIError | |_______________________________________^ 11 | 12 | if TYPE_CHECKING: | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands import ncbi | I001 [*] Import block is un-sorted or un-formatted --> tests/test_nucleotide.py:5:1 | 3 | """Nucleotide command tests.""" 4 | 5 | / from __future__ import annotations 6 | | 7 | | import json 8 | | from typing import cast 9 | | from urllib.parse import parse_qs, urlparse 10 | | 11 | | import pytest 12 | | from biorefs_cli.commands import nucleotide 13 | | from biorefs_cli.config import Config 14 | | from biorefs_cli.errors import CLIError, RateLimitError 15 | | from biorefs_cli.http import HttpClient, HttpResponse, JsonObject 16 | | from biorefs_cli.main import build_parser, main 17 | | from biorefs_cli.ncbi_client import NCBIClient | |______________________________________________^ help: Organize imports | 11 | import pytest 12 + 13 | from biorefs_cli.commands import nucleotide | I001 [*] Import block is un-sorted or un-formatted --> tests/test_openalex.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import argparse 6 | | from typing import TYPE_CHECKING, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands import openalex 10 | | from biorefs_cli.config import Config 11 | | from biorefs_cli.http import HttpClient | |_______________________________________^ 12 | 13 | if TYPE_CHECKING: | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands import openalex | I001 [*] Import block is un-sorted or un-formatted --> tests/test_paper.py:11:1 | 9 | from collections.abc import Sequence 10 | 11 | / import pytest 12 | | from biorefs_cli.commands.paper import ( 13 | | PaperClient, 14 | | PaperInputError, 15 | | cmd_convert, 16 | | one_identifier, 17 | | parse_jats_xml, 18 | | parse_pubmed_xml, 19 | | ) 20 | | from biorefs_cli.errors import RateLimitError 21 | | from biorefs_cli.main import main | |_________________________________^ 22 | 23 | PUBMED_XML = """ | help: Organize imports | 11 | import pytest 12 + 13 | from biorefs_cli.commands.paper import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_paper_extra.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import argparse 6 | | from typing import Any, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands.paper import ( 10 | | PaperClient, 11 | | PaperInputError, 12 | | bibtex, 13 | | cmd_cite, 14 | | cmd_fulltext, 15 | | cmd_related, 16 | | crossref_year, 17 | | europepmc_unavailable, 18 | | fetch_record, 19 | | format_citation, 20 | | normalize_crossref_work, 21 | | normalize_doi, 22 | | normalize_idconv, 23 | | normalize_identifier, 24 | | normalize_pmcid, 25 | | normalize_pmid, 26 | | parse_include, 27 | | parse_jats_xml, 28 | | parse_sections, 29 | | print_convert, 30 | | print_fetch, 31 | | print_fulltext, 32 | | print_related, 33 | | print_search, 34 | | ris, 35 | | source_urls, 36 | | strict_validate, 37 | | unavailable, 38 | | ) 39 | | from biorefs_cli.errors import HTTPError | |________________________________________^ 40 | 41 | MINIMAL_PUBMED_XML = """ | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands.paper import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_protein.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | from typing import cast 7 | | from urllib.parse import parse_qs, urlencode, urlparse 8 | | 9 | | import pytest 10 | | from biorefs_cli.commands.protein import ( 11 | | ProteinService, 12 | | build_search_term, 13 | | normalize_accession, 14 | | parse_protein_summaries, 15 | | ) 16 | | from biorefs_cli.errors import CLIError, RateLimitError 17 | | from biorefs_cli.http import HttpResponse, JsonObject 18 | | from biorefs_cli.main import main | |_________________________________^ help: Organize imports | 9 | import pytest 10 + 11 | from biorefs_cli.commands.protein import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_render_helpers.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import argparse 6 | | from typing import TYPE_CHECKING, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands import assay, compound, gene, nucleotide, openalex, protein 10 | | from biorefs_cli.errors import CLIError, HTTPError, RateLimitError | |__________________________________________________________________^ 11 | 12 | if TYPE_CHECKING: | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands import assay, compound, gene, nucleotide, openalex, protein | I001 [*] Import block is un-sorted or un-formatted --> tests/test_scaffold.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import pytest 6 | | from biorefs_cli.main import build_parser, main | |_______________________________________________^ 7 | 8 | TOP_LEVEL_COMMANDS = ( | help: Organize imports | 5 | import pytest 6 + 7 | from biorefs_cli.main import build_parser, main | I001 [*] Import block is un-sorted or un-formatted --> tests/test_structure_fetch.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | from pathlib import Path 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands.structure import ( 10 | | AlphaFoldFile, 11 | | FetchClient, 12 | | FetchResult, 13 | | FetchService, 14 | | first_prediction, 15 | | write_structure, 16 | | ) 17 | | from biorefs_cli.config import Config 18 | | from biorefs_cli.errors import CLIError, HTTPError 19 | | from biorefs_cli.http import HttpClient, HttpResponse 20 | | from biorefs_cli.main import main | |_________________________________^ help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands.structure import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_structure_info.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | from typing import TYPE_CHECKING, cast 6 | | 7 | | import pytest 8 | | from biorefs_cli.commands.structure import ( 9 | | InfoService, 10 | | build_info_result, 11 | | parse_entry, 12 | | ) 13 | | from biorefs_cli.main import main | |_________________________________^ 14 | 15 | if TYPE_CHECKING: | help: Organize imports | 7 | import pytest 8 + 9 | from biorefs_cli.commands.structure import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_structure_render.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import pytest 6 | | from biorefs_cli.commands.structure import ( 7 | | parse_include, 8 | | print_info_table, 9 | | print_search_table, 10 | | validate_organism, 11 | | ) 12 | | from biorefs_cli.errors import CLIError | |_______________________________________^ help: Organize imports | 5 | import pytest 6 + 7 | from biorefs_cli.commands.structure import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_structure_search.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import argparse 6 | | from typing import TYPE_CHECKING, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands.structure import ( 10 | | SearchQuery, 11 | | SearchService, 12 | | build_query_from_args, 13 | | build_search_payload, 14 | | clean_sequence, 15 | | normalize_pdb_id, 16 | | normalize_uniprot_accession, 17 | | parse_hits, 18 | | ) 19 | | from biorefs_cli.errors import CLIError, HTTPError 20 | | from biorefs_cli.main import main 21 | | from biorefs_cli.rcsb_graphql import EntryMeta | |______________________________________________^ 22 | 23 | if TYPE_CHECKING: | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands.structure import ( | I001 [*] Import block is un-sorted or un-formatted --> tests/test_uniprot.py:3:1 | 1 | # Copyright (c) 2026 Seungwon Lee 2 | # SPDX-License-Identifier: MIT 3 | / from __future__ import annotations 4 | | 5 | | import json 6 | | from typing import TYPE_CHECKING, cast 7 | | 8 | | import pytest 9 | | from biorefs_cli.commands.uniprot import ( 10 | | UniProtService, 11 | | build_search_query, 12 | | normalize_accession, 13 | | parse_entry, 14 | | ) 15 | | from biorefs_cli.errors import CLIError, RateLimitError 16 | | from biorefs_cli.main import main | |_________________________________^ 17 | 18 | if TYPE_CHECKING: | help: Organize imports | 8 | import pytest 9 + 10 | from biorefs_cli.commands.uniprot import ( | Found 22 errors. [*] 22 fixable with the `--fix` option.