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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "pmotools"
version = "v1.2.0"
version = "v1.2.1"
description = "Tools for building and analyzing PMO files"
readme = "README.md"
authors = [
Expand Down
8 changes: 3 additions & 5 deletions src/pmotools/pmo_engine/pmo_exporter.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from pmotools.pmo_engine.pmo_checker import PMOChecker
from pmotools.pmo_engine.pmo_processor import PMOProcessor

from pmotools import __version__ as __pmotools_version__
from pmotools import __schema_version__


class BedLoc(NamedTuple):
Expand Down Expand Up @@ -627,11 +627,9 @@ def extract_alleles_per_sample_table(
"seq",
],
jsonschema_fnp=os.path.join(
os.path.dirname(
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
),
os.path.dirname(os.path.dirname(os.path.abspath(__file__))),
"schemas/",
f"portable_microhaplotype_object_v{__pmotools_version__}.schema.json",
f"portable_microhaplotype_object_v{__schema_version__}.schema.json",
),
validate_pmo: bool = False,
) -> pd.DataFrame:
Expand Down
3 changes: 2 additions & 1 deletion src/pmotools/pmo_engine/pmo_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import sys
from collections import defaultdict
from pmotools import __version__ as __pmotools_version__
from pmotools import __schema_version__


class PMOReader:
Expand Down Expand Up @@ -66,7 +67,7 @@ def combine_multiple_pmos(pmos: list[dict]):
# currently losing all info about previous header info,
# consider coming up with something in standard that might preserve this info if needed
pmo_out["pmo_header"] = {
"pmo_version": __pmotools_version__,
"pmo_version": __schema_version__,
"creation_date": datetime.datetime.now().strftime("%Y-%m-%d"),
"generation_method": {
"program_name": "pmotools-python.PMOReader.combine_multiple_pmos",
Expand Down
4 changes: 2 additions & 2 deletions src/pmotools/scripts/pmo_to_tables/extract_allele_table.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from pmotools.pmo_engine.pmo_processor import PMOProcessor
from pmotools.pmo_engine.pmo_exporter import PMOExporter

from pmotools import __version__ as __pmotools_version__
from pmotools import __schema_version__


def get_parser() -> argparse.ArgumentParser:
Expand All @@ -36,7 +36,7 @@ def get_parser() -> argparse.ArgumentParser:
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
),
"schemas/",
f"portable_microhaplotype_object_v{__pmotools_version__}.schema.json",
f"portable_microhaplotype_object_v{__schema_version__}.schema.json",
),
type=str,
required=False,
Expand Down
4 changes: 2 additions & 2 deletions src/pmotools/scripts/pmo_utils/validate_pmo.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from pmotools.pmo_engine.pmo_reader import PMOReader
from pmotools.pmo_engine.pmo_checker import PMOChecker
from pmotools.utils.small_utils import Utils
from pmotools import __version__ as __pmotools_version__
from pmotools import __schema_version__


def get_parser_validate_pmo() -> argparse.ArgumentParser:
Expand All @@ -18,7 +18,7 @@ def get_parser_validate_pmo() -> argparse.ArgumentParser:
parser.add_argument("--pmo", type=str, required=True, help="a pmo file to validate")
parser.add_argument(
"--jsonschema_version",
default=__pmotools_version__,
default=__schema_version__,
type=str,
required=False,
help="version of the jsonschema to validate against (default: %(default)s)",
Expand Down
45 changes: 45 additions & 0 deletions tests/test_default_schema_version.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/usr/bin/env python3
import inspect
import os
import unittest

from pmotools import __schema_version__
from pmotools.pmo_engine.pmo_exporter import PMOExporter
from pmotools.scripts.pmo_to_tables import extract_allele_table
from pmotools.scripts.pmo_utils import validate_pmo


class TestDefaultSchemaVersion(unittest.TestCase):
"""The default schema must follow the schema version, not the package version."""

def setUp(self):
self.expected_schema_fname = (
f"portable_microhaplotype_object_v{__schema_version__}.schema.json"
)

def assert_default_schema(self, fnp):
self.assertEqual(os.path.basename(fnp), self.expected_schema_fname)
self.assertTrue(os.path.exists(fnp), f"{fnp} does not exist")

def test_extract_alleles_per_sample_table_default_schema(self):
default = (
inspect.signature(PMOExporter.extract_alleles_per_sample_table)
.parameters["jsonschema_fnp"]
.default
)
self.assert_default_schema(default)

def test_extract_allele_table_cli_default_schema(self):
self.assert_default_schema(
extract_allele_table.get_parser().get_default("jsonschema")
)

def test_validate_pmo_cli_default_schema_version(self):
self.assertEqual(
validate_pmo.get_parser_validate_pmo().get_default("jsonschema_version"),
__schema_version__,
)


if __name__ == "__main__":
unittest.main()
6 changes: 6 additions & 0 deletions tests/test_pmo_engine/test_pmo_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import os
import unittest

from pmotools import __schema_version__, __version__
from pmotools.pmo_engine.pmo_reader import PMOReader
from pmotools.pmo_engine.pmo_checker import PMOChecker, load_schema

Expand Down Expand Up @@ -121,6 +122,11 @@ def test_combine_multiple_pmos_v1_1_0(self):
)
checker = PMOChecker(pmo_jsonschema_data)
checker.validate_pmo_json(combined_pmo)
self.assertEqual(combined_pmo["pmo_header"]["pmo_version"], __schema_version__)
self.assertEqual(
combined_pmo["pmo_header"]["generation_method"]["program_version"],
__version__,
)
# check against expected
with open(
os.path.join(
Expand Down
2 changes: 1 addition & 1 deletion uv.lock

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

Loading