Skip to content

Commit 49fa01a

Browse files
committed
Remove the _parse_sequence function from grdclip
1 parent 1f212a4 commit 49fa01a

File tree

1 file changed

+5
-91
lines changed

1 file changed

+5
-91
lines changed

pygmt/src/grdclip.py

Lines changed: 5 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -12,100 +12,14 @@
1212
build_arg_list,
1313
deprecate_parameter,
1414
fmt_docstring,
15-
is_nonstr_iter,
1615
kwargs_to_strings,
16+
sequence_join,
1717
use_alias,
1818
)
1919

2020
__doctest_skip__ = ["grdclip"]
2121

2222

23-
def _parse_sequence(name, value, separator="/", size=2, ndim=1):
24-
"""
25-
Parse a 1-D or 2-D sequence of values and join them by a separator.
26-
27-
Parameters
28-
----------
29-
name
30-
The parameter name.
31-
value
32-
The 1-D or 2-D sequence of values to parse.
33-
separator
34-
The separator to join the values.
35-
size
36-
The number of values in the sequence.
37-
ndim
38-
The expected maximum number of dimensions of the sequence.
39-
40-
Returns
41-
-------
42-
str
43-
The parsed sequence.
44-
45-
Examples
46-
--------
47-
>>> _parse_sequence("above_or_below", [1000, 0], size=2, ndim=1)
48-
'1000/0'
49-
>>> _parse_sequence("between", [1000, 1500, 10000], size=3, ndim=2)
50-
'1000/1500/10000'
51-
>>> _parse_sequence("between", [[1000, 1500, 10000]], size=3, ndim=2)
52-
['1000/1500/10000']
53-
>>> _parse_sequence(
54-
... "between", [[1000, 1500, 10000], [1500, 2000, 20000]], size=3, ndim=2
55-
... )
56-
['1000/1500/10000', '1500/2000/20000']
57-
>>> _parse_sequence("replace", [1000, 0], size=2, ndim=2)
58-
'1000/0'
59-
>>> _parse_sequence("replace", [[1000, 0]], size=2, ndim=2)
60-
['1000/0']
61-
>>> _parse_sequence("replace", [[1000, 0], [1500, 10000]], size=2, ndim=2)
62-
['1000/0', '1500/10000']
63-
>>> _parse_sequence("any", "1000/100")
64-
'1000/100'
65-
>>> _parse_sequence("any", None)
66-
>>> _parse_sequence("any", [])
67-
[]
68-
>>> _parse_sequence("above_or_below", [[100, 1000], [1500, 2000]], size=2, ndim=1)
69-
Traceback (most recent call last):
70-
...
71-
pygmt.exceptions.GMTInvalidInput: Parameter ... must be a 1-D sequence...
72-
>>> _parse_sequence("above_or_below", [100, 200, 300], size=2, ndim=1)
73-
Traceback (most recent call last):
74-
...
75-
pygmt.exceptions.GMTInvalidInput: Parameter ... must be a 1-D sequence ...
76-
>>> _parse_sequence("between", [[100, 200, 300], [500, 600]], size=3, ndim=2)
77-
Traceback (most recent call last):
78-
...
79-
pygmt.exceptions.GMTInvalidInput: Parameter ... must be a 2-D sequence with ...
80-
"""
81-
# Return the value as is if not a sequence (e.g., str or None) or empty.
82-
if not is_nonstr_iter(value) or len(value) == 0:
83-
return value
84-
85-
# 1-D sequence
86-
if not is_nonstr_iter(value[0]):
87-
if len(value) != size:
88-
msg = (
89-
f"Parameter '{name}' must be a 1-D sequence of {size} values, "
90-
f"but got {len(value)} values."
91-
)
92-
raise GMTInvalidInput(msg)
93-
return separator.join(str(i) for i in value)
94-
95-
# 2-D sequence
96-
if ndim == 1:
97-
msg = f"Parameter '{name}' must be a 1-D sequence, not a 2-D sequence."
98-
raise GMTInvalidInput(msg)
99-
100-
if any(len(i) != size for i in value):
101-
msg = (
102-
f"Parameter '{name}' must be a 2-D sequence with each sub-sequence "
103-
f"having {size} values."
104-
)
105-
raise GMTInvalidInput(msg)
106-
return [separator.join(str(j) for j in value[i]) for i in range(len(value))]
107-
108-
10923
# TODO(PyGMT>=0.19.0): Remove the deprecated "new" parameter.
11024
@fmt_docstring
11125
@deprecate_parameter("new", "replace", "v0.15.0", remove_version="v0.19.0")
@@ -198,10 +112,10 @@ def grdclip(
198112
raise GMTInvalidInput(msg)
199113

200114
# Parse the -S option.
201-
kwargs["Sa"] = _parse_sequence("above", above, size=2, ndim=1)
202-
kwargs["Sb"] = _parse_sequence("below", below, size=2, ndim=1)
203-
kwargs["Si"] = _parse_sequence("between", between, size=3, ndim=2)
204-
kwargs["Sr"] = _parse_sequence("replace", replace, size=2, ndim=2)
115+
kwargs["Sa"] = sequence_join(above, size=2, name="above")
116+
kwargs["Sb"] = sequence_join(below, size=2, name="below")
117+
kwargs["Si"] = sequence_join(between, size=3, ndim=2, name="between")
118+
kwargs["Sr"] = sequence_join(replace, size=2, ndim=2, name="replace")
205119

206120
with Session() as lib:
207121
with (

0 commit comments

Comments
 (0)