9
9
import subprocess
10
10
import sys
11
11
import time
12
+ import warnings
12
13
import webbrowser
13
14
from collections .abc import Iterable , Mapping , Sequence
14
15
from itertools import islice
@@ -724,9 +725,11 @@ def args_in_kwargs(args: Sequence[str], kwargs: dict[str, Any]) -> bool:
724
725
)
725
726
726
727
728
+ # TODO(PyGMT>=0.19.0): Remove the deprecate_parameter decorator.
727
729
def sequence_join (
728
730
value : Any ,
729
- separator : str = "/" ,
731
+ sep : str = "/" ,
732
+ separator : str | None = None ,
730
733
size : int | Sequence [int ] | None = None ,
731
734
ndim : int = 1 ,
732
735
name : str | None = None ,
@@ -741,8 +744,14 @@ def sequence_join(
741
744
----------
742
745
value
743
746
The 1-D or 2-D sequence of values to join.
747
+ sep
748
+ The separator to join the values.
744
749
separator
745
750
The separator to join the values.
751
+
752
+ .. versionchanged:: v0.17.0
753
+
754
+ Deprecated and will be removed in v0.19.0. Use ``sep`` instead.
746
755
size
747
756
Expected size of the 1-D sequence. It can be either an integer or a sequence of
748
757
integers. If an integer, it is the expected size of the 1-D sequence. If it is a
@@ -774,43 +783,53 @@ def sequence_join(
774
783
775
784
>>> sequence_join([1, 2, 3, 4])
776
785
'1/2/3/4'
777
- >>> sequence_join([1, 2, 3, 4], separator =",")
786
+ >>> sequence_join([1, 2, 3, 4], sep =",")
778
787
'1,2,3,4'
779
- >>> sequence_join([1, 2, 3, 4], separator ="/", size=4)
788
+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=4)
780
789
'1/2/3/4'
781
- >>> sequence_join([1, 2, 3, 4], separator ="/", size=[2, 4])
790
+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=[2, 4])
782
791
'1/2/3/4'
783
- >>> sequence_join([1, 2, 3, 4], separator ="/", size=[2, 4], ndim=2)
792
+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=[2, 4], ndim=2)
784
793
'1/2/3/4'
785
- >>> sequence_join([1, 2, 3, 4], separator ="/", size=2)
794
+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=2)
786
795
Traceback (most recent call last):
787
796
...
788
797
pygmt.exceptions.GMTInvalidInput: Expected a sequence of 2 values, but got 4 values.
789
- >>> sequence_join([1, 2, 3, 4, 5], separator ="/", size=[2, 4], name="parname")
798
+ >>> sequence_join([1, 2, 3, 4, 5], sep ="/", size=[2, 4], name="parname")
790
799
Traceback (most recent call last):
791
800
...
792
801
pygmt.exceptions.GMTInvalidInput: Parameter 'parname': Expected ...
793
802
794
- >>> sequence_join([[1, 2], [3, 4]], separator ="/")
803
+ >>> sequence_join([[1, 2], [3, 4]], sep ="/")
795
804
Traceback (most recent call last):
796
805
...
797
806
pygmt.exceptions.GMTInvalidInput: Expected a 1-D ..., but a 2-D sequence is given.
798
- >>> sequence_join([[1, 2], [3, 4]], separator ="/", ndim=2)
807
+ >>> sequence_join([[1, 2], [3, 4]], sep ="/", ndim=2)
799
808
['1/2', '3/4']
800
- >>> sequence_join([[1, 2], [3, 4]], separator ="/", size=2, ndim=2)
809
+ >>> sequence_join([[1, 2], [3, 4]], sep ="/", size=2, ndim=2)
801
810
['1/2', '3/4']
802
- >>> sequence_join([[1, 2], [3, 4]], separator ="/", size=4, ndim=2)
811
+ >>> sequence_join([[1, 2], [3, 4]], sep ="/", size=4, ndim=2)
803
812
Traceback (most recent call last):
804
813
...
805
814
pygmt.exceptions.GMTInvalidInput: Expected a sequence of 4 values.
806
- >>> sequence_join([[1, 2], [3, 4]], separator ="/", size=[2, 4], ndim=2)
815
+ >>> sequence_join([[1, 2], [3, 4]], sep ="/", size=[2, 4], ndim=2)
807
816
['1/2', '3/4']
817
+ >>> sequence_join([1, 2, 3, 4], separator=",")
818
+ '1,2,3,4'
808
819
"""
809
820
# Return the original value if it is not a sequence (e.g., None, bool, or str).
810
821
if not is_nonstr_iter (value ):
811
822
return value
812
823
# Now it must be a sequence.
813
824
825
+ if separator is not None :
826
+ sep = separator # Deprecated, use sep instead.
827
+ msg = (
828
+ "Parameter 'separator' has been deprecated since v0.17.0 and will be "
829
+ "removed in v0.19.0. Please use 'sep' instead."
830
+ )
831
+ warnings .warn (msg , category = FutureWarning , stacklevel = 2 )
832
+
814
833
# Change size to a list to simplify the checks.
815
834
size = [size ] if isinstance (size , int ) else size
816
835
errmsg = {
@@ -829,7 +848,7 @@ def sequence_join(
829
848
f"but got { len (value )} values."
830
849
)
831
850
raise GMTInvalidInput (msg )
832
- return separator .join (str (v ) for v in value )
851
+ return sep .join (str (v ) for v in value )
833
852
834
853
# Now it must be a 2-D sequence.
835
854
if ndim == 1 :
@@ -838,4 +857,4 @@ def sequence_join(
838
857
if size is not None and any (len (i ) not in size for i in value ):
839
858
msg = f"{ errmsg ['name' ]} Expected a sequence of { errmsg ['sizes' ]} values."
840
859
raise GMTInvalidInput (msg )
841
- return [separator .join (str (j ) for j in sub ) for sub in value ]
860
+ return [sep .join (str (j ) for j in sub ) for sub in value ]
0 commit comments