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
4 changes: 2 additions & 2 deletions easyDataverse/datasettype.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from pydantic import BaseModel, Field
import httpx
from pyDataverse.api import NativeApi
from easyDataverse.utils import extract_major_minor


class DatasetType(BaseModel):
Expand Down Expand Up @@ -60,5 +61,4 @@ def _get_version(native_api: NativeApi) -> tuple[int, int]:
response = native_api.get_info_version()
response.raise_for_status()
version = response.json()["data"]["version"]
major, minor = version.split(".", 1)
return int(major), int(minor)
return extract_major_minor(version)
14 changes: 2 additions & 12 deletions easyDataverse/dataverse.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import httpx
from easyDataverse.datasettype import DatasetType
from easyDataverse.license import CustomLicense, License
from easyDataverse.utils import extract_major_minor
from rich.panel import Panel
from rich.progress import Progress, SpinnerColumn, TextColumn
from anytree import Node, findall_by_attr
Expand Down Expand Up @@ -248,7 +249,7 @@ def _version_is_compliant(self) -> bool:
)

version = response.json()["data"]["version"]
major, minor = self._extract_major_minor(version)
major, minor = extract_major_minor(version)

if int(major) >= 6:
return True
Expand All @@ -257,17 +258,6 @@ def _version_is_compliant(self) -> bool:

return False

@staticmethod
def _extract_major_minor(version: str) -> Tuple[int, int]:
"""Extracts the major and minor version numbers from a Dataverse version string."""
try:
major, minor, *_ = version.split(".")
major = "".join(filter(str.isdigit, major))
minor = "".join(filter(str.isdigit, minor))
return int(major), int(minor)
except ValueError:
raise ValueError(f"Version '{version}' is not a valid Dataverse version.")

@staticmethod
def _check_version(major: int, minor: int) -> bool:
"""Checks if the version is compliant."""
Expand Down
15 changes: 15 additions & 0 deletions easyDataverse/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,21 @@
import yaml
from typing import Tuple


class YAMLDumper(yaml.Dumper):
def increase_indent(self, flow=False, indentless=False):
return super(YAMLDumper, self).increase_indent(flow, False)

def extract_major_minor(version: str) -> Tuple[int, int]:
"""Extracts the major and minor version numbers from a Dataverse version string.

Args:
version: A string representing the Dataverse version, e.g., "6.4.0" or "v6.4.0".
"""
try:
major, minor, *_ = version.split(".")
major = "".join(filter(str.isdigit, major))
minor = "".join(filter(str.isdigit, minor))
return int(major), int(minor)
except ValueError:
raise ValueError(f"Version '{version}' is not a valid Dataverse version.")
7 changes: 4 additions & 3 deletions tests/unit/test_dataverse.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pytest

from easyDataverse.dataverse import Dataverse
from easyDataverse.utils import extract_major_minor


class TestDataverse:
Expand Down Expand Up @@ -37,14 +38,14 @@ def test_valid_versions(self):
]

for version in cases:
major, minor = Dataverse._extract_major_minor(version)
major, minor = extract_major_minor(version)
assert Dataverse._check_version(major, minor)

@pytest.mark.unit
def test_invalid_version(self):
"""Test that an invalid version raises a ValueError"""
with pytest.raises(ValueError):
Dataverse._extract_major_minor("not a version")
extract_major_minor("not a version")

@pytest.mark.unit
def test_unsupported_version(self):
Expand All @@ -56,5 +57,5 @@ def test_unsupported_version(self):
"5.11",
]
for version in cases:
major, minor = Dataverse._extract_major_minor(version)
major, minor = extract_major_minor(version)
assert not Dataverse._check_version(major, minor)