From 9a6691bf7a877016c5932a9fca6105c57547e80a Mon Sep 17 00:00:00 2001 From: Dave Lawrence Date: Fri, 31 Jan 2025 17:50:54 +1030 Subject: [PATCH] Make abstract class an ABC. Add type hints --- upload/vcf/abstract_bulk_vcf_processor.py | 11 ++++++++++- upload/vcf/bulk_minimal_vcf_processor.py | 2 +- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/upload/vcf/abstract_bulk_vcf_processor.py b/upload/vcf/abstract_bulk_vcf_processor.py index b170327a2..f63ba69f9 100644 --- a/upload/vcf/abstract_bulk_vcf_processor.py +++ b/upload/vcf/abstract_bulk_vcf_processor.py @@ -1,3 +1,4 @@ +import abc import os import cyvcf2 @@ -10,7 +11,7 @@ from upload.vcf.sql_copy_files import write_sql_copy_csv -class AbstractBulkVCFProcessor: +class AbstractBulkVCFProcessor(abc.ABC): """ The minimum a VCF processor needs to do is set max_variant_id and insert multi-allelics so we know what was normalised """ @@ -29,6 +30,14 @@ def __init__(self, upload_step, preprocess_vcf_import_info, batch_size=settings. self.modified_imported_variants = [] self.variant_pk_lookup = VariantPKLookup(upload_step.genome_build) + @abc.abstractmethod + def process_entry(self, variant: cyvcf2.Variant): + pass + + @abc.abstractmethod + def finish(self): + pass + @property def genome_build(self): return self.upload_pipeline.genome_build diff --git a/upload/vcf/bulk_minimal_vcf_processor.py b/upload/vcf/bulk_minimal_vcf_processor.py index b21177d52..865a10b67 100644 --- a/upload/vcf/bulk_minimal_vcf_processor.py +++ b/upload/vcf/bulk_minimal_vcf_processor.py @@ -26,7 +26,7 @@ def get_vcf_importer_version(): code_git_hash=Git(settings.BASE_DIR).hash) return vcf_importer - def process_entry(self, variant): + def process_entry(self, variant: cyvcf2.Variant): ref, alt, svlen = vcf_get_ref_alt_svlen(variant) variant_coordinate = VariantCoordinate(chrom=variant.CHROM, position=variant.POS, ref=ref, alt=alt, svlen=svlen) variant_hash = self.variant_pk_lookup.get_variant_coordinate_hash(variant_coordinate)