Skip to content

Commit

Permalink
add proper typechecking for nu & mu values
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinGirard committed Jan 25, 2025
1 parent 58865fb commit 715306b
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
13 changes: 13 additions & 0 deletions hoomd/data/typeconverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,19 @@ def nonnegative_real(number):
return float_number


def positive_int(number):
"""Ensures that a value is a positive integer"""
if isinstance(number, float) and not number.is_integer():
raise TypeConversionError(f"Expected integer, {number} has a non-zero decimal part")
try:
int_number = int(number)
except Exception as err:
raise TypeConversionError(f"{number} is not convertible to int.") from err
if int_number <= 0:
raise TypeConversionError("Expected a positive integer")
return int_number


def identity(value):
"""Return the given value."""
return value
Expand Down
4 changes: 2 additions & 2 deletions hoomd/md/pair/pair.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from hoomd.data.parameterdicts import ParameterDict, TypeParameterDict
from hoomd.data.typeparam import TypeParameter
import numpy as np
from hoomd.data.typeconverter import OnlyFrom, nonnegative_real, positive_real
from hoomd.data.typeconverter import OnlyFrom, nonnegative_real, positive_real, positive_int


class Pair(force.Force):
Expand Down Expand Up @@ -2099,7 +2099,7 @@ def __init__(self, nlist, default_r_cut=None, default_r_on=0.0, mode="none"):
"params",
"particle_types",
TypeParameterDict(
epsilon=float, sigma=float, R=float, mu=int, nu=int, len_keys=2
epsilon=float, sigma=float, R=float, mu=positive_int, nu=positive_int, len_keys=2
),
)

Expand Down

0 comments on commit 715306b

Please sign in to comment.