diff --git a/mypy_stubs/biocommons/seqrepo/fastadir/fastadir.pyi b/mypy_stubs/biocommons/seqrepo/fastadir/fastadir.pyi index 18fca76fc..57d511eaa 100644 --- a/mypy_stubs/biocommons/seqrepo/fastadir/fastadir.pyi +++ b/mypy_stubs/biocommons/seqrepo/fastadir/fastadir.pyi @@ -1,4 +1,5 @@ from typing import Any, Iterator, Optional + from biocommons.seqrepo.fastadir.bases import BaseReader, BaseWriter class FastaDir(BaseReader, BaseWriter): diff --git a/mypy_stubs/biocommons/seqrepo/seqaliasdb/seqaliasdb.pyi b/mypy_stubs/biocommons/seqrepo/seqaliasdb/seqaliasdb.pyi index 514caefb6..1808118a8 100644 --- a/mypy_stubs/biocommons/seqrepo/seqaliasdb/seqaliasdb.pyi +++ b/mypy_stubs/biocommons/seqrepo/seqaliasdb/seqaliasdb.pyi @@ -1,5 +1,5 @@ -from typing import Any, Iterator, Optional import sqlite3 +from typing import Any, Iterator, Optional class SeqAliasDB(object): _db_path: str diff --git a/mypy_stubs/mavehgvs/variant.pyi b/mypy_stubs/mavehgvs/variant.pyi index f1d79665f..e9ee6b647 100644 --- a/mypy_stubs/mavehgvs/variant.pyi +++ b/mypy_stubs/mavehgvs/variant.pyi @@ -1,5 +1,5 @@ -from typing import Any, Callable, List, Mapping, Optional, Sequence, Tuple, Union from re import Match +from typing import Any, Callable, List, Mapping, Optional, Sequence, Tuple, Union from .position import VariantPosition diff --git a/pyproject.toml b/pyproject.toml index a68577cef..b996dda9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -145,4 +145,4 @@ line-length = 120 # Ruff's default rule set changes between minor releases, so it is written out here; widen it in its own commit. [tool.ruff.lint] -select = ["E4", "E7", "E9", "F"] +select = ["E4", "E7", "E9", "F", "I"] diff --git a/src/mavedb/lib/alleles.py b/src/mavedb/lib/alleles.py index 01a208043..c66e069f7 100644 --- a/src/mavedb/lib/alleles.py +++ b/src/mavedb/lib/alleles.py @@ -25,7 +25,6 @@ from mavedb.models.score_set import ScoreSet from mavedb.models.variant import Variant - # How many variants a whole-set builder loads per round of batched queries. Bounds both the size of each # query's IN list (a variant's record links can fan out to dozens of reverse-translation members) and the # number of ORM rows held at once. diff --git a/src/mavedb/lib/annotation/study_result.py b/src/mavedb/lib/annotation/study_result.py index cdf4d160f..f222a26e1 100644 --- a/src/mavedb/lib/annotation/study_result.py +++ b/src/mavedb/lib/annotation/study_result.py @@ -12,8 +12,8 @@ from mavedb.lib.annotation.method import ( publication_identifiers_to_method, ) -from mavedb.lib.vrs import vrs_object_from_mapped_variant from mavedb.lib.variants import variant_score +from mavedb.lib.vrs import vrs_object_from_mapped_variant def variant_impact_study_result( diff --git a/src/mavedb/lib/annotation_status_manager.py b/src/mavedb/lib/annotation_status_manager.py index 4022cb4d2..78a29fb20 100644 --- a/src/mavedb/lib/annotation_status_manager.py +++ b/src/mavedb/lib/annotation_status_manager.py @@ -19,9 +19,9 @@ from sqlalchemy.orm import Session from sqlalchemy.sql import desc +from mavedb.models.annotation_event import ALLELE_SUBJECT_TYPES, VARIANT_SUBJECT_TYPES, AnnotationEvent from mavedb.models.enums.annotation_type import AnnotationType from mavedb.models.enums.disposition import Disposition -from mavedb.models.annotation_event import ALLELE_SUBJECT_TYPES, VARIANT_SUBJECT_TYPES, AnnotationEvent logger = logging.getLogger(__name__) diff --git a/src/mavedb/lib/clingen/content_constructors.py b/src/mavedb/lib/clingen/content_constructors.py index ce62ebbbd..2cc1c50de 100644 --- a/src/mavedb/lib/clingen/content_constructors.py +++ b/src/mavedb/lib/clingen/content_constructors.py @@ -1,11 +1,11 @@ from datetime import datetime -from uuid import uuid4 from urllib.parse import quote_plus +from uuid import uuid4 from mavedb import __version__ from mavedb.constants import MAVEDB_BASE_GIT, MAVEDB_FRONTEND_URL -from mavedb.lib.types.clingen import LdhContentLinkedData, LdhContentSubject, LdhEvent, LdhSubmission from mavedb.lib.clingen.constants import LDH_ENTITY_NAME, LDH_SUBMISSION_TYPE +from mavedb.lib.types.clingen import LdhContentLinkedData, LdhContentSubject, LdhEvent, LdhSubmission from mavedb.models.allele import Allele from mavedb.models.mapping_record import MappingRecord from mavedb.models.variant import Variant diff --git a/src/mavedb/lib/csv/deprecated_params.py b/src/mavedb/lib/csv/deprecated_params.py index e4c692f1d..617162131 100644 --- a/src/mavedb/lib/csv/deprecated_params.py +++ b/src/mavedb/lib/csv/deprecated_params.py @@ -16,7 +16,6 @@ from mavedb.lib.csv.namespaces import CsvNamespace from mavedb.lib.deprecation import deprecation_headers, record_deprecated_usage - DROP_NA_COLUMNS_DESCRIPTION = ( "Deprecated: use `drop_unused_hgvs_columns`, which names what it actually does. This parameter only" " ever dropped the HGVS coordinate columns a score set does not use, never every NA column. It will" diff --git a/src/mavedb/lib/csv/variant.py b/src/mavedb/lib/csv/variant.py index 932abea74..12e66f5aa 100644 --- a/src/mavedb/lib/csv/variant.py +++ b/src/mavedb/lib/csv/variant.py @@ -26,11 +26,11 @@ AvailableCsvNamespaceEntry, calibration_can_annotate, calibration_namespace_entries, + calibration_viewer, clinvar_namespace_entries, clinvar_release_namespaces, score_sets_have_current_mappings, static_namespace_entry, - calibration_viewer, ) from mavedb.lib.csv.fetch import fetch_variant_csv_data from mavedb.lib.csv.namespaces import ( @@ -39,8 +39,8 @@ clinvar_namespace_sort_key, ) from mavedb.lib.mave.utils import NA_VALUE -from mavedb.lib.urns import score_set_urn_sort_key, variant_urn_sort_key from mavedb.lib.permissions.score_calibration import ScoreCalibrationViewer +from mavedb.lib.urns import score_set_urn_sort_key, variant_urn_sort_key from mavedb.models.allele import Allele from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele diff --git a/src/mavedb/lib/experiments.py b/src/mavedb/lib/experiments.py index 22b2c2d1c..1790af450 100644 --- a/src/mavedb/lib/experiments.py +++ b/src/mavedb/lib/experiments.py @@ -4,8 +4,8 @@ from sqlalchemy import func, not_, or_ from sqlalchemy.orm import Session -from mavedb.lib.logging.context import logging_context, save_to_logging_context from mavedb.lib.collections import readable_official_collections +from mavedb.lib.logging.context import logging_context, save_to_logging_context from mavedb.lib.permissions import Action from mavedb.lib.score_sets import find_superseded_score_set_tail from mavedb.lib.types.authentication import UserData diff --git a/src/mavedb/lib/oddspaths.py b/src/mavedb/lib/oddspaths.py index 43f160309..125a69ae9 100644 --- a/src/mavedb/lib/oddspaths.py +++ b/src/mavedb/lib/oddspaths.py @@ -1,6 +1,6 @@ from typing import Optional -from mavedb.lib.acmg import StrengthOfEvidenceProvided, ACMGCriterion +from mavedb.lib.acmg import ACMGCriterion, StrengthOfEvidenceProvided def oddspaths_evidence_strength_equivalent( diff --git a/src/mavedb/lib/score_calibrations.py b/src/mavedb/lib/score_calibrations.py index afa4723ac..385a382ad 100644 --- a/src/mavedb/lib/score_calibrations.py +++ b/src/mavedb/lib/score_calibrations.py @@ -29,8 +29,8 @@ from mavedb.lib.validation.exceptions import ValidationError from mavedb.lib.validation.utilities import inf_or_float from mavedb.lib.variants import score_from_variant_data -from mavedb.models.enums.functional_classification import FunctionalClassification from mavedb.models.calibration_control import CalibrationControl +from mavedb.models.enums.functional_classification import FunctionalClassification from mavedb.models.enums.score_calibration_relation import ScoreCalibrationRelation from mavedb.models.score_calibration import ScoreCalibration from mavedb.models.score_calibration_functional_classification import ScoreCalibrationFunctionalClassification diff --git a/src/mavedb/lib/seqrepo.py b/src/mavedb/lib/seqrepo.py index 4330a9d85..ce878bd03 100644 --- a/src/mavedb/lib/seqrepo.py +++ b/src/mavedb/lib/seqrepo.py @@ -6,17 +6,17 @@ import os import re -from base64 import urlsafe_b64encode, urlsafe_b64decode -from binascii import unhexlify, hexlify +from base64 import urlsafe_b64decode, urlsafe_b64encode +from binascii import hexlify, unhexlify # TODO (https://github.com/VariantEffect/mavedb-api/issues/354). We need pydantic upgraded to use this package. # from ga4gh.core.identifiers import is_ga4gh_identifier, CURIE_NAMESPACE as ga4gh_namespace from typing import Generator, Optional -from biocommons.seqrepo import SeqRepo, __version__ as seqrepo_dep_version +from biocommons.seqrepo import SeqRepo +from biocommons.seqrepo import __version__ as seqrepo_dep_version from bioutils.accessions import infer_namespaces - DEFAULT_CHUNK_SIZE = 8192 diff --git a/src/mavedb/lib/uniprot/id_mapping.py b/src/mavedb/lib/uniprot/id_mapping.py index e57c87d8f..db656152d 100644 --- a/src/mavedb/lib/uniprot/id_mapping.py +++ b/src/mavedb/lib/uniprot/id_mapping.py @@ -1,13 +1,13 @@ -import requests -import time import logging +import time +from typing import Any, Dict, List, Optional +import requests from requests.adapters import HTTPAdapter, Retry -from typing import List, Optional, Dict, Any from mavedb.lib.logging.context import logging_context, save_to_logging_context -from mavedb.lib.uniprot.constants import UNIPROT_ID_MAPPING_API_URL, SWISS_PROT_ENTRY_TYPE from mavedb.lib.types import uniprot +from mavedb.lib.uniprot.constants import SWISS_PROT_ENTRY_TYPE, UNIPROT_ID_MAPPING_API_URL logger = logging.getLogger(__name__) diff --git a/src/mavedb/lib/validation/dataframe/variant.py b/src/mavedb/lib/validation/dataframe/variant.py index ffb825aa4..9cd545d00 100644 --- a/src/mavedb/lib/validation/dataframe/variant.py +++ b/src/mavedb/lib/validation/dataframe/variant.py @@ -1,23 +1,23 @@ import logging import warnings -from typing import Hashable, Optional, TYPE_CHECKING +from typing import TYPE_CHECKING, Hashable, Optional import pandas as pd from fqfa.validator import dna_bases_validator from mavehgvs.exceptions import MaveHgvsParseError from mavehgvs.variant import Variant -from mavedb.lib.validation.exceptions import ValidationError +from mavedb.lib.validation.constants.target import strict_valid_sequence_types as valid_sequence_types from mavedb.lib.validation.dataframe.column import ( + construct_target_sequence_mappings, generate_variant_prefixes, + validate_hgvs_column_properties, validate_variant_column, validate_variant_formatting, - validate_hgvs_column_properties, - construct_target_sequence_mappings, ) -from mavedb.lib.validation.constants.target import strict_valid_sequence_types as valid_sequence_types -from mavedb.models.target_sequence import TargetSequence +from mavedb.lib.validation.exceptions import ValidationError from mavedb.models.target_accession import TargetAccession +from mavedb.models.target_sequence import TargetSequence if TYPE_CHECKING: from cdot.hgvs.dataproviders import RESTDataProvider diff --git a/src/mavedb/lib/vrs_utils.py b/src/mavedb/lib/vrs_utils.py index 3ad9525f8..cb2c5a473 100644 --- a/src/mavedb/lib/vrs_utils.py +++ b/src/mavedb/lib/vrs_utils.py @@ -14,6 +14,7 @@ from itertools import cycle from typing import Any +from biocommons.seqrepo import SeqRepo from ga4gh.core import ga4gh_identify from ga4gh.vrs.extras.translator import AlleleTranslator from ga4gh.vrs.models import ( @@ -28,8 +29,6 @@ ) from ga4gh.vrs.normalize import normalize -from biocommons.seqrepo import SeqRepo - from mavedb.lib.hgvs import extract_accession, split_cis_phased_hgvs from mavedb.lib.logging.context import logging_context from mavedb.lib.seqrepo import AmbiguousSequenceError, SequenceNotFoundError, resolve_refget diff --git a/src/mavedb/models/clinical_control_mapped_variant.py b/src/mavedb/models/clinical_control_mapped_variant.py index b7fc5d84c..9009bd1d6 100644 --- a/src/mavedb/models/clinical_control_mapped_variant.py +++ b/src/mavedb/models/clinical_control_mapped_variant.py @@ -1,8 +1,7 @@ -from sqlalchemy import Column, Table, ForeignKey +from sqlalchemy import Column, ForeignKey, Table from mavedb.db.base import Base - mapped_variants_clinical_controls_association_table = Table( "mapped_variants_clinical_controls", Base.metadata, diff --git a/src/mavedb/models/collection_user_association.py b/src/mavedb/models/collection_user_association.py index 77a288770..0811d8710 100644 --- a/src/mavedb/models/collection_user_association.py +++ b/src/mavedb/models/collection_user_association.py @@ -1,15 +1,15 @@ # Prevent circular imports from typing import TYPE_CHECKING -from sqlalchemy import Enum, Column, ForeignKey, Integer +from sqlalchemy import Column, Enum, ForeignKey, Integer from sqlalchemy.orm import Mapped, relationship from mavedb.db.base import Base from mavedb.models.enums.contribution_role import ContributionRole if TYPE_CHECKING: - from mavedb.models.user import User from mavedb.models.collection import Collection + from mavedb.models.user import User class CollectionUserAssociation(Base): diff --git a/src/mavedb/models/gnomad_variant_mapped_variant.py b/src/mavedb/models/gnomad_variant_mapped_variant.py index bfebd8027..46ab0386c 100644 --- a/src/mavedb/models/gnomad_variant_mapped_variant.py +++ b/src/mavedb/models/gnomad_variant_mapped_variant.py @@ -1,8 +1,7 @@ -from sqlalchemy import Column, Table, ForeignKey +from sqlalchemy import Column, ForeignKey, Table from mavedb.db.base import Base - gnomad_variants_mapped_variants_association_table = Table( "gnomad_variants_mapped_variants", Base.metadata, diff --git a/src/mavedb/models/score_calibration_publication_identifier.py b/src/mavedb/models/score_calibration_publication_identifier.py index b02658252..0fee0da46 100644 --- a/src/mavedb/models/score_calibration_publication_identifier.py +++ b/src/mavedb/models/score_calibration_publication_identifier.py @@ -1,7 +1,7 @@ # Prevent circular imports from typing import TYPE_CHECKING -from sqlalchemy import Column, ForeignKey, Integer, Enum +from sqlalchemy import Column, Enum, ForeignKey, Integer from sqlalchemy.orm import Mapped, relationship from mavedb.db.base import Base diff --git a/src/mavedb/routers/experiments.py b/src/mavedb/routers/experiments.py index a58d127b9..14b41ce41 100644 --- a/src/mavedb/routers/experiments.py +++ b/src/mavedb/routers/experiments.py @@ -11,9 +11,9 @@ from mavedb import deps from mavedb.lib.authentication import get_current_user from mavedb.lib.authorization import get_principal, require_current_user, require_current_user_with_email +from mavedb.lib.collections import readable_official_collections from mavedb.lib.contributors import find_or_create_contributor from mavedb.lib.exceptions import NonexistentOrcidUserError -from mavedb.lib.collections import readable_official_collections from mavedb.lib.experiments import enrich_experiment_with_num_score_sets from mavedb.lib.experiments import search_experiments as _search_experiments from mavedb.lib.identifiers import ( diff --git a/src/mavedb/routers/variants.py b/src/mavedb/routers/variants.py index 79f4b92be..44ff679f9 100644 --- a/src/mavedb/routers/variants.py +++ b/src/mavedb/routers/variants.py @@ -3,8 +3,8 @@ from typing import Annotated, Any, List, Optional from fastapi import APIRouter, Depends, Path, Query, Response -from fastapi.exceptions import HTTPException from fastapi.encoders import jsonable_encoder +from fastapi.exceptions import HTTPException from fastapi.responses import JSONResponse, StreamingResponse from ga4gh.core.identifiers import GA4GH_IR_REGEXP from ga4gh.va_spec.acmg_2015 import VariantPathogenicityStatement diff --git a/src/mavedb/scripts/audit_allele_identifiers.py b/src/mavedb/scripts/audit_allele_identifiers.py index ca806d9a7..3b5b1b9df 100644 --- a/src/mavedb/scripts/audit_allele_identifiers.py +++ b/src/mavedb/scripts/audit_allele_identifiers.py @@ -45,11 +45,10 @@ from datetime import datetime from typing import Any, Optional, Sequence +import asyncclick as click from ga4gh.core import ga4gh_identify from ga4gh.vrs.models import Allele as VrsAllele from ga4gh.vrs.models import CisPhasedBlock, SequenceLocation - -import asyncclick as click from sqlalchemy import select from sqlalchemy.orm import Session diff --git a/src/mavedb/scripts/export_public_data.py b/src/mavedb/scripts/export_public_data.py index dd20f8fb1..67f217f32 100644 --- a/src/mavedb/scripts/export_public_data.py +++ b/src/mavedb/scripts/export_public_data.py @@ -29,11 +29,11 @@ from sqlalchemy import select from sqlalchemy.orm import Session, joinedload, lazyload +from mavedb.lib.allele_annotations import get_allele_cross_references +from mavedb.lib.alleles import get_live_record_allele_links, with_chunk_inputs from mavedb.lib.annotation.annotate import variant_highest_level_annotation from mavedb.lib.annotation.conformance import serialize_annotation from mavedb.lib.annotation.context import load_annotation_context_inputs -from mavedb.lib.allele_annotations import get_allele_cross_references -from mavedb.lib.alleles import get_live_record_allele_links, with_chunk_inputs from mavedb.lib.cat_vrs import build_categorical_variant from mavedb.lib.csv.entries import score_sets_have_current_mappings from mavedb.lib.csv.namespaces import CsvNamespace diff --git a/src/mavedb/scripts/export_sweep.py b/src/mavedb/scripts/export_sweep.py index fb04b55a7..672a0c338 100644 --- a/src/mavedb/scripts/export_sweep.py +++ b/src/mavedb/scripts/export_sweep.py @@ -37,13 +37,13 @@ from sqlalchemy import func, select from sqlalchemy.orm import Session +from mavedb.lib.alleles import with_chunk_inputs from mavedb.lib.annotation.annotate import ( variant_functional_impact_statement, variant_pathogenicity_statement, variant_study_result, ) from mavedb.lib.annotation.conformance import AnnotationRoundTripError, round_trip_annotation -from mavedb.lib.alleles import with_chunk_inputs from mavedb.lib.annotation.context import VariantAnnotationContext, load_annotation_context_inputs from mavedb.lib.annotation.exceptions import EXPECTED_ABSENCE_EXCEPTIONS from mavedb.lib.csv.score_set import available_score_set_csv_namespaces, get_score_set_variants_as_csv diff --git a/src/mavedb/scripts/mapped_gene_from_mapped_variant.py b/src/mavedb/scripts/mapped_gene_from_mapped_variant.py index f1cb641b2..9fb45974b 100644 --- a/src/mavedb/scripts/mapped_gene_from_mapped_variant.py +++ b/src/mavedb/scripts/mapped_gene_from_mapped_variant.py @@ -1,17 +1,16 @@ import json import logging -import requests -from typing import Sequence, Optional +from typing import Optional, Sequence import click +import requests from sqlalchemy import select from sqlalchemy.orm import Session -from mavedb.models.score_set import ScoreSet from mavedb.models.mapped_variant import MappedVariant +from mavedb.models.score_set import ScoreSet from mavedb.models.target_gene import TargetGene from mavedb.models.variant import Variant - from mavedb.scripts.environment import script_environment, with_database_session logger = logging.getLogger(__name__) diff --git a/src/mavedb/scripts/migrate_mapped_variants_to_allele_substrate.py b/src/mavedb/scripts/migrate_mapped_variants_to_allele_substrate.py index ce39fdb6a..96e440973 100644 --- a/src/mavedb/scripts/migrate_mapped_variants_to_allele_substrate.py +++ b/src/mavedb/scripts/migrate_mapped_variants_to_allele_substrate.py @@ -127,19 +127,18 @@ import sqlalchemy as sa from biocommons.seqrepo import SeqRepo +from pydantic import ValidationError from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import Session, configure_mappers -from mavedb.models import * # noqa: F401,F403 pylint: disable=wildcard-import — register all mappers for configure_mappers() +from mavedb.data_providers.services import seqrepo from mavedb.db.session import SessionLocal from mavedb.lib.annotation_status_manager import AnnotationStatusManager -from pydantic import ValidationError - -from mavedb.data_providers.services import seqrepo from mavedb.lib.hgvs import extract_accession from mavedb.lib.seqrepo import AmbiguousSequenceError, SequenceNotFoundError, resolve_refget from mavedb.lib.variants import get_hgvs_from_post_mapped from mavedb.lib.vrs_utils import CANONICAL_ACCESSION_PREFIXES, canonical_variation_document, location_refgets +from mavedb.models import * # noqa: F401,F403 pylint: disable=wildcard-import — register all mappers for configure_mappers() from mavedb.models.allele import Allele from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.clinvar_allele_link import ClinvarAlleleLink diff --git a/src/mavedb/view_models/base/base.py b/src/mavedb/view_models/base/base.py index 8abb7f607..d7cb125a5 100644 --- a/src/mavedb/view_models/base/base.py +++ b/src/mavedb/view_models/base/base.py @@ -1,5 +1,4 @@ from humps import camelize - from pydantic import BaseModel as PydanticBaseModel from pydantic import field_validator diff --git a/src/mavedb/view_models/doi_identifier.py b/src/mavedb/view_models/doi_identifier.py index d9afdb24d..0c78a6b99 100644 --- a/src/mavedb/view_models/doi_identifier.py +++ b/src/mavedb/view_models/doi_identifier.py @@ -1,5 +1,4 @@ import idutils - from pydantic import field_validator from mavedb.lib.validation.exceptions import ValidationError diff --git a/src/mavedb/view_models/experiment_controlled_keyword.py b/src/mavedb/view_models/experiment_controlled_keyword.py index 32294e4ef..fe1b2d788 100644 --- a/src/mavedb/view_models/experiment_controlled_keyword.py +++ b/src/mavedb/view_models/experiment_controlled_keyword.py @@ -1,7 +1,7 @@ from typing import Optional -from typing_extensions import Self from pydantic import model_validator +from typing_extensions import Self from mavedb.lib.validation import keywords from mavedb.view_models import keyword, record_type_validator, set_record_type diff --git a/src/mavedb/view_models/external_gene_identifier.py b/src/mavedb/view_models/external_gene_identifier.py index 0dd8a7e2f..d08f9c4bc 100644 --- a/src/mavedb/view_models/external_gene_identifier.py +++ b/src/mavedb/view_models/external_gene_identifier.py @@ -1,7 +1,7 @@ from typing import Optional -from typing_extensions import Self from pydantic import field_validator, model_validator +from typing_extensions import Self from mavedb.lib.validation import identifier as identifier_validator from mavedb.view_models import record_type_validator, set_record_type diff --git a/src/mavedb/view_models/refget.py b/src/mavedb/view_models/refget.py index 06c7683bc..a4c5c79e7 100644 --- a/src/mavedb/view_models/refget.py +++ b/src/mavedb/view_models/refget.py @@ -1,4 +1,5 @@ from typing import List, Optional + from pydantic import BaseModel, Field diff --git a/src/mavedb/view_models/target_accession.py b/src/mavedb/view_models/target_accession.py index 2a7976fef..5dca502f1 100644 --- a/src/mavedb/view_models/target_accession.py +++ b/src/mavedb/view_models/target_accession.py @@ -1,8 +1,8 @@ from datetime import date from typing import Optional -from typing_extensions import Self from pydantic import model_validator +from typing_extensions import Self from mavedb.lib.validation.exceptions import ValidationError from mavedb.view_models import record_type_validator, set_record_type diff --git a/src/mavedb/view_models/target_sequence.py b/src/mavedb/view_models/target_sequence.py index 8f5534d6a..418ad71bc 100644 --- a/src/mavedb/view_models/target_sequence.py +++ b/src/mavedb/view_models/target_sequence.py @@ -1,9 +1,9 @@ from datetime import date from typing import Optional -from typing_extensions import Self from fqfa import infer_sequence_type -from pydantic import field_validator, model_validator, ValidationInfo +from pydantic import ValidationInfo, field_validator, model_validator +from typing_extensions import Self from mavedb.lib.identifiers import sanitize_target_sequence_label from mavedb.lib.validation import target diff --git a/src/mavedb/worker/jobs/variant_processing/reverse_translation.py b/src/mavedb/worker/jobs/variant_processing/reverse_translation.py index 2e1dc4a30..3fa45d62a 100644 --- a/src/mavedb/worker/jobs/variant_processing/reverse_translation.py +++ b/src/mavedb/worker/jobs/variant_processing/reverse_translation.py @@ -39,11 +39,11 @@ from mavedb.lib.variant_translations import get_or_create_allele from mavedb.lib.vrs_utils import translate_hgvs_to_variation, verify_allele_refget from mavedb.models.allele import Allele as AlleleDbModel -from mavedb.models.enums.sequence_level import NUCLEOTIDE_LEVELS, SequenceLevel from mavedb.models.enums.annotation_type import AnnotationType from mavedb.models.enums.disposition import Disposition from mavedb.models.enums.event_reason import EventReason from mavedb.models.enums.job_pipeline import FailureCategory +from mavedb.models.enums.sequence_level import NUCLEOTIDE_LEVELS, SequenceLevel from mavedb.models.enums.target_category import TargetCategory from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele diff --git a/tests/helpers/util/collection.py b/tests/helpers/util/collection.py index acaa3a52a..c3573cafa 100644 --- a/tests/helpers/util/collection.py +++ b/tests/helpers/util/collection.py @@ -1,11 +1,11 @@ -import jsonschema from copy import deepcopy from typing import Any, Dict, Optional -from mavedb.view_models.collection import Collection +import jsonschema +from fastapi.testclient import TestClient +from mavedb.view_models.collection import Collection from tests.helpers.constants import TEST_COLLECTION -from fastapi.testclient import TestClient def create_collection(client: TestClient, update: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: diff --git a/tests/helpers/util/contributor.py b/tests/helpers/util/contributor.py index b21150934..591580f75 100644 --- a/tests/helpers/util/contributor.py +++ b/tests/helpers/util/contributor.py @@ -1,7 +1,8 @@ -from sqlalchemy.orm.exc import NoResultFound +from typing import Any + from sqlalchemy import select from sqlalchemy.orm import Session -from typing import Any +from sqlalchemy.orm.exc import NoResultFound from mavedb.models.contributor import Contributor diff --git a/tests/helpers/util/experiment.py b/tests/helpers/util/experiment.py index b00a1b6a8..22396ea33 100644 --- a/tests/helpers/util/experiment.py +++ b/tests/helpers/util/experiment.py @@ -1,11 +1,11 @@ -import jsonschema from copy import deepcopy from typing import Any, Dict, Optional -from mavedb.view_models.experiment import Experiment, ExperimentCreate +import jsonschema +from fastapi.testclient import TestClient +from mavedb.view_models.experiment import Experiment, ExperimentCreate from tests.helpers.constants import TEST_MINIMAL_EXPERIMENT -from fastapi.testclient import TestClient def create_experiment(client: TestClient, update: Optional[Dict[str, Any]] = None) -> Dict[str, Any]: diff --git a/tests/helpers/util/license.py b/tests/helpers/util/license.py index 895b8a993..61ab834cb 100644 --- a/tests/helpers/util/license.py +++ b/tests/helpers/util/license.py @@ -1,4 +1,5 @@ from sqlalchemy.orm import Session + from mavedb.models.license import License from mavedb.models.score_set import ScoreSet diff --git a/tests/helpers/util/setup/worker.py b/tests/helpers/util/setup/worker.py index 252471ca8..873772576 100644 --- a/tests/helpers/util/setup/worker.py +++ b/tests/helpers/util/setup/worker.py @@ -22,7 +22,6 @@ TEST_VALID_PRE_MAPPED_VRS_ALLELE_VRS2_X, ) - # Placeholder reference accessions for qualifying target-relative HGVS in mock # post-mapped output, keyed by the HGVS kind prefix (``c.``/``n.``/``g.``/``p.``). _PLACEHOLDER_ACCESSIONS = { diff --git a/tests/helpers/util/user.py b/tests/helpers/util/user.py index b0ffab54a..735fab846 100644 --- a/tests/helpers/util/user.py +++ b/tests/helpers/util/user.py @@ -3,7 +3,6 @@ from sqlalchemy.orm import Session from mavedb.models.user import User - from tests.helpers.constants import EXTRA_USER diff --git a/tests/lib/annotation/test_context.py b/tests/lib/annotation/test_context.py index 479e8f694..376db3ad6 100644 --- a/tests/lib/annotation/test_context.py +++ b/tests/lib/annotation/test_context.py @@ -11,7 +11,6 @@ from ga4gh.cat_vrs.models import CategoricalVariant from ga4gh.vrs.models import MolecularVariation - from sqlalchemy import select from mavedb.lib.annotation.context import variant_annotation_context @@ -20,7 +19,6 @@ from tests.helpers.constants import TEST_VALID_POST_MAPPED_VRS_ALLELE from tests.helpers.util.annotation import AlleleSpec, GroupSpec, seed_mapping_record - T0 = datetime(2020, 1, 1, tzinfo=timezone.utc) T1 = datetime(2021, 1, 1, tzinfo=timezone.utc) diff --git a/tests/lib/annotation/test_contribution.py b/tests/lib/annotation/test_contribution.py index fbc0022b2..c7c32cd5d 100644 --- a/tests/lib/annotation/test_contribution.py +++ b/tests/lib/annotation/test_contribution.py @@ -24,8 +24,8 @@ mavedb_score_calibration_contribution, mavedb_vrs_contribution, ) -from mavedb.lib.vrs import vrs_object_from_mapped_variant from mavedb.lib.mondo import get_generic_disease_term +from mavedb.lib.vrs import vrs_object_from_mapped_variant from mavedb.models.score_calibration import ScoreCalibration from mavedb.models.user import User from tests.helpers.constants import TEST_VALID_POST_MAPPED_VRS_ALLELE diff --git a/tests/lib/clingen/test_content_constructors.py b/tests/lib/clingen/test_content_constructors.py index f691a4497..4ae4183f3 100644 --- a/tests/lib/clingen/test_content_constructors.py +++ b/tests/lib/clingen/test_content_constructors.py @@ -1,23 +1,22 @@ from unittest.mock import patch -from uuid import UUID from urllib.parse import quote_plus +from uuid import UUID +from mavedb import __version__ from mavedb.constants import MAVEDB_BASE_GIT, MAVEDB_FRONTEND_URL +from mavedb.lib.clingen.constants import LDH_ENTITY_NAME, LDH_SUBMISSION_TYPE from mavedb.lib.clingen.content_constructors import ( - construct_ldh_submission_event, - construct_ldh_submission_subject, construct_ldh_submission, construct_ldh_submission_entity, + construct_ldh_submission_event, + construct_ldh_submission_subject, ) -from mavedb.lib.clingen.constants import LDH_ENTITY_NAME, LDH_SUBMISSION_TYPE -from mavedb import __version__ - from tests.helpers.constants import ( TEST_HGVS_IDENTIFIER, - VALID_VARIANT_URN, - TEST_VALID_PRE_MAPPED_VRS_ALLELE_VRS2_X, TEST_VALID_POST_MAPPED_VRS_ALLELE_VRS2_X, + TEST_VALID_PRE_MAPPED_VRS_ALLELE_VRS2_X, VALID_SCORE_SET_URN, + VALID_VARIANT_URN, ) diff --git a/tests/lib/conftest.py b/tests/lib/conftest.py index a6e28a698..2742bc01a 100644 --- a/tests/lib/conftest.py +++ b/tests/lib/conftest.py @@ -5,13 +5,12 @@ import pytest -from mavedb.models.enums import JobStatus -from mavedb.models.job_run import JobRun - from mavedb.models.acmg_classification import ACMGClassification +from mavedb.models.enums import JobStatus from mavedb.models.enums.user_role import UserRole from mavedb.models.experiment import Experiment from mavedb.models.experiment_set import ExperimentSet +from mavedb.models.job_run import JobRun from mavedb.models.license import License from mavedb.models.mapped_variant import MappedVariant from mavedb.models.publication_identifier import PublicationIdentifier diff --git a/tests/lib/csv/test_namespaces.py b/tests/lib/csv/test_namespaces.py index a5166ebf4..440ebf042 100644 --- a/tests/lib/csv/test_namespaces.py +++ b/tests/lib/csv/test_namespaces.py @@ -1,5 +1,4 @@ import pytest - from pydantic import TypeAdapter, ValidationError from mavedb.lib.csv.namespaces import ( diff --git a/tests/lib/csv/test_variant.py b/tests/lib/csv/test_variant.py index 62ca3196d..34e1a6a1c 100644 --- a/tests/lib/csv/test_variant.py +++ b/tests/lib/csv/test_variant.py @@ -2,15 +2,14 @@ import csv import io -from unittest.mock import Mock +from unittest.mock import Mock, patch -from tests.helpers.util.annotation import AlleleSpec, GroupSpec, seed_mapping_record -from tests.helpers.util.query_plan import captured_statements +import pytest from sqlalchemy import select from sqlalchemy.exc import IntegrityError -from unittest.mock import patch -import pytest +from tests.helpers.util.annotation import AlleleSpec, GroupSpec, seed_mapping_record +from tests.helpers.util.query_plan import captured_statements pytest.importorskip("psycopg2") @@ -26,14 +25,14 @@ from mavedb.lib.permissions.principal import Principal from mavedb.lib.permissions.score_calibration import ScoreCalibrationViewer from mavedb.models.acmg_classification import ACMGClassification +from mavedb.models.allele import Allele from mavedb.models.clinical_control import ClinvarControl +from mavedb.models.clinvar_allele_link import ClinvarAlleleLink from mavedb.models.enums.acmg_criterion import ACMGCriterion from mavedb.models.enums.functional_classification import FunctionalClassification as FunctionalClassificationOptions from mavedb.models.enums.user_role import UserRole -from mavedb.models.gnomad_variant import GnomADVariant -from mavedb.models.allele import Allele -from mavedb.models.clinvar_allele_link import ClinvarAlleleLink from mavedb.models.gnomad_allele_link import GnomadAlleleLink +from mavedb.models.gnomad_variant import GnomADVariant from mavedb.models.mapped_variant import MappedVariant from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele diff --git a/tests/lib/test_acmg.py b/tests/lib/test_acmg.py index bf82e3629..bc8bf034d 100644 --- a/tests/lib/test_acmg.py +++ b/tests/lib/test_acmg.py @@ -6,9 +6,9 @@ pytest.importorskip("psycopg2") from mavedb.lib.acmg import ( - acmg_evidence_outcome_code, ACMGCriterion, StrengthOfEvidenceProvided, + acmg_evidence_outcome_code, find_or_create_acmg_classification, points_evidence_strength_equivalent, ) diff --git a/tests/lib/test_allele_measurements.py b/tests/lib/test_allele_measurements.py index 8822c928d..cc108a0dd 100644 --- a/tests/lib/test_allele_measurements.py +++ b/tests/lib/test_allele_measurements.py @@ -29,8 +29,8 @@ ) from mavedb.lib.mondo import get_generic_disease_term from mavedb.lib.types.authentication import UserData -from mavedb.models.enums.measurement_relationship import MeasurementRelationship from mavedb.models.allele import Allele +from mavedb.models.enums.measurement_relationship import MeasurementRelationship from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele from mavedb.models.score_calibration import ScoreCalibration diff --git a/tests/lib/test_calibration_control.py b/tests/lib/test_calibration_control.py index 4abc3ae6d..44056e5b2 100644 --- a/tests/lib/test_calibration_control.py +++ b/tests/lib/test_calibration_control.py @@ -7,6 +7,7 @@ import pandas as pd from sqlalchemy.exc import IntegrityError +from mavedb.lib.mondo import get_generic_disease_term from mavedb.lib.score_calibrations import build_calibration_controls, validate_calibration_controls_in_score_set from mavedb.lib.validation.constants.general import ( calibration_control_status_column_name, @@ -19,7 +20,6 @@ from mavedb.models.calibration_control import CalibrationControl from mavedb.models.enums.calibration_control_status import CalibrationControlStatus from mavedb.models.enums.functional_classification import FunctionalClassification -from mavedb.lib.mondo import get_generic_disease_term from mavedb.models.score_calibration import ScoreCalibration from mavedb.models.score_calibration_functional_classification import ScoreCalibrationFunctionalClassification from mavedb.models.score_set import ScoreSet diff --git a/tests/lib/test_cat_vrs.py b/tests/lib/test_cat_vrs.py index 4c3fe193c..dd018fc0a 100644 --- a/tests/lib/test_cat_vrs.py +++ b/tests/lib/test_cat_vrs.py @@ -14,18 +14,18 @@ from ga4gh.cat_vrs.relations import Relation from ga4gh.core.models import Relation as MappingRelation +from mavedb.lib.allele_annotations import AlleleCrossReferences, GnomadReference from mavedb.lib.allele_identity import AlleleDerivation from mavedb.lib.cat_vrs import ( _SPEC_EQUIVALENT, - _relation_concept, CatVrsMode, CatVrsRelation, + _relation_concept, build_categorical_variant, categorical_member_links, is_projection_partner, member_label, ) -from mavedb.lib.allele_annotations import AlleleCrossReferences, GnomadReference from mavedb.models.allele import Allele from mavedb.models.mapping_record_allele import MappingRecordAllele diff --git a/tests/lib/test_seqrepo.py b/tests/lib/test_seqrepo.py index e37d1750e..3c3f57a84 100644 --- a/tests/lib/test_seqrepo.py +++ b/tests/lib/test_seqrepo.py @@ -4,9 +4,8 @@ pytest.importorskip("biocommons.seqrepo") pytest.importorskip("bioutils") -from mavedb.lib.seqrepo import get_sequence_ids, _generate_nsa_options, seqrepo_versions, sequence_generator from mavedb.lib import seqrepo as seqrepo_lib - +from mavedb.lib.seqrepo import _generate_nsa_options, get_sequence_ids, seqrepo_versions, sequence_generator from tests.helpers.constants import TEST_SEQREPO_INITIAL_STATE, VALID_MD5_DIGEST diff --git a/tests/lib/test_urn_redirects.py b/tests/lib/test_urn_redirects.py index 4c7410aae..21685d11b 100644 --- a/tests/lib/test_urn_redirects.py +++ b/tests/lib/test_urn_redirects.py @@ -15,7 +15,6 @@ from mavedb.lib.temp_urns import generate_temp_urn from mavedb.lib.urn_redirects import forwarded_path, record_urn_redirect from mavedb.models.urn_redirect import UrnRedirect - from tests.helpers.constants import VALID_EXPERIMENT_SET_URN, VALID_EXPERIMENT_URN, VALID_SCORE_SET_URN RETIRED_URN = "tmp:00000000-0000-4000-8000-000000000001" diff --git a/tests/lib/test_variant_detail.py b/tests/lib/test_variant_detail.py index efb8f1d33..7c9e78387 100644 --- a/tests/lib/test_variant_detail.py +++ b/tests/lib/test_variant_detail.py @@ -16,12 +16,12 @@ pytest.importorskip("psycopg2") -from mavedb.lib.annotation.context import load_annotation_context_inputs, variant_annotation_context from mavedb.lib.allele_detail import get_allele_detail from mavedb.lib.allele_identity import AlleleDerivation +from mavedb.lib.annotation.context import load_annotation_context_inputs, variant_annotation_context +from mavedb.lib.mondo import get_generic_disease_term from mavedb.lib.score_set_variants import HgvsField, MappedTriple from mavedb.lib.variant_detail import get_variant_detail, load_variant_detail_inputs -from mavedb.lib.mondo import get_generic_disease_term from mavedb.models.allele import Allele from mavedb.models.clinical_control import ClinvarControl from mavedb.models.clinvar_allele_link import ClinvarAlleleLink diff --git a/tests/lib/test_vep.py b/tests/lib/test_vep.py index 98b51a0d3..55db74fa0 100644 --- a/tests/lib/test_vep.py +++ b/tests/lib/test_vep.py @@ -19,7 +19,6 @@ pytest.importorskip("fastapi") from sqlalchemy import select - from variant_annotation.lib.vep import ( RESOLVER_VERSION, ConsequenceOutcome, diff --git a/tests/lib/uniprot/test_id_mapping.py b/tests/lib/uniprot/test_id_mapping.py index 215497784..5a8baeca9 100644 --- a/tests/lib/uniprot/test_id_mapping.py +++ b/tests/lib/uniprot/test_id_mapping.py @@ -1,26 +1,26 @@ # ruff: noqa: E402 -import pytest from unittest import mock + +import pytest from requests.exceptions import HTTPError arq = pytest.importorskip("arq") cdot = pytest.importorskip("cdot") fastapi = pytest.importorskip("fastapi") -from mavedb.lib.uniprot.id_mapping import UniProtIDMappingAPI from mavedb.lib.uniprot.constants import SWISS_PROT_ENTRY_TYPE - +from mavedb.lib.uniprot.id_mapping import UniProtIDMappingAPI from tests.helpers.constants import ( + TEST_UNIPROT_FINISHED_JOB_STATUS_RESPONSE, + TEST_UNIPROT_ID_FAILED_ID_MAPPING_RESPONSE, + TEST_UNIPROT_ID_MAPPING_SWISS_PROT_RESPONSE, TEST_UNIPROT_JOB_ID, - TEST_UNIPROT_JOB_SUBMISSION_RESPONSE, TEST_UNIPROT_JOB_SUBMISSION_ERROR_RESPONSE, + TEST_UNIPROT_JOB_SUBMISSION_RESPONSE, TEST_UNIPROT_REDIRECT_RESPONSE, - VALID_NT_ACCESSION, - TEST_UNIPROT_FINISHED_JOB_STATUS_RESPONSE, TEST_UNIPROT_RUNNING_JOB_STATUS_RESPONSE, - TEST_UNIPROT_ID_MAPPING_SWISS_PROT_RESPONSE, - TEST_UNIPROT_ID_FAILED_ID_MAPPING_RESPONSE, + VALID_NT_ACCESSION, ) diff --git a/tests/routers/test_collections.py b/tests/routers/test_collections.py index 899a30fba..5f60a0fc0 100644 --- a/tests/routers/test_collections.py +++ b/tests/routers/test_collections.py @@ -17,10 +17,10 @@ from mavedb.models.enums.contribution_role import ContributionRole from mavedb.view_models.collection import Collection from tests.helpers.constants import ( + ADMIN_USER, EXTRA_USER, TEST_COLLECTION, TEST_COLLECTION_RESPONSE, - ADMIN_USER, TEST_USER, ) from tests.helpers.dependency_overrider import DependencyOverrider diff --git a/tests/routers/test_experiment_set.py b/tests/routers/test_experiment_set.py index ebf5c9dab..cb26db357 100644 --- a/tests/routers/test_experiment_set.py +++ b/tests/routers/test_experiment_set.py @@ -1,8 +1,9 @@ # ruff: noqa: E402 -import pytest from unittest.mock import patch +import pytest + arq = pytest.importorskip("arq") cdot = pytest.importorskip("cdot") fastapi = pytest.importorskip("fastapi") @@ -10,7 +11,6 @@ from mavedb.models.experiment import Experiment as ExperimentDbModel from mavedb.models.experiment_set import ExperimentSet as ExperimentSetDbModel from mavedb.models.score_set import ScoreSet as ScoreSetDbModel - from tests.helpers.constants import ( TEST_USER, ) diff --git a/tests/routers/test_genes.py b/tests/routers/test_genes.py index 70463e5a1..fcf83da01 100644 --- a/tests/routers/test_genes.py +++ b/tests/routers/test_genes.py @@ -113,9 +113,10 @@ def test_get_gene_slash_symbol_returns_404(): # No approved HGNC symbols currently contain a slash — the GeneSymbolConverter regex # intentionally excludes them. This test documents that behaviour: a percent-encoded # slash in the URL path is not routed to the gene handler. - from mavedb.server_main import app from starlette.testclient import TestClient as StarletteTestClient + from mavedb.server_main import app + with StarletteTestClient(app) as c: response = c.get(f"/api/v1/genes/{quote(SLASH_GENE, safe='')}") diff --git a/tests/routers/test_mapped_variant.py b/tests/routers/test_mapped_variant.py index 5a2a33bfd..16abed8cd 100644 --- a/tests/routers/test_mapped_variant.py +++ b/tests/routers/test_mapped_variant.py @@ -14,7 +14,6 @@ from urllib.parse import quote, quote_plus - TEST_URN = "urn:mavedb:00000001-a-1#1" diff --git a/tests/routers/test_publication_identifiers.py b/tests/routers/test_publication_identifiers.py index 5a6f0765c..6c3c80de9 100644 --- a/tests/routers/test_publication_identifiers.py +++ b/tests/routers/test_publication_identifiers.py @@ -1,18 +1,15 @@ # ruff: noqa: E402 import pytest # noqa: F401 - -from sqlalchemy import select, delete +from sqlalchemy import delete, select arq = pytest.importorskip("arq") cdot = pytest.importorskip("cdot") fastapi = pytest.importorskip("fastapi") from mavedb.models.publication_identifier import PublicationIdentifier - from tests.helpers.constants import TEST_PUBMED_PUBLICATION - # TODO#497: Expand test coverage for publication identifier routes. diff --git a/tests/routers/test_score_set.py b/tests/routers/test_score_set.py index b17e29fd9..08d1603b2 100644 --- a/tests/routers/test_score_set.py +++ b/tests/routers/test_score_set.py @@ -3,10 +3,10 @@ import csv import json import re +import threading from copy import deepcopy from datetime import date, datetime, timezone from io import StringIO -import threading from types import SimpleNamespace from unittest.mock import patch @@ -21,8 +21,8 @@ fastapi = pytest.importorskip("fastapi") from mavedb.lib.annotation.annotate import variant_study_result -from mavedb.lib.csv import build_limiter from mavedb.lib.annotation.exceptions import MappingDataDoesntExistException +from mavedb.lib.csv import build_limiter from mavedb.lib.exceptions import NonexistentOrcidUserError from mavedb.lib.score_distribution import summarize_scores from mavedb.lib.validation.urn_re import MAVEDB_EXPERIMENT_URN_RE, MAVEDB_SCORE_SET_URN_RE, MAVEDB_TMP_URN_RE @@ -34,15 +34,15 @@ from mavedb.models.enums.processing_state import ProcessingState from mavedb.models.enums.target_category import TargetCategory from mavedb.models.experiment import Experiment as ExperimentDbModel +from mavedb.models.gnomad_variant import GnomADVariant as GnomADVariantDbModel from mavedb.models.job_run import JobRun from mavedb.models.mapping_record import MappingRecord from mavedb.models.pipeline import Pipeline -from mavedb.models.gnomad_variant import GnomADVariant as GnomADVariantDbModel +from mavedb.models.score_calibration import ScoreCalibration as ScoreCalibrationDbModel from mavedb.models.score_set import ScoreSet as ScoreSetDbModel from mavedb.models.variant import Variant as VariantDbModel -from mavedb.view_models.lean_variant import LeanVariant -from mavedb.models.score_calibration import ScoreCalibration as ScoreCalibrationDbModel from mavedb.routers.score_sets import _annotation_stream_record +from mavedb.view_models.lean_variant import LeanVariant from mavedb.view_models.orcid import OrcidUser from mavedb.view_models.score_set import ScoreSet, ScoreSetCreate from tests.helpers.constants import ( @@ -83,6 +83,7 @@ ) from tests.helpers.dependency_overrider import DependencyOverrider from tests.helpers.util.annotation import AlleleSpec, GroupSpec, seed_mapping_record +from tests.helpers.util.collection import create_collection from tests.helpers.util.common import ( create_failing_side_effect, deepcamelize, @@ -106,7 +107,6 @@ seed_csv_substrate, shift_hgvs_position, ) -from tests.helpers.util.collection import create_collection from tests.helpers.util.user import change_ownership from tests.helpers.util.variant import ( mock_worker_variant_insertion, diff --git a/tests/routers/test_statistics.py b/tests/routers/test_statistics.py index 6618eaf76..b5be7bf3b 100644 --- a/tests/routers/test_statistics.py +++ b/tests/routers/test_statistics.py @@ -1,34 +1,34 @@ # ruff: noqa: E402 +from unittest.mock import patch + import pytest from humps import camelize -from unittest.mock import patch arq = pytest.importorskip("arq") cdot = pytest.importorskip("cdot") fastapi = pytest.importorskip("fastapi") from mavedb.models.published_variant import PublishedVariantsMV - from tests.helpers.constants import ( TEST_BIORXIV_IDENTIFIER, - TEST_MINIMAL_MAPPED_VARIANT, - TEST_NT_CDOT_TRANSCRIPT, TEST_KEYWORDS, TEST_MEDRXIV_IDENTIFIER, TEST_MINIMAL_ACC_SCORESET, + TEST_MINIMAL_MAPPED_VARIANT, TEST_MINIMAL_SEQ_SCORESET, + TEST_NT_CDOT_TRANSCRIPT, TEST_PUBMED_IDENTIFIER, VALID_GENE, ) +from tests.helpers.util.experiment import create_experiment from tests.helpers.util.score_set import ( - publish_score_set, create_acc_score_set, create_seq_score_set, + publish_score_set, seed_annotation_substrate, ) -from tests.helpers.util.experiment import create_experiment -from tests.helpers.util.variant import mock_worker_variant_insertion, create_mapped_variants_for_score_set +from tests.helpers.util.variant import create_mapped_variants_for_score_set, mock_worker_variant_insertion TARGET_ACCESSION_FIELDS = ["accession", "assembly", "gene"] TARGET_SEQUENCE_FIELDS = ["sequence", "sequence-type"] diff --git a/tests/routers/test_target_gene.py b/tests/routers/test_target_gene.py index 63887cfb9..c231c6bf0 100644 --- a/tests/routers/test_target_gene.py +++ b/tests/routers/test_target_gene.py @@ -1,20 +1,20 @@ # ruff: noqa: E402 -import pytest from copy import deepcopy from unittest.mock import patch +import pytest + arq = pytest.importorskip("arq") cdot = pytest.importorskip("cdot") fastapi = pytest.importorskip("fastapi") from mavedb.models.score_set import ScoreSet as ScoreSetDbModel - from tests.helpers.constants import TEST_MINIMAL_SEQ_SCORESET, TEST_USER from tests.helpers.dependency_overrider import DependencyOverrider from tests.helpers.util.contributor import add_contributor from tests.helpers.util.experiment import create_experiment -from tests.helpers.util.user import change_ownership from tests.helpers.util.score_set import create_seq_score_set, publish_score_set +from tests.helpers.util.user import change_ownership from tests.helpers.util.variant import mock_worker_variant_insertion diff --git a/tests/routers/test_urn_redirects.py b/tests/routers/test_urn_redirects.py index cdeeb095a..5babd20df 100644 --- a/tests/routers/test_urn_redirects.py +++ b/tests/routers/test_urn_redirects.py @@ -11,7 +11,6 @@ from mavedb.models.experiment import Experiment as ExperimentDbModel from mavedb.models.experiment_set import ExperimentSet as ExperimentSetDbModel from mavedb.models.score_set import ScoreSet as ScoreSetDbModel - from tests.helpers.util.experiment import create_experiment from tests.helpers.util.score_set import ( create_seq_score_set, diff --git a/tests/routers/test_variant_annotation.py b/tests/routers/test_variant_annotation.py index 60c9bebad..55ebdb21e 100644 --- a/tests/routers/test_variant_annotation.py +++ b/tests/routers/test_variant_annotation.py @@ -23,7 +23,6 @@ from ga4gh.va_spec.acmg_2015 import VariantPathogenicityStatement from ga4gh.va_spec.base.core import ExperimentalVariantFunctionalImpactStudyResult, Statement - from sqlalchemy import select from mavedb.models.mapping_record import MappingRecord as MappingRecordDbModel diff --git a/tests/scripts/conftest.py b/tests/scripts/conftest.py index a6c47a44f..3e2f6ccb7 100644 --- a/tests/scripts/conftest.py +++ b/tests/scripts/conftest.py @@ -6,18 +6,17 @@ from sqlalchemy import select from mavedb.models.acmg_classification import ACMGClassification +from mavedb.models.allele import Allele from mavedb.models.clinical_control import ClinvarControl +from mavedb.models.clinvar_allele_link import ClinvarAlleleLink from mavedb.models.collection import Collection from mavedb.models.collection_score_set_association import CollectionScoreSetAssociation from mavedb.models.experiment import Experiment from mavedb.models.experiment_set import ExperimentSet from mavedb.models.license import License -from mavedb.models.allele import Allele -from mavedb.models.clinvar_allele_link import ClinvarAlleleLink from mavedb.models.mapped_variant import MappedVariant from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele -from tests.helpers.util.annotation import AlleleSpec, seed_mapping_record from mavedb.models.score_set import ScoreSet from mavedb.models.target_accession import TargetAccession from mavedb.models.target_gene import TargetGene @@ -35,6 +34,7 @@ TEST_USER, TEST_VALID_POST_MAPPED_VRS_ALLELE_VRS2_X, ) +from tests.helpers.util.annotation import AlleleSpec, seed_mapping_record try: from .conftest_optional import * # noqa: F401, F403 diff --git a/tests/scripts/conftest_optional.py b/tests/scripts/conftest_optional.py index 65b16e8a7..94c7c80ab 100644 --- a/tests/scripts/conftest_optional.py +++ b/tests/scripts/conftest_optional.py @@ -6,13 +6,13 @@ import pytest +from mavedb.lib.mondo import get_generic_disease_term from mavedb.lib.permissions.principal import Principal from mavedb.lib.permissions.score_calibration import ScoreCalibrationViewer from mavedb.lib.score_calibrations import variants_for_functional_classification from mavedb.models.acmg_classification import ACMGClassification from mavedb.models.enums.acmg_criterion import ACMGCriterion from mavedb.models.enums.functional_classification import FunctionalClassification -from mavedb.lib.mondo import get_generic_disease_term from mavedb.models.score_calibration import ScoreCalibration from mavedb.models.score_calibration_functional_classification import ScoreCalibrationFunctionalClassification diff --git a/tests/scripts/test_audit_reverse_translation.py b/tests/scripts/test_audit_reverse_translation.py index 82c7f136d..b19e907fb 100644 --- a/tests/scripts/test_audit_reverse_translation.py +++ b/tests/scripts/test_audit_reverse_translation.py @@ -12,9 +12,9 @@ bioutils = pytest.importorskip("bioutils") pytest.importorskip("ga4gh.vrs") -from mavedb.lib.seqrepo import SequenceNotFoundError from sqlalchemy import select +from mavedb.lib.seqrepo import SequenceNotFoundError from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.mapping_record_allele import MappingRecordAllele from mavedb.models.variant import Variant diff --git a/tests/scripts/test_backfill_campaign.py b/tests/scripts/test_backfill_campaign.py index 85bdcb851..71f7c8d8e 100644 --- a/tests/scripts/test_backfill_campaign.py +++ b/tests/scripts/test_backfill_campaign.py @@ -25,7 +25,6 @@ from tests.helpers.constants import TEST_MINIMAL_MAPPED_VARIANT from tests.helpers.util.annotation import AlleleSpec, GroupSpec, seed_mapping_record - # Pure: state classification diff --git a/tests/validation/dataframe/conftest.py b/tests/validation/dataframe/conftest.py index 51e45fa73..10f0b61f0 100644 --- a/tests/validation/dataframe/conftest.py +++ b/tests/validation/dataframe/conftest.py @@ -1,12 +1,13 @@ +from unittest import TestCase, mock + import pandas as pd import pytest -from unittest import mock, TestCase from mavedb.lib.validation.constants.general import ( + guide_sequence_column, hgvs_nt_column, hgvs_pro_column, hgvs_splice_column, - guide_sequence_column, required_score_column, ) from tests.helpers.constants import TEST_NT_CDOT_TRANSCRIPT, TEST_PRO_CDOT_TRANSCRIPT diff --git a/tests/validation/dataframe/test_column.py b/tests/validation/dataframe/test_column.py index a11da0bb8..f0c5aca08 100644 --- a/tests/validation/dataframe/test_column.py +++ b/tests/validation/dataframe/test_column.py @@ -1,8 +1,8 @@ from unittest import TestCase from unittest.mock import Mock + import pandas as pd -from mavedb.lib.validation.exceptions import ValidationError from mavedb.lib.validation.constants.general import ( hgvs_nt_column, hgvs_pro_column, @@ -11,14 +11,14 @@ ) from mavedb.lib.validation.dataframe.column import ( construct_target_sequence_mappings, - infer_column_type, generate_variant_prefixes, + infer_column_type, validate_data_column, validate_hgvs_column_properties, - validate_variant_formatting, validate_variant_column, + validate_variant_formatting, ) - +from mavedb.lib.validation.exceptions import ValidationError from tests.validation.dataframe.conftest import DfTestCase diff --git a/tests/validation/dataframe/test_variant.py b/tests/validation/dataframe/test_variant.py index 7fa167833..b689442e7 100644 --- a/tests/validation/dataframe/test_variant.py +++ b/tests/validation/dataframe/test_variant.py @@ -1,36 +1,35 @@ -import pytest -import pandas as pd import unittest from unittest.mock import Mock, patch +import pandas as pd +import pytest + from mavedb.lib.validation.constants.general import ( hgvs_nt_column, hgvs_pro_column, hgvs_splice_column, ) from mavedb.lib.validation.dataframe.variant import ( + validate_genomic_variant, validate_guide_sequence_column, - validate_hgvs_transgenic_column, validate_hgvs_genomic_column, - validate_genomic_variant, - validate_transgenic_variant, - validate_observed_sequence_types, validate_hgvs_prefix_combinations, + validate_hgvs_transgenic_column, + validate_observed_sequence_types, + validate_transgenic_variant, ) from mavedb.lib.validation.exceptions import ValidationError - from tests.helpers.constants import ( - VALID_NT_ACCESSION, - VALID_PRO_ACCESSION, TEST_NT_CDOT_TRANSCRIPT, TEST_PRO_CDOT_TRANSCRIPT, + VALID_NT_ACCESSION, + VALID_PRO_ACCESSION, ) from tests.validation.dataframe.conftest import DfTestCase - try: - import hgvs # noqa: F401 import cdot.hgvs.dataproviders # noqa: F401 + import hgvs # noqa: F401 HGVS_INSTALLED = True except ModuleNotFoundError: diff --git a/tests/view_models/test_access_key.py b/tests/view_models/test_access_key.py index 3b4344e0d..b9b912d3c 100644 --- a/tests/view_models/test_access_key.py +++ b/tests/view_models/test_access_key.py @@ -1,5 +1,4 @@ from mavedb.view_models.access_key import SavedAccessKey - from tests.helpers.util.common import dummy_attributed_object_from_dict diff --git a/tests/view_models/test_external_gene_identifier.py b/tests/view_models/test_external_gene_identifier.py index 882199473..e060dfc6c 100644 --- a/tests/view_models/test_external_gene_identifier.py +++ b/tests/view_models/test_external_gene_identifier.py @@ -1,7 +1,7 @@ import pytest from mavedb.view_models.external_gene_identifier import ExternalGeneIdentifierCreate -from tests.helpers.constants import TEST_REFSEQ_IDENTIFIER, TEST_UNIPROT_IDENTIFIER, TEST_ENSEMBL_IDENTIFIER +from tests.helpers.constants import TEST_ENSEMBL_IDENTIFIER, TEST_REFSEQ_IDENTIFIER, TEST_UNIPROT_IDENTIFIER def test_create_ensemble_identifier(): diff --git a/tests/view_models/test_license.py b/tests/view_models/test_license.py index 67ab71ba7..276de12c0 100644 --- a/tests/view_models/test_license.py +++ b/tests/view_models/test_license.py @@ -1,9 +1,8 @@ from datetime import date from mavedb.view_models.license import License - -from tests.helpers.util.common import dummy_attributed_object_from_dict from tests.helpers.constants import TEST_LICENSE +from tests.helpers.util.common import dummy_attributed_object_from_dict def test_minimal_license(): diff --git a/tests/view_models/test_orcid.py b/tests/view_models/test_orcid.py index f62315d73..d28296fd4 100644 --- a/tests/view_models/test_orcid.py +++ b/tests/view_models/test_orcid.py @@ -1,8 +1,7 @@ from mavedb.view_models.orcid import OrcidAuthTokenRequest, OrcidAuthTokenResponse, OrcidUser - from tests.helpers.constants import ( - TEST_MINIMAL_ORCID_AUTH_TOKEN_RESPONSE, TEST_MINIMAL_ORCID_AUTH_TOKEN_REQUEST, + TEST_MINIMAL_ORCID_AUTH_TOKEN_RESPONSE, TEST_MINIMAL_ORCID_USER, ) diff --git a/tests/view_models/test_raw_read_identifier.py b/tests/view_models/test_raw_read_identifier.py index 24b7a582a..d9add8f21 100644 --- a/tests/view_models/test_raw_read_identifier.py +++ b/tests/view_models/test_raw_read_identifier.py @@ -1,7 +1,6 @@ -from mavedb.view_models.raw_read_identifier import RawReadIdentifierCreate, RawReadIdentifier - -from tests.helpers.util.common import dummy_attributed_object_from_dict +from mavedb.view_models.raw_read_identifier import RawReadIdentifier, RawReadIdentifierCreate from tests.helpers.constants import TEST_MINIMAL_RAW_READ_IDENTIFIER, TEST_SAVED_MINIMAL_RAW_READ_IDENTIFIER +from tests.helpers.util.common import dummy_attributed_object_from_dict def test_minimal_raw_read_identifier_create(): diff --git a/tests/view_models/test_search.py b/tests/view_models/test_search.py index 48d686aba..5ecfd4ae2 100644 --- a/tests/view_models/test_search.py +++ b/tests/view_models/test_search.py @@ -1,5 +1,4 @@ from mavedb.view_models.search import ExperimentsSearch, ScoreSetsSearch, TextSearch - from tests.helpers.constants import ( TEST_POPULATED_EXPERIMENT_SEARCH, TEST_POPULATED_SCORE_SET_SEARCH, diff --git a/tests/view_models/test_taxonomy.py b/tests/view_models/test_taxonomy.py index 2d7ac92a2..3fea8cded 100644 --- a/tests/view_models/test_taxonomy.py +++ b/tests/view_models/test_taxonomy.py @@ -1,7 +1,6 @@ -from mavedb.view_models.taxonomy import TaxonomyCreate, Taxonomy - -from tests.helpers.util.common import dummy_attributed_object_from_dict +from mavedb.view_models.taxonomy import Taxonomy, TaxonomyCreate from tests.helpers.constants import TEST_MINIMAL_TAXONOMY, TEST_POPULATED_TAXONOMY, TEST_SAVED_TAXONOMY +from tests.helpers.util.common import dummy_attributed_object_from_dict def test_minimal_taxonomy_create(): diff --git a/tests/worker/jobs/external_services/test_clingen.py b/tests/worker/jobs/external_services/test_clingen.py index d89b35aa2..7ff8c966a 100644 --- a/tests/worker/jobs/external_services/test_clingen.py +++ b/tests/worker/jobs/external_services/test_clingen.py @@ -13,14 +13,14 @@ from mavedb.lib.types.workflow import JobExecutionOutcome from mavedb.lib.variants import get_hgvs_from_post_mapped from mavedb.models.allele import Allele +from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.clinical_control import ClinvarControl from mavedb.models.clinvar_allele_link import ClinvarAlleleLink +from mavedb.models.enums.job_pipeline import JobStatus, PipelineStatus from mavedb.models.gnomad_allele_link import GnomadAlleleLink from mavedb.models.gnomad_variant import GnomADVariant -from mavedb.models.enums.job_pipeline import JobStatus, PipelineStatus from mavedb.models.mapping_record_allele import MappingRecordAllele from mavedb.models.variant import Variant -from mavedb.models.annotation_event import AnnotationEvent from mavedb.worker.jobs.external_services.clingen import ( submit_score_set_mappings_to_car, submit_score_set_mappings_to_ldh, diff --git a/tests/worker/jobs/external_services/test_gnomad.py b/tests/worker/jobs/external_services/test_gnomad.py index 03a3cefac..51e9d84b2 100644 --- a/tests/worker/jobs/external_services/test_gnomad.py +++ b/tests/worker/jobs/external_services/test_gnomad.py @@ -11,13 +11,13 @@ from mavedb.lib import gnomad as gnomad_lib from mavedb.lib.gnomad import GNOMAD_DATA_VERSION from mavedb.lib.types.workflow import JobExecutionOutcome +from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.enums.annotation_type import AnnotationType from mavedb.models.enums.disposition import Disposition from mavedb.models.enums.event_reason import EventReason from mavedb.models.enums.job_pipeline import JobStatus, PipelineStatus from mavedb.models.gnomad_allele_link import GnomadAlleleLink from mavedb.models.gnomad_variant import GnomADVariant -from mavedb.models.annotation_event import AnnotationEvent from mavedb.worker.jobs.external_services.gnomad import link_gnomad_variants from mavedb.worker.lib.managers.job_manager import JobManager diff --git a/tests/worker/jobs/external_services/test_vep.py b/tests/worker/jobs/external_services/test_vep.py index cc24e213c..870e36ed1 100644 --- a/tests/worker/jobs/external_services/test_vep.py +++ b/tests/worker/jobs/external_services/test_vep.py @@ -8,7 +8,6 @@ from unittest.mock import patch from sqlalchemy import select - from variant_annotation.lib.vep import ( NO_CHANGE_TERM, RESOLVER_VERSION, @@ -19,9 +18,9 @@ ) from mavedb.lib.types.workflow import JobExecutionOutcome +from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.enums.job_pipeline import JobStatus, PipelineStatus from mavedb.models.enums.vep import VepConsequenceSource -from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.vep_allele_consequence import VepAlleleConsequence from mavedb.worker.jobs.external_services.vep import populate_vep_for_score_set from mavedb.worker.lib.managers.job_manager import JobManager diff --git a/tests/worker/jobs/variant_processing/test_mapping.py b/tests/worker/jobs/variant_processing/test_mapping.py index ca13d8505..e04bc958a 100644 --- a/tests/worker/jobs/variant_processing/test_mapping.py +++ b/tests/worker/jobs/variant_processing/test_mapping.py @@ -15,14 +15,14 @@ from mavedb.lib.mapping import EXCLUDED_PREMAPPED_ANNOTATION_KEYS from mavedb.lib.types.workflow import JobExecutionOutcome from mavedb.models.allele import Allele -from mavedb.models.enums.sequence_level import SequenceLevel +from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.enums.job_pipeline import JobStatus, PipelineStatus from mavedb.models.enums.mapping_state import MappingState +from mavedb.models.enums.sequence_level import SequenceLevel from mavedb.models.mapping_record import MappingRecord from mavedb.models.mapping_record_allele import MappingRecordAllele from mavedb.models.target_gene_mapping import TargetGeneMapping from mavedb.models.variant import Variant -from mavedb.models.annotation_event import AnnotationEvent from mavedb.worker.jobs.variant_processing.mapping import ( MAP_BUDGET_BASE_SECONDS, MAP_BUDGET_MAX_SECONDS, diff --git a/tests/worker/jobs/variant_processing/test_reverse_translation.py b/tests/worker/jobs/variant_processing/test_reverse_translation.py index 52b045788..b8743d03d 100644 --- a/tests/worker/jobs/variant_processing/test_reverse_translation.py +++ b/tests/worker/jobs/variant_processing/test_reverse_translation.py @@ -18,9 +18,11 @@ ) from mavedb.lib.types.workflow import JobExecutionOutcome +from mavedb.lib.vrs_utils import canonical_variation_document from mavedb.models.allele import Allele -from mavedb.models.enums.sequence_level import SequenceLevel +from mavedb.models.annotation_event import AnnotationEvent from mavedb.models.enums.job_pipeline import JobStatus +from mavedb.models.enums.sequence_level import SequenceLevel from mavedb.models.enums.target_category import TargetCategory from mavedb.models.job_run import JobRun from mavedb.models.mapping_record import MappingRecord @@ -29,7 +31,6 @@ from mavedb.models.target_accession import TargetAccession from mavedb.models.target_gene_mapping import TargetGeneMapping from mavedb.models.variant import Variant -from mavedb.models.annotation_event import AnnotationEvent from mavedb.worker.jobs.variant_processing.mapping import map_variants_for_score_set from mavedb.worker.jobs.variant_processing.reverse_translation import ( _build_translation_config, @@ -38,7 +39,6 @@ ) from mavedb.worker.lib.managers.job_manager import JobManager from mavedb.worker.lib.projection import project_measured_variants -from mavedb.lib.vrs_utils import canonical_variation_document from tests.helpers.constants import TEST_VALID_POST_MAPPED_VRS_ALLELE from tests.helpers.util.setup.worker import construct_mock_mapping_output diff --git a/tests/worker/lib/managers/test_utils.py b/tests/worker/lib/managers/test_utils.py index c1d9f27e5..7b62f6d0b 100644 --- a/tests/worker/lib/managers/test_utils.py +++ b/tests/worker/lib/managers/test_utils.py @@ -10,6 +10,7 @@ from mavedb.lib.types.workflow import JobExecutionOutcome from mavedb.models.enums.job_pipeline import DependencyType, FailureCategory, JobStatus +from mavedb.models.job_run import JobRun from mavedb.worker.lib.managers.constants import ( ACTIVE_JOB_STATUSES, COMPLETED_JOB_STATUSES, @@ -17,7 +18,6 @@ STARTABLE_JOB_STATUSES, TERMINAL_JOB_STATUSES, ) -from mavedb.models.job_run import JobRun from mavedb.worker.lib.managers.utils import ( FAST_LANE_QUEUE_NAME, arq_queue_name,