From 9a5c7e8dad2efd6e72e7043db7a11d3d8cfdfcd4 Mon Sep 17 00:00:00 2001 From: Laurent Perron Date: Fri, 21 Jul 2023 16:42:55 -0700 Subject: [PATCH] use python3.7+ typing in model_builder and cp_model --- ortools/linear_solver/python/model_builder.py | 12 ++++++------ ortools/sat/python/cp_model.py | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ortools/linear_solver/python/model_builder.py b/ortools/linear_solver/python/model_builder.py index c099242659b..d987f89224a 100644 --- a/ortools/linear_solver/python/model_builder.py +++ b/ortools/linear_solver/python/model_builder.py @@ -37,7 +37,7 @@ import math import numbers import typing -from typing import Callable, Mapping, Optional, Sequence, Union +from typing import Callable, Mapping, Optional, Sequence, Union, cast import numpy as np from numpy import typing as npt @@ -1017,8 +1017,8 @@ def new_var_series( if ( isinstance(is_integral, bool) and is_integral - and isinstance(lower_bounds, NumberT) - and isinstance(upper_bounds, NumberT) + and mbn.is_a_number(lower_bounds) + and mbn.is_a_number(upper_bounds) and math.isfinite(lower_bounds) and math.isfinite(upper_bounds) and math.ceil(lower_bounds) > math.floor(upper_bounds) @@ -1583,8 +1583,8 @@ def _as_flat_linear_expression(base_expr: LinearExprT) -> _LinearExpression: to_process.append((expr._right, coeff)) elif isinstance(expr, Variable): terms[expr] += coeff - elif isinstance(expr, NumberT): - offset += coeff * expr + elif mbn.is_a_number(expr): + offset += coeff * cast(NumberT, expr) elif isinstance(expr, _Product): to_process.append((expr._expression, coeff * expr._coefficient)) elif isinstance(expr, _LinearExpression): @@ -1680,7 +1680,7 @@ def _convert_to_series_and_validate_index( TypeError: If the type of `value_or_series` is not recognized. ValueError: If the index does not match. """ - if isinstance(value_or_series, (bool, NumberT)): + if mbn.is_a_number(value_or_series) or isinstance(value_or_series, bool): result = pd.Series(data=value_or_series, index=index) elif isinstance(value_or_series, pd.Series): if value_or_series.index.equals(index): diff --git a/ortools/sat/python/cp_model.py b/ortools/sat/python/cp_model.py index 0a30abe38d0..8fd54035c6c 100644 --- a/ortools/sat/python/cp_model.py +++ b/ortools/sat/python/cp_model.py @@ -1188,8 +1188,8 @@ def NewIntVarSeries( if not name.isidentifier(): raise ValueError("name={} is not a valid identifier".format(name)) if ( - isinstance(lower_bounds, IntegralT) - and isinstance(upper_bounds, IntegralT) + cmh.is_integral(lower_bounds) + and cmh.is_integral(upper_bounds) and lower_bounds > upper_bounds ): raise ValueError( @@ -2984,7 +2984,7 @@ def _ConvertToSeriesAndValidateIndex( TypeError: If the type of `value_or_series` is not recognized. ValueError: If the index does not match. """ - if isinstance(value_or_series, (bool, IntegralT)): + if cmh.is_integral(value_or_series) or isinstance(value_or_series, bool): result = pd.Series(data=value_or_series, index=index) elif isinstance(value_or_series, pd.Series): if value_or_series.index.equals(index):