Spade

Mini Shell

Directory:~$ /proc/self/root/lib64/python2.7/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/lib64/python2.7/sets.pyc

�
q�fc@s�dZddlmZmZdddgZddlZejdedd	�defd
��YZ	de	fd��YZ
de	fd��YZd
e	fd��YZdS(s�Classes to represent arbitrary
sets (including sets of sets).

This module implements sets using dictionaries whose values are
ignored.  The usual operations (union, intersection, deletion, etc.)
are provided as both methods and operators.

Important: sets are not sequences!  While they support 'x in s',
'len(s)', and 'for x in s', none of those operations
are unique for
sequences; for example, mappings support all three as well.  The
characteristic operation for sequences is subscripting with small
integers: s[i], for i in range(len(s)).  Sets don't support
subscripting at all.  Also, sequences allow multiple occurrences and
their elements have a definite order; sets on the other hand don't
record multiple occurrences and don't remember the order of element
insertion (which is why they don't support s[i]).

The following classes are provided:

BaseSet -- All the operations common to both mutable and immutable
    sets. This is an abstract class, not meant to be directly
    instantiated.

Set -- Mutable sets, subclass of BaseSet; not hashable.

ImmutableSet -- Immutable sets, subclass of BaseSet; hashable.
    An iterable argument is mandatory to create an ImmutableSet.

_TemporarilyImmutableSet -- A wrapper around a Set, hashable,
    giving the same hash value as the immutable set equivalent
    would have.  Do not use this class directly.

Only hashable objects can be added to a Set. In particular, you cannot
really add a Set as an element to another Set; if you try, what is
actually added is an ImmutableSet built from it (it compares equal to
the one you tried adding).

When you ask if `x in y' where x is a Set and y is a Set or
ImmutableSet, x is wrapped into a _TemporarilyImmutableSet z, and
what's tested is actually `z in y'.

i����(tifiltertifilterfalsetBaseSettSettImmutableSetNsthe
sets module is deprecatedt
stacklevelicBs"eZdZdgZd�Zd�Zd�ZeZed�Z	d�Z
d�Zd�Zd	�Z
d
�ZeZd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZeZeZd�Zd�ZdZ!d�Z"d�Z#d�Z$RS(s1Common
base class for mutable and immutable
sets.t_datacCs|jtkrtd�ndS(sThis is an abstract
class.s7BaseSet is an abstract class.  Use Set or
ImmutableSet.N(t	__class__Rt	TypeError(tself((s/usr/lib64/python2.7/sets.pyt__init__HscCs
t|j�S(s'Return
the number of elements of a
set.(tlenR(R	((s/usr/lib64/python2.7/sets.pyt__len__QscCs
|j�S(seReturn string representation of a set.

        This looks like 'Set([<list of elements>])'.
       
(t_repr(R	((s/usr/lib64/python2.7/sets.pyt__repr__UscCs6|jj�}|r"|j�nd|jj|fS(Ns%s(%r)(RtkeystsortRt__name__(R	tsortedtelements((s/usr/lib64/python2.7/sets.pyR
_s
cCs
|jj�S(ssReturn
an iterator over the elements or a set.

        This is the keys iterator for the underlying dict.
       
(Rtiterkeys(R	((s/usr/lib64/python2.7/sets.pyt__iter__escCs
td�dS(Nscan't
compare sets using
cmp()(R(R	tother((s/usr/lib64/python2.7/sets.pyt__cmp__qscCs't|t�r|j|jkStSdS(N(t
isinstanceRRtFalse(R	R((s/usr/lib64/python2.7/sets.pyt__eq__�scCs't|t�r|j|jkStSdS(N(RRRtTrue(R	R((s/usr/lib64/python2.7/sets.pyt__ne__�scCs#|j�}|jj|j�|S(sReturn
a shallow copy of a
set.(RRtupdate(R	tresult((s/usr/lib64/python2.7/sets.pytcopy�scCscddlm}|j�}||t|�<|j}t}x!|D]}|||||�<qBW|S(s1Return
a deep copy of a set; used by copy module.i����(tdeepcopy(RR
RtidRR(R	tmemoR
Rtdatatvaluetelt((s/usr/lib64/python2.7/sets.pyt__deepcopy__�s	
cCs
t|t�stS|j|�S(shReturn the union of two sets as a new set.

        (I.e. all elements that are in either set.)
       
(RRtNotImplementedtunion(R	R((s/usr/lib64/python2.7/sets.pyt__or__�scCs
|j|�}|j|�|S(shReturn the union of two sets as a new set.

        (I.e. all elements that are in either set.)
       
(Rt_update(R	RR((s/usr/lib64/python2.7/sets.pyR(�s
cCs
t|t�stS|j|�S(snReturn the intersection of two sets as a new
set.

        (I.e. all elements that are in both sets.)
       
(RRR'tintersection(R	R((s/usr/lib64/python2.7/sets.pyt__and__�scCsut|t�st|�}nt|�t|�krF||}}n
||}}t|jj|�}|j|�S(snReturn
the intersection of two sets as a new set.

        (I.e. all elements that are in both sets.)
       
(RRRRRRt__contains__R(R	Rtlittletbigtcommon((s/usr/lib64/python2.7/sets.pyR+�s
cCs
t|t�stS|j|�S(s�Return the symmetric difference of two sets
as a new set.

        (I.e. all elements that are in exactly one of the sets.)
       
(RRR'tsymmetric_difference(R	R((s/usr/lib64/python2.7/sets.pyt__xor__�scCs�|j�}|j}t}|j}y
|j}Wn
tk
rSt|�j}nXx$t|j|�D]}|||<qgWx$t|j|�D]}|||<q�W|S(s�Return
the symmetric difference of two sets as a new set.

        (I.e. all elements that are in exactly one of the sets.)
       
(RRRtAttributeErrorRRR-(R	RRR#R$tselfdatat	otherdataR%((s/usr/lib64/python2.7/sets.pyR1�s		

cCs
t|t�stS|j|�S(s�Return the difference of two sets as a new
Set.

        (I.e. all elements that are in this set and not in the other.)
        (RRR't
difference(R	R((s/usr/lib64/python2.7/sets.pyt__sub__�scCsv|j�}|j}y
|j}Wn
tk
rDt|�j}nXt}x$t|j|�D]}|||<q^W|S(s�Return the
difference of two sets as a new Set.

        (I.e. all elements that are in this set and not in the other.)
       
(RRR3RRRR-(R	RRR#R5R$R%((s/usr/lib64/python2.7/sets.pyR6s	

cCsZy||jkSWnBtk
rUt|dd�}|dkrE�n|�|jkSXdS(s{Report whether an element
is a member of a set.

        (Called in response to the expression `element in self'.)
       
t__as_temporarily_immutable__N(RRtgetattrtNone(R	telementt	transform((s/usr/lib64/python2.7/sets.pyR-s
cCsN|j|�t|�t|�kr)tSxt|jj|�D]}tSWtS(s-Report
whether another set contains this
set.(t_binary_sanity_checkRRRRR-R(R	RR%((s/usr/lib64/python2.7/sets.pytissubset!s
cCsN|j|�t|�t|�kr)tSxt|jj|�D]}tSWtS(s-Report
whether this set contains another
set.(R=RRRRR-R(R	RR%((s/usr/lib64/python2.7/sets.pyt
issuperset*s
cCs2|j|�t|�t|�ko1|j|�S(N(R=RR>(R	R((s/usr/lib64/python2.7/sets.pyt__lt__7s
cCs2|j|�t|�t|�ko1|j|�S(N(R=RR?(R	R((s/usr/lib64/python2.7/sets.pyt__gt__;s
cCst|t�std�ndS(Ns,Binary
operation only permitted between
sets(RRR(R	R((s/usr/lib64/python2.7/sets.pyR=DscCs+d}x|D]}|t|�N}q
W|S(Ni(thash(R	RR%((s/usr/lib64/python2.7/sets.pyt
_compute_hashJs
cCs9|j}t|t�r,|j|j�dSt}t|�tttfkr�t	|�}x�tr�y#x|D]}|||<qlWdSWq\t
k
r�t|dd�}|dkr��n|||�<q\Xq\Wndxa|D]Y}y|||<Wq�t
k
r0t|dd�}|dkr
�n|||�<q�Xq�WdS(Nt__as_immutable__(
RRRRRttypetlistttupletxrangetiterRR9R:(R	titerableR#R$titR;R<((s/usr/lib64/python2.7/sets.pyR*Us2		



N(%Rt
__module__t__doc__t	__slots__R
RRt__str__RR
RRRRRt__copy__R&R)R(R,R+R2R1R7R6R-R>R?t__le__t__ge__R@RAR:t__hash__R=RCR*(((s/usr/lib64/python2.7/sets.pyRAsB																												
				cBs>eZdZdgZdd�Zd�Zd�Zd�ZRS(sImmutable
set class.t	_hashcodecCs2d|_i|_|dk	r.|j|�ndS(s5Construct an
immutable set from an optional
iterable.N(R:RTRR*(R	RJ((s/usr/lib64/python2.7/sets.pyR
�s		cCs(|jdkr!|j�|_n|jS(N(RTR:RC(R	((s/usr/lib64/python2.7/sets.pyRS�scCs|j|jfS(N(RRT(R	((s/usr/lib64/python2.7/sets.pyt__getstate__�scCs|\|_|_dS(N(RRT(R	tstate((s/usr/lib64/python2.7/sets.pyt__setstate__�sN(	RRLRMRNR:R
RSRURW(((s/usr/lib64/python2.7/sets.pyRzs			cBs�eZdZgZdd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(s
Mutable set class.cCs)i|_|dk	r%|j|�ndS(s*Construct a set from
an optional iterable.N(RR:R*(R	RJ((s/usr/lib64/python2.7/sets.pyR
�s	cCs
|jfS(N(R(R	((s/usr/lib64/python2.7/sets.pyRU�scCs|\|_dS(N(R(R	R#((s/usr/lib64/python2.7/sets.pyRW�scCs$|j|�|jj|j�|S(s2Update
a set with the union of itself and
another.(R=RR(R	R((s/usr/lib64/python2.7/sets.pyt__ior__�s
cCs|j|�dS(s2Update
a set with the union of itself and
another.N(R*(R	R((s/usr/lib64/python2.7/sets.pytunion_update�scCs!|j|�||@j|_|S(s9Update
a set with the intersection of itself and
another.(R=R(R	R((s/usr/lib64/python2.7/sets.pyt__iand__�s
cCs5t|t�r||M}n|j|�j|_dS(s9Update
a set with the intersection of itself and
another.N(RRR+R(R	R((s/usr/lib64/python2.7/sets.pytintersection_update�s
cCs|j|�|j|�|S(sAUpdate
a set with the symmetric difference of itself and
another.(R=tsymmetric_difference_update(R	R((s/usr/lib64/python2.7/sets.pyt__ixor__�s

cCs{|j}t}t|t�s-t|�}n||krF|j�nx.|D]&}||kri||=qM|||<qMWdS(sAUpdate
a set with the symmetric difference of itself and
another.N(RRRRRtclear(R	RR#R$R%((s/usr/lib64/python2.7/sets.pyR\�s	


cCs|j|�|j|�|S(s1Remove all elements of another set from
this
set.(R=tdifference_update(R	R((s/usr/lib64/python2.7/sets.pyt__isub__�s

cCsh|j}t|t�s't|�}n||kr@|j�nx!t|j|�D]
}||=qSWdS(s1Remove
all elements of another set from this
set.N(RRRRR^RR-(R	RR#R%((s/usr/lib64/python2.7/sets.pyR_�s	
cCs|j|�dS(s9Add
all values from an iterable (such as a list or
file).N(R*(R	RJ((s/usr/lib64/python2.7/sets.pyR�scCs|jj�dS(s"Remove
all elements from this
set.N(RR^(R	((s/usr/lib64/python2.7/sets.pyR^�scCs]yt|j|<WnEtk
rXt|dd�}|dkrE�nt|j|�<nXdS(s`Add an element to a
set.

        This has no effect if the element is already present.
       
RDN(RRRR9R:(R	R;R<((s/usr/lib64/python2.7/sets.pytadd�s
cCsWy|j|=WnBtk
rRt|dd�}|dkrB�n|j|�=nXdS(svRemove an element from a
set; it must be a member.

        If the element is not a member, raise a KeyError.
       
R8N(RRR9R:(R	R;R<((s/usr/lib64/python2.7/sets.pytremoves
cCs)y|j|�Wntk
r$nXdS(smRemove an element from a set if it is a member.

        If the element is not a member, do nothing.
       
N(RbtKeyError(R	R;((s/usr/lib64/python2.7/sets.pytdiscard
s
cCs|jj�dS(s+Remove
and return an arbitrary set
element.i(Rtpopitem(R	((s/usr/lib64/python2.7/sets.pytpopscCs
t|�S(N(R(R	((s/usr/lib64/python2.7/sets.pyRDscCs
t|�S(N(t_TemporarilyImmutableSet(R	((s/usr/lib64/python2.7/sets.pyR8sN(RRLRMRNR:R
RURWRXRYRZR[R]R\R`R_RR^RaRbRdRfRDR8(((s/usr/lib64/python2.7/sets.pyR�s*													
	
	
		RgcBseZd�Zd�ZRS(cCs||_|j|_dS(N(t_setR(R	tset((s/usr/lib64/python2.7/sets.pyR
(s	cCs
|jj�S(N(RhRC(R	((s/usr/lib64/python2.7/sets.pyRS,s(RRLR
RS(((s/usr/lib64/python2.7/sets.pyRg$s	(
RMt	itertoolsRRt__all__twarningstwarntDeprecationWarningtobjectRRRRg(((s/usr/lib64/python2.7/sets.pyt<module>)s�:�