aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py')
-rw-r--r--.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py b/.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py
new file mode 100644
index 00000000..fae22702
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/numpy/core/tests/test_argparse.py
@@ -0,0 +1,62 @@
+"""
+Tests for the private NumPy argument parsing functionality.
+They mainly exists to ensure good test coverage without having to try the
+weirder cases on actual numpy functions but test them in one place.
+
+The test function is defined in C to be equivalent to (errors may not always
+match exactly, and could be adjusted):
+
+ def func(arg1, /, arg2, *, arg3):
+ i = integer(arg1) # reproducing the 'i' parsing in Python.
+ return None
+"""
+
+import pytest
+
+import numpy as np
+from numpy.core._multiarray_tests import argparse_example_function as func
+
+
+def test_invalid_integers():
+ with pytest.raises(TypeError,
+ match="integer argument expected, got float"):
+ func(1.)
+ with pytest.raises(OverflowError):
+ func(2**100)
+
+
+def test_missing_arguments():
+ with pytest.raises(TypeError,
+ match="missing required positional argument 0"):
+ func()
+ with pytest.raises(TypeError,
+ match="missing required positional argument 0"):
+ func(arg2=1, arg3=4)
+ with pytest.raises(TypeError,
+ match=r"missing required argument \'arg2\' \(pos 1\)"):
+ func(1, arg3=5)
+
+
+def test_too_many_positional():
+ # the second argument is positional but can be passed as keyword.
+ with pytest.raises(TypeError,
+ match="takes from 2 to 3 positional arguments but 4 were given"):
+ func(1, 2, 3, 4)
+
+
+def test_multiple_values():
+ with pytest.raises(TypeError,
+ match=r"given by name \('arg2'\) and position \(position 1\)"):
+ func(1, 2, arg2=3)
+
+
+def test_string_fallbacks():
+ # We can (currently?) use numpy strings to test the "slow" fallbacks
+ # that should normally not be taken due to string interning.
+ arg2 = np.str_("arg2")
+ missing_arg = np.str_("missing_arg")
+ func(1, **{arg2: 3})
+ with pytest.raises(TypeError,
+ match="got an unexpected keyword argument 'missing_arg'"):
+ func(2, **{missing_arg: 3})
+