99import subprocess
1010import sys
1111import time
12+ import warnings
1213import webbrowser
1314from collections .abc import Iterable , Mapping , Sequence
1415from itertools import islice
@@ -724,9 +725,11 @@ def args_in_kwargs(args: Sequence[str], kwargs: dict[str, Any]) -> bool:
724725 )
725726
726727
728+ # TODO(PyGMT>=0.19.0): Remove the deprecate_parameter decorator.
727729def sequence_join (
728730 value : Any ,
729- separator : str = "/" ,
731+ sep : str = "/" ,
732+ separator : str | None = None ,
730733 size : int | Sequence [int ] | None = None ,
731734 ndim : int = 1 ,
732735 name : str | None = None ,
@@ -741,8 +744,14 @@ def sequence_join(
741744 ----------
742745 value
743746 The 1-D or 2-D sequence of values to join.
747+ sep
748+ The separator to join the values.
744749 separator
745750 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.
746755 size
747756 Expected size of the 1-D sequence. It can be either an integer or a sequence of
748757 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(
774783
775784 >>> sequence_join([1, 2, 3, 4])
776785 '1/2/3/4'
777- >>> sequence_join([1, 2, 3, 4], separator =",")
786+ >>> sequence_join([1, 2, 3, 4], sep =",")
778787 '1,2,3,4'
779- >>> sequence_join([1, 2, 3, 4], separator ="/", size=4)
788+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=4)
780789 '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])
782791 '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)
784793 '1/2/3/4'
785- >>> sequence_join([1, 2, 3, 4], separator ="/", size=2)
794+ >>> sequence_join([1, 2, 3, 4], sep ="/", size=2)
786795 Traceback (most recent call last):
787796 ...
788797 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")
790799 Traceback (most recent call last):
791800 ...
792801 pygmt.exceptions.GMTInvalidInput: Parameter 'parname': Expected ...
793802
794- >>> sequence_join([[1, 2], [3, 4]], separator ="/")
803+ >>> sequence_join([[1, 2], [3, 4]], sep ="/")
795804 Traceback (most recent call last):
796805 ...
797806 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)
799808 ['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)
801810 ['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)
803812 Traceback (most recent call last):
804813 ...
805814 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)
807816 ['1/2', '3/4']
817+ >>> sequence_join([1, 2, 3, 4], separator=",")
818+ '1,2,3,4'
808819 """
809820 # Return the original value if it is not a sequence (e.g., None, bool, or str).
810821 if not is_nonstr_iter (value ):
811822 return value
812823 # Now it must be a sequence.
813824
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+
814833 # Change size to a list to simplify the checks.
815834 size = [size ] if isinstance (size , int ) else size
816835 errmsg = {
@@ -829,7 +848,7 @@ def sequence_join(
829848 f"but got { len (value )} values."
830849 )
831850 raise GMTInvalidInput (msg )
832- return separator .join (str (v ) for v in value )
851+ return sep .join (str (v ) for v in value )
833852
834853 # Now it must be a 2-D sequence.
835854 if ndim == 1 :
@@ -838,4 +857,4 @@ def sequence_join(
838857 if size is not None and any (len (i ) not in size for i in value ):
839858 msg = f"{ errmsg ['name' ]} Expected a sequence of { errmsg ['sizes' ]} values."
840859 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