pyulib: ajouter l'argument nocopy=False à seqof() pour éviter des bugs subtils

This commit is contained in:
Jephté Clain 2017-02-08 00:36:16 +04:00
parent 11b87fdfd1
commit 27a2ab0c01
1 changed files with 7 additions and 3 deletions

View File

@ -249,13 +249,17 @@ def isseq(t):
"""Tester si t est une séquence (list ou tuple)
"""
return isinstance(t, list) or isinstance(t, tuple)
def seqof(seq, seq_if_None=None):
def seqof(seq, seq_if_None=None, nocopy=False):
"""Retourner une séquence.
Si seq est une séquence, retourner l'objet lui-même.
Si seq est une séquence, retourner une copie de l'objet si nocopy==False,
sinon l'objet lui-même.
Si seq==None et que seq_if_None!=None, retourner seq_if_None.
Sinon, retourner une liste ayant un seul élément, seq.
"""
if isseq(seq): return seq
if isseq(seq):
if nocopy: return seq
else: return seq[:]
elif seq is None and seq_if_None is not None:
if not isseq(seq_if_None): seq_if_None = [seq_if_None]
return seq_if_None