$ tox -e py312
.pkg: _optional_hooks> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: get_requires_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: prepare_metadata_for_build_wheel> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
.pkg: build_sdist> python /usr/lib/python3.12/site-packages/pyproject_api/_backend.py True setuptools.build_meta __legacy__
py312: install_package> python -I -m pip install --force-reinstall --no-deps /tmp/patsy/.tox/.tmp/package/2/patsy-0.5.6.tar.gz
py312: commands[0]> pytest -vv --cov=patsy --cov-config=/tmp/patsy/.coveragerc --cov-report=term-missing --cov-report=xml --cov-report=html:/tmp/patsy/.tox/coverage/py312
========================================================= test session starts =========================================================
platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /tmp/patsy/.tox/py312/bin/python
cachedir: .tox/py312/.pytest_cache
rootdir: /tmp/patsy
configfile: setup.cfg
testpaths: patsy
plugins: cov-5.0.0
collected 148 items
patsy/build.py::test__max_allowed_dim PASSED [ 0%]
patsy/build.py::test__eval_factor_numerical PASSED [ 1%]
patsy/build.py::test__eval_factor_categorical PASSED [ 2%]
patsy/build.py::test__column_combinations PASSED [ 2%]
patsy/build.py::test__subterm_column_names_iter_and__build_subterm PASSED [ 3%]
patsy/build.py::test__factors_memorize PASSED [ 4%]
patsy/build.py::test__examine_factor_types PASSED [ 4%]
patsy/builtins.py::test_I PASSED [ 5%]
patsy/builtins.py::test_Q PASSED [ 6%]
patsy/categorical.py::test_C PASSED [ 6%]
patsy/categorical.py::test_guess_categorical PASSED [ 7%]
patsy/categorical.py::test_CategoricalSniffer PASSED [ 8%]
patsy/categorical.py::test_categorical_to_int PASSED [ 8%]
patsy/constraint.py::test_LinearConstraint PASSED [ 9%]
patsy/constraint.py::test_LinearConstraint_combine PASSED [ 10%]
patsy/constraint.py::test__tokenize_constraint PASSED [ 10%]
patsy/constraint.py::test_linear_constraint PASSED [ 11%]
patsy/constraint.py::test_eval_errors PASSED [ 12%]
patsy/contrasts.py::test_ContrastMatrix PASSED [ 12%]
patsy/contrasts.py::test__obj_to_readable_str PASSED [ 13%]
patsy/contrasts.py::test__name_levels PASSED [ 14%]
patsy/contrasts.py::test__get_level PASSED [ 14%]
patsy/contrasts.py::test_Treatment PASSED [ 15%]
patsy/contrasts.py::test_Poly PASSED [ 16%]
patsy/contrasts.py::test_Sum PASSED [ 16%]
patsy/contrasts.py::test_Helmert PASSED [ 17%]
patsy/contrasts.py::test_diff PASSED [ 18%]
patsy/desc.py::test_Term PASSED [ 18%]
patsy/desc.py::test_ModelDesc PASSED [ 19%]
patsy/desc.py::test_ModelDesc_from_formula PASSED [ 20%]
patsy/desc.py::test_eval_formula PASSED [ 20%]
patsy/desc.py::test_eval_formula_error_reporting PASSED [ 21%]
patsy/desc.py::test_formula_factor_origin PASSED [ 22%]
patsy/design_info.py::test_FactorInfo PASSED [ 22%]
patsy/design_info.py::test_SubtermInfo PASSED [ 23%]
patsy/design_info.py::test_DesignInfo PASSED [ 24%]
patsy/design_info.py::test_DesignInfo_from_array PASSED [ 25%]
patsy/design_info.py::test_DesignInfo_linear_constraint PASSED [ 25%]
patsy/design_info.py::test_DesignInfo_deprecated_attributes PASSED [ 26%]
patsy/design_info.py::test__format_float_column PASSED [ 27%]
patsy/design_info.py::test_design_matrix PASSED [ 27%]
patsy/eval.py::test_VarLookupDict PASSED [ 28%]
patsy/eval.py::test_ast_names PASSED [ 29%]
patsy/eval.py::test_ast_names_disallowed_nodes PASSED [ 29%]
patsy/eval.py::test_EvalEnvironment_capture_namespace PASSED [ 30%]
patsy/eval.py::test_EvalEnvironment_capture_flags PASSED [ 31%]
patsy/eval.py::test_EvalEnvironment_eval_namespace PASSED [ 31%]
patsy/eval.py::test_EvalEnvironment_eval_flags PASSED [ 32%]
patsy/eval.py::test_EvalEnvironment_subset PASSED [ 33%]
patsy/eval.py::test_EvalEnvironment_eq PASSED [ 33%]
patsy/eval.py::test_EvalFactor_basics PASSED [ 34%]
patsy/eval.py::test_EvalFactor_memorize_passes_needed PASSED [ 35%]
patsy/eval.py::test_EvalFactor_end_to_end PASSED [ 35%]
patsy/eval.py::test_annotated_tokens PASSED [ 36%]
patsy/eval.py::test_replace_bare_funcalls PASSED [ 37%]
patsy/eval.py::test_capture_obj_method_calls PASSED [ 37%]
patsy/infix_parser.py::test_infix_parse PASSED [ 38%]
patsy/mgcv_cubic_splines.py::test__map_cyclic PASSED [ 39%]
patsy/mgcv_cubic_splines.py::test__map_cyclic_errors PASSED [ 39%]
patsy/mgcv_cubic_splines.py::test__row_tensor_product_errors PASSED [ 40%]
patsy/mgcv_cubic_splines.py::test__row_tensor_product PASSED [ 41%]
patsy/mgcv_cubic_splines.py::test__get_all_sorted_knots PASSED [ 41%]
patsy/mgcv_cubic_splines.py::test_crs_errors PASSED [ 42%]
patsy/mgcv_cubic_splines.py::test_crs_compat PASSED [ 43%]
patsy/mgcv_cubic_splines.py::test_crs_with_specific_constraint PASSED [ 43%]
patsy/mgcv_cubic_splines.py::test_te_errors PASSED [ 44%]
patsy/mgcv_cubic_splines.py::test_te_1smooth PASSED [ 45%]
patsy/mgcv_cubic_splines.py::test_te_2smooths PASSED [ 45%]
patsy/mgcv_cubic_splines.py::test_te_3smooths PASSED [ 46%]
patsy/missing.py::test_NAAction_basic PASSED [ 47%]
patsy/missing.py::test_NAAction_NA_types_numerical PASSED [ 47%]
patsy/missing.py::test_NAAction_NA_types_categorical PASSED [ 48%]
patsy/missing.py::test_NAAction_drop PASSED [ 49%]
patsy/missing.py::test_NAAction_raise PASSED [ 50%]
patsy/origin.py::test_Origin PASSED [ 50%]
patsy/parse_formula.py::test__tokenize_formula PASSED [ 51%]
patsy/parse_formula.py::test_parse_formula PASSED [ 52%]
patsy/parse_formula.py::test_parse_origin PASSED [ 52%]
patsy/parse_formula.py::test_parse_errors PASSED [ 53%]
patsy/parse_formula.py::test_parse_extra_op PASSED [ 54%]
patsy/redundancy.py::test__Subterm PASSED [ 54%]
patsy/redundancy.py::test__subsets_sorted PASSED [ 55%]
patsy/redundancy.py::test__simplify_subterms PASSED [ 56%]
patsy/redundancy.py::test_pick_contrasts_for_term PASSED [ 56%]
patsy/splines.py::test__R_compat_quantile PASSED [ 57%]
patsy/splines.py::test_bs_compat PASSED [ 58%]
patsy/splines.py::test_bs_0degree PASSED [ 58%]
patsy/splines.py::test_bs_errors PASSED [ 59%]
patsy/test_build.py::test_assert_full_rank PASSED [ 60%]
patsy/test_build.py::test_simple PASSED [ 60%]
patsy/test_build.py::test_R_bugs PASSED [ 61%]
patsy/test_build.py::test_redundancy_thoroughly PASSED [ 62%]
patsy/test_build.py::test_data_types PASSED [ 62%]
patsy/test_build.py::test_build_design_matrices_dtype PASSED [ 63%]
patsy/test_build.py::test_return_type PASSED [ 64%]
patsy/test_build.py::test_NA_action PASSED [ 64%]
patsy/test_build.py::test_NA_drop_preserves_levels PASSED [ 65%]
patsy/test_build.py::test_return_type_pandas PASSED [ 66%]
patsy/test_build.py::test_data_mismatch PASSED [ 66%]
patsy/test_build.py::test_data_independent_builder PASSED [ 67%]
patsy/test_build.py::test_same_factor_in_two_matrices PASSED [ 68%]
patsy/test_build.py::test_eval_env_type_builder PASSED [ 68%]
patsy/test_build.py::test_categorical PASSED [ 69%]
patsy/test_build.py::test_contrast PASSED [ 70%]
patsy/test_build.py::test_DesignInfo_subset PASSED [ 70%]
patsy/test_highlevel.py::test_formula_likes FAILED [ 71%]
patsy/test_highlevel.py::test_return_pandas PASSED [ 72%]
patsy/test_highlevel.py::test_term_info PASSED [ 72%]
patsy/test_highlevel.py::test_data_types PASSED [ 73%]
patsy/test_highlevel.py::test_categorical PASSED [ 74%]
patsy/test_highlevel.py::test_builtins FAILED [ 75%]
patsy/test_highlevel.py::test_incremental FAILED [ 75%]
patsy/test_highlevel.py::test_env_transform PASSED [ 76%]
patsy/test_highlevel.py::test_term_order PASSED [ 77%]
patsy/test_highlevel.py::test_future PASSED [ 77%]
patsy/test_highlevel.py::test_multicolumn PASSED [ 78%]
patsy/test_highlevel.py::test_dmatrix_dmatrices_no_data PASSED [ 79%]
patsy/test_highlevel.py::test_designinfo_describe PASSED [ 79%]
patsy/test_highlevel.py::test_evalfactor_reraise PASSED [ 80%]
patsy/test_highlevel.py::test_dmatrix_NA_action PASSED [ 81%]
patsy/test_highlevel.py::test_0d_data PASSED [ 81%]
patsy/test_highlevel.py::test_env_not_saved_in_builder PASSED [ 82%]
patsy/test_highlevel.py::test_C_and_pandas_categorical PASSED [ 83%]
patsy/test_regressions.py::test_issue_11 PASSED [ 83%]
patsy/test_state.py::test_Center FAILED [ 84%]
patsy/test_state.py::test_stateful_transform_wrapper FAILED [ 85%]
patsy/test_state.py::test_Standardize PASSED [ 85%]
patsy/tokens.py::test_python_tokenize PASSED [ 86%]
patsy/tokens.py::test_pretty_untokenize_and_normalize_token_spacing PASSED [ 87%]
patsy/user_util.py::test_balanced PASSED [ 87%]
patsy/user_util.py::test_demo_data PASSED [ 88%]
patsy/user_util.py::test_LookupFactor PASSED [ 89%]
patsy/util.py::test_asarray_or_pandas FAILED [ 89%]
patsy/util.py::test_atleast_2d_column_default PASSED [ 90%]
patsy/util.py::test_pandas_friendly_reshape PASSED [ 91%]
patsy/util.py::test_to_uniqueify_list PASSED [ 91%]
patsy/util.py::test_wide_dtype_for_and_widen PASSED [ 92%]
patsy/util.py::test_PushbackAdapter PASSED [ 93%]
patsy/util.py::test_repr_pretty PASSED [ 93%]
patsy/util.py::test_SortAnythingKey PASSED [ 94%]
patsy/util.py::test_safe_scalar_isnan PASSED [ 95%]
patsy/util.py::test_safe_isnan PASSED [ 95%]
patsy/util.py::test_iterable PASSED [ 96%]
patsy/util.py::test_pandas_Categorical_from_codes PASSED [ 97%]
patsy/util.py::test_pandas_Categorical_accessors PASSED [ 97%]
patsy/util.py::test_safe_is_pandas_categorical PASSED [ 98%]
patsy/util.py::test_safe_issubdtype PASSED [ 99%]
patsy/util.py::test_safe_string_eq PASSED [100%]
============================================================== FAILURES ===============================================================
_________________________________________________________ test_formula_likes __________________________________________________________
def test_formula_likes():
# Plain array-like, rhs only
> t([[1, 2, 3], [4, 5, 6]], {}, 0,
False,
[[1, 2, 3], [4, 5, 6]], ["x0", "x1", "x2"])
patsy/test_highlevel.py:150:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/test_highlevel.py:104: in t
rhs = f(formula_like, data, depth)
patsy/highlevel.py:290: in dmatrix
(lhs, rhs) = _do_highlevel_design(formula_like, data, eval_env,
patsy/highlevel.py:181: in _do_highlevel_design
(lhs, rhs) = (None, asarray_or_pandas(formula_like, subok=True))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = [[1, 2, 3], [4, 5, 6]], copy = False, dtype = None, subok = True
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
____________________________________________________________ test_builtins ____________________________________________________________
msg = 'Error evaluating factor', origin = EvalFactor('center(x)')
f = <bound method EvalEnvironment.eval of <patsy.eval.EvalEnvironment object at 0x7f14286b5fd0>>
args = ('_patsy_stobj0__center__.transform(x)',)
kwargs = {'inner_namespace': VarLookupDict([{}, {'x': [1, 2, 3], 'y': [4, 5, 6], 'a b c': [10, 20, 30]}, {'_patsy_stobj0__center__': <patsy.state.Center object at 0x7f14286b4a40>}])}
new_exc = PatsyError('Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.\nIf using ...r more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.')
def call_and_wrap_exc(msg, origin, f, *args, **kwargs):
try:
> return f(*args, **kwargs)
patsy/compat.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/eval.py:169: in eval
return eval(code, {}, VarLookupDict([inner_namespace]
patsy/state.py:106: in transform
x = asarray_or_pandas(x)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = [1, 2, 3], copy = False, dtype = None, subok = False
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
The above exception was the direct cause of the following exception:
def test_builtins():
data = {"x": [1, 2, 3],
"y": [4, 5, 6],
"a b c": [10, 20, 30]}
t("0 + I(x + y)", data, 0,
True,
[[1], [2], [3], [4], [5], [6]], ["I(x + y)"])
t("Q('a b c')", data, 0,
True,
[[1, 10], [1, 20], [1, 30]], ["Intercept", "Q('a b c')"])
> t("center(x)", data, 0,
True,
[[1, -1], [1, 0], [1, 1]], ["Intercept", "center(x)"])
patsy/test_highlevel.py:498:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/test_highlevel.py:83: in t
builder = incr_dbuilder(formula_like, data_iter_maker, depth)
patsy/highlevel.py:111: in incr_dbuilder
design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,
patsy/highlevel.py:66: in _try_incr_builders
return design_matrix_builders([formula_like.lhs_termlist,
patsy/build.py:693: in design_matrix_builders
cat_levels_contrasts) = _examine_factor_types(all_factors,
patsy/build.py:443: in _examine_factor_types
value = factor.eval(factor_states[factor], data)
patsy/eval.py:568: in eval
return self._eval(memorize_state["eval_code"],
patsy/eval.py:551: in _eval
return call_and_wrap_exc("Error evaluating factor",
patsy/compat.py:43: in call_and_wrap_exc
exec("raise new_exc from e")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E patsy.PatsyError: Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
E center(x)
E ^^^^^^^^^
<string>:1: PatsyError
__________________________________________________________ test_incremental ___________________________________________________________
msg = 'Error evaluating factor', origin = EvalFactor('center(np.sin(center(x)))')
f = <bound method EvalEnvironment.eval of <patsy.eval.EvalEnvironment object at 0x7f14286ba8a0>>
args = ('_patsy_stobj0__center__.memorize_chunk(np.sin(_patsy_stobj1__center__.transform(x)))',)
kwargs = {'inner_namespace': VarLookupDict([{}, {'a': ['a2', 'a2', 'a2'], 'x': [1, 2, 3]}, {'_patsy_stobj0__center__': <patsy.state.Center object at 0x7f14286b8f50>, '_patsy_stobj1__center__': <patsy.state.Center object at 0x7f14286b9d00>}])}
new_exc = PatsyError('Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.\nIf using ...r more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.')
def call_and_wrap_exc(msg, origin, f, *args, **kwargs):
try:
> return f(*args, **kwargs)
patsy/compat.py:36:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/eval.py:169: in eval
return eval(code, {}, VarLookupDict([inner_namespace]
patsy/state.py:106: in transform
x = asarray_or_pandas(x)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = [1, 2, 3], copy = False, dtype = None, subok = False
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
The above exception was the direct cause of the following exception:
def test_incremental():
# incr_dbuilder(s)
# stateful transformations
datas = [
{"a": ["a2", "a2", "a2"],
"x": [1, 2, 3]},
{"a": ["a2", "a2", "a1"],
"x": [4, 5, 6]},
]
x = np.asarray([1, 2, 3, 4, 5, 6])
sin_center_x = np.sin(x - np.mean(x))
x_col = sin_center_x - np.mean(sin_center_x)
def data_iter_maker():
return iter(datas)
> builders = incr_dbuilders("1 ~ a + center(np.sin(center(x)))",
data_iter_maker)
patsy/test_highlevel.py:516:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/highlevel.py:129: in incr_dbuilders
design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,
patsy/highlevel.py:66: in _try_incr_builders
return design_matrix_builders([formula_like.lhs_termlist,
patsy/build.py:689: in design_matrix_builders
factor_states = _factors_memorize(all_factors, data_iter_maker, eval_env)
patsy/build.py:368: in _factors_memorize
factor.memorize_chunk(state, which_pass, data)
patsy/eval.py:559: in memorize_chunk
self._eval(state["memorize_code"][obj_name],
patsy/eval.py:551: in _eval
return call_and_wrap_exc("Error evaluating factor",
patsy/compat.py:43: in call_and_wrap_exc
exec("raise new_exc from e")
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> ???
E patsy.PatsyError: Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
E 1 ~ a + center(np.sin(center(x)))
E ^^^^^^^^^^^^^^^^^^^^^^^^^
<string>:1: PatsyError
_____________________________________________________________ test_Center _____________________________________________________________
def test_Center():
> check_stateful(Center, True, [1, 2, 3], [-1, 0, 1])
patsy/test_state.py:117:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/test_state.py:81: in check_stateful
output_chunk = t.transform(input_chunk, *args, **kwargs)
patsy/state.py:106: in transform
x = asarray_or_pandas(x)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = np.int64(1), copy = False, dtype = None, subok = False
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
-------------------------------------------------------- Captured stdout call ---------------------------------------------------------
[array([1, 2, 3])]
[1 2 3]
___________________________________________________ test_stateful_transform_wrapper ___________________________________________________
def test_stateful_transform_wrapper():
> assert np.allclose(center([1, 2, 3]), [-1, 0, 1])
patsy/test_state.py:124:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
patsy/state.py:48: in stateful_transform_wrapper
return transform.transform(*args, **kwargs)
patsy/state.py:106: in transform
x = asarray_or_pandas(x)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = [1, 2, 3], copy = False, dtype = None, subok = False
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
_______________________________________________________ test_asarray_or_pandas ________________________________________________________
def test_asarray_or_pandas():
import warnings
> assert type(asarray_or_pandas([1, 2, 3])) is np.ndarray
patsy/util.py:72:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
a = [1, 2, 3], copy = False, dtype = None, subok = False
def asarray_or_pandas(a, copy=False, dtype=None, subok=False):
if have_pandas:
if isinstance(a, (pandas.Series, pandas.DataFrame)):
# The .name attribute on Series is discarded when passing through
# the constructor:
# https://github.com/pydata/pandas/issues/1578
extra_args = {}
if hasattr(a, "name"):
extra_args["name"] = a.name
return a.__class__(a, copy=copy, dtype=dtype, **extra_args)
> return np.array(a, copy=copy, dtype=dtype, subok=subok)
E ValueError: Unable to avoid copy while creating an array as requested.
E If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
E For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
patsy/util.py:67: ValueError
---------- coverage: platform linux, python 3.12.3-final-0 -----------
Name Stmts Miss Branch BrPart Cover Missing
----------------------------------------------------------------------------
patsy/__init__.py 58 0 12 2 97.1% 15->20, 58->exit
patsy/build.py 314 16 168 10 93.8% 30, 683->685, 791->795, 869, 878->exit, 880-881, 896, 916-920, 926, 954-960
patsy/builtins.py 20 0 0 0 100.0%
patsy/categorical.py 115 11 58 6 87.9% 52, 127, 194-195, 313-319, 338-339, 368
patsy/compat.py 18 4 6 2 66.7% 29, 48-50
patsy/compat_ordereddict.py 9 1 0 0 88.9% 15
patsy/constraint.py 198 4 68 0 98.5% 15-16, 425-426
patsy/contrasts.py 163 4 36 1 97.5% 78-81
patsy/desc.py 205 2 56 2 98.5% 397, 407
patsy/design_info.py 322 2 172 2 99.2% 688, 1134
patsy/eval.py 236 1 72 2 99.0% 106->109, 501
patsy/highlevel.py 103 48 56 10 48.4% 28, 42, 44-46, 52-55, 116, 133-135, 157, 160, 173-177, 189-223, 293
patsy/infix_parser.py 140 2 54 0 99.0% 45, 95
patsy/mgcv_cubic_splines.py 282 4 118 4 97.5% 17, 683-685, 713->716, 743->746
patsy/missing.py 52 0 26 0 100.0%
patsy/origin.py 36 2 10 0 95.7% 85, 88
patsy/parse_formula.py 92 1 38 1 98.5% 142
patsy/redundancy.py 91 2 28 0 98.3% 67, 105
patsy/splines.py 100 4 48 2 94.6% 16, 243-245
patsy/state.py 65 1 14 1 97.5% 114
patsy/test_build.py 45 2 8 2 92.5% 25, 30
patsy/test_highlevel.py 28 9 4 0 59.4% 29, 59-62, 65-68
patsy/test_regressions.py 1 0 0 0 100.0%
patsy/test_splines_bs_data.py 4 0 0 0 100.0%
patsy/test_splines_crs_data.py 4 0 0 0 100.0%
patsy/test_state.py 59 16 32 4 73.6% 42-63, 86-87, 102, 111
patsy/tokens.py 78 1 36 1 98.2% 39
patsy/user_util.py 69 0 22 0 100.0%
patsy/util.py 224 49 86 11 69.0% 37, 46-51, 59-66, 158-161, 238-248, 296->295, 302->301, 446-447, 529, 612-620, 634-639, 646-651, 669, 675-679, 706
patsy/version.py 1 0 0 0 100.0%
----------------------------------------------------------------------------
TOTAL 3132 186 1228 63 92.4%
Coverage HTML written to dir /tmp/patsy/.tox/coverage/py312
Coverage XML written to file coverage.xml
======================================================= short test summary info =======================================================
FAILED patsy/test_highlevel.py::test_formula_likes - ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
FAILED patsy/test_highlevel.py::test_builtins - patsy.PatsyError: Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
center(x)
^^^^^^^^^
FAILED patsy/test_highlevel.py::test_incremental - patsy.PatsyError: Error evaluating factor: ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
1 ~ a + center(np.sin(center(x)))
^^^^^^^^^^^^^^^^^^^^^^^^^
FAILED patsy/test_state.py::test_Center - ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
FAILED patsy/test_state.py::test_stateful_transform_wrapper - ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
FAILED patsy/util.py::test_asarray_or_pandas - ValueError: Unable to avoid copy while creating an array as requested.
If using `np.array(obj, copy=False)` replace it with `np.asarray(obj)` to allow a copy when needed (no behavior change in NumPy 1.x).
For more details, see https://numpy.org/devdocs/numpy_2_0_migration_guide.html#adapting-to-changes-in-the-copy-keyword.
============================================== 6 failed, 142 passed in 92.74s (0:01:32) ===============================================
py312: exit 1 (93.68 seconds) /tmp/patsy> pytest -vv --cov=patsy --cov-config=/tmp/patsy/.coveragerc --cov-report=term-missing --cov-report=xml --cov-report=html:/tmp/patsy/.tox/coverage/py312 pid=193436
py312: FAIL code 1 (97.18=setup[3.49]+cmd[93.68] seconds)
evaluation failed :( (97.26 seconds)
After upgrading to NumPy 2.0.0, 6 tests fail:
This is with 8546450 (v0.5.6).