Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
®‹EYc@sˆdZddlZddlmZmZmZmZmZm	Z	ddl
mZmZm
Z
d„Zd„Zdefd„ƒYZdS(	s2Set based operations for IP addresses and subnets.iÿÿÿÿN(t	IPNetworkt	IPAddresstIPRanget
cidr_mergetcidr_excludetiprange_to_cidrs(t_sys_maxintt
_dict_keyst	_int_typec
Cs|jj}||}|j|jkrK|j||j|jdfƒn|d7}|}x}|t|ƒkrÚ||}||krŠPn|jd|jkr£n$|j||jd|jdfƒ|d7}|}q^W|jd}|j}	||	kr|j|||	fƒn|S(s®Calculate IPSet([supernet]) - IPSet(subnets).

    Assumptions: subnets is sorted, subnet_idx points to the first
    element in subnets that is a subnet of supernet.

    Results are appended to the ranges parameter as tuples of in format
    (version, first, last). Return value is the first subnet_idx that
    does not point to a subnet of supernet (or len(subnets) if all
    subsequents items are a subnet of supernet).
    i(t_moduletversiontfirsttappendtlentlast(
tsupernettsubnetst
subnet_idxtrangesR
tsubnettprev_subnett
cur_subnetRR((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt	_subtracts(
#

$


	ccs³|s
dS|d\}}}xr|dD]f\}}}||dkr_||kr_|}q(nt||ƒt||ƒfV|}|}|}q(Wt||ƒt||ƒfVdS(sqIterate over sorted_ranges, merging where possible

    Sorted ranges must be a sorted iterable of (version, first, last) tuples.
    Merging occurs for pairs like [(4, 10, 42), (4, 43, 100)] which is merged
    into (4, 10, 100), and leads to return value
    ( IPAddress(10, 4), IPAddress(100, 4) ), which is suitable input for the
    iprange_to_cidrs function.
    Nii(R(t
sorted_rangestcurrent_versiont
current_starttcurrent_stoptnext_versiont
next_startt	next_stop((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt_iter_merged_ranges8s	
tIPSetcBs‚eZdZd$Zd%dd„Zd„Zd„Zd„Zd„Z	d„Z
d	„Zd
„ZeZ
d„Zd„Zdd
„Zdd„Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„ZeZd„Zd„ZeZd„ZeZ d„Z!e!Z"d„Z#e#Z$d„Z%e%Z&d„Z'e(d„ƒZ)d „Z*e*Z+d!„Z,d"„Z-d#„Z.RS(&s[
    Represents an unordered collection (set) of unique IP addresses and
    subnets.

    t_cidrsicCst|tƒr%it|j6|_nét|tƒr]tjt|d|dƒtƒ|_n±t|t	ƒrŠtj|j
ƒtƒ|_n„i|_|dk	rg}x?|D]7}t|tƒrÖt
|d|ƒ}n|j|ƒq¬Wx$t|ƒD]}t|j|<qôWndS(sE
        Constructor.

        :param iterable: (optional) an iterable containing IP addresses and
            subnets.

        :param flags: decides which rules are applied to the interpretation
            of the addr value. See the netaddr.core namespace documentation
            for supported constant values.

        iiÿÿÿÿtflagsN(t
isinstanceRtTruetcidrR RtdicttfromkeysRRt
iter_cidrstNoneRRRR(tselftiterableR!t	mergeabletaddrR$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__init__]s #	
cCs&tg|jD]}|jƒ^q
ƒS(s.:return: Pickled state of an ``IPSet`` object.(ttupleR t__getstate__(R)R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyR/|scCs#tjd„|Dƒtƒ|_dS(sR
        :param state: data used to unpickle a pickled ``IPSet`` object.

        css0|]&\}}}t||fd|ƒVqdS(R
N(R(t.0tvaluet	prefixlenR
((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pys	<genexpr>†sN(R%R&R#R (R)tstate((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__setstate__€scCsí|j}|j}|j}|j|jjkrgxú|jƒD]#}||jkr=|j|=dSq=WnÆg}x¢|jD]—}|jj|ksw||kr¡qwn|j}|j}	||krÛ|	|krÛ|j|ƒqw||krw|	|krw|j|=|s
t	‚dSqwWx|D]}
|j|
=qW|jj|j
}x¦|j
dkrè|j|?d@}|rx|jƒ}
n|j
ƒ}
|
|jkr—dS|j|
=|j|=|j
d8_
|d7}|j|?|>|_t|j|<qCWdS(s
        Same as compact(), but assume that added_network is the only change and
        that this IPSet was properly compacted before added_network was added.
        This allows to perform compaction much faster. added_network must
        already be present in self._cidrs.
        Nii(RRR
t
_prefixlenR	twidthRR RtAssertionErrorR2t_valuetprevioustnextR#(R)t
added_networktadded_firstt
added_lastt
added_versiontpotential_supernett	to_removeR$RRtitemtshift_widthtthe_bitt	candidate((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt_compact_single_networkŠsH			
		





cCs(t|jƒ}tj|tƒ|_dS(sR
        Compact internal list of `IPNetwork` objects using a CIDR merge.
        N(RR R%R&R#(R)tcidrs((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytcompactÔscCstdƒ‚dS(sÁ
        Raises ``TypeError`` if this method is called.

        .. note:: IPSet objects are not hashable and cannot be used as             dictionary keys or as members of other sets.         sIP sets are unhashable!N(t	TypeError(R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__hash__ÛscCsUt|ƒ}||jkrtSx/|jrP|jd8_||jkr"tSq"WtS(s„
        :param ip: An IP address or subnet.

        :return: ``True`` if IP address or subnet is a member of this IP set.
        i(RR R#R5tFalse(R)tipR((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__contains__äs
cCs
t|jƒS(s9Return True if IPSet contains at least one IP, else False(tboolR (R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__nonzero__÷scCstjt|jƒŒS(sP
        :return: an iterator over the IP addresses within this IP set.
        (t
_itertoolstchaintsortedR (R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__iter__ýscCs
t|jƒS(sU
        :return: an iterator over individual IP subnets within this IP set.
        (RQR (R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyR'scCs¿t|tƒrPtjt|d|dƒtƒ}|jj|ƒ|jƒdSt|t	ƒrk|j
}n6t|tƒr•t	t|d|ƒƒ}nt	|ƒ}t|j|<|j
|ƒdS(s<
        Adds an IP address or subnet or IPRange to this IP set. Has no effect if
        it is already present.

        Note that where possible the IP address or subnet is merged with other
        members of the set to form more concise CIDR blocks.

        :param addr: An IP address or subnet in either string or object form, or
            an IPRange object.

        :param flags: decides which rules are applied to the interpretation
            of the addr value. See the netaddr.core namespace documentation
            for supported constant values.

        iiÿÿÿÿNR!(R"RR%R&RR#R tupdateRGRR$RRRE(R)R,R!t	new_cidrs((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytadd	s

cCst|tƒrHt|d|dƒ}x|D]}|j|ƒq-WdSt|tƒrlt|d|ƒ}nt|ƒ}|j|ƒd}d}x6|j	D]+}||kr›t
||ƒ}|}Pq›q›W|dk	r|j	|=x|D]}t|j	|<qçWndS(s

        Removes an IP address or subnet or IPRange from this IP set. Does
        nothing if it is not already a member.

        Note that this method behaves more like discard() found in regular
        Python sets because it doesn't raise KeyError exceptions if the
        IP address or subnet is question does not exist. It doesn't make sense
        to fully emulate that behaviour here as IP sets contain groups of
        individual IP addresses as individual set members using IPNetwork
        objects.

        :param addr: An IP address or subnet, or an IPRange.

        :param flags: decides which rules are applied to the interpretation
            of the addr value. See the netaddr.core namespace documentation
            for supported constant values.

        iiÿÿÿÿNR!(R"RRtremoveRRRRUR(R RR#(R)R,R!RFR$t	remaindert
matching_cidr((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRV*s(



cCs|jjƒdS(sŒ
        Removes and returns an arbitrary IP address or subnet from this IP
        set.

        :return: An IP address or subnet.
        i(R tpopitem(R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytpopbscCs|j|ƒ}|S(sÑ
        :param other: an IP set.

        :return: ``True`` if this IP set has no elements (IP addresses
            or subnets) in common with other. Intersection *must* be an
            empty set.
        (tintersection(R)tothertresult((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt
isdisjointkscCs#|jƒ}|jj|jƒ|S(s':return: a shallow copy of this IP set.(t	__class__R RS(R)tobj_copy((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytcopyvscCst|tƒrNtjd„tt|jƒt|jƒƒDƒtƒ|_dSt|tt	fƒrt|j
|ƒdSt|dƒs’tdƒ‚ng}x?|D]7}t|t
ƒrÉt|d|ƒ}n|j|ƒqŸWx.tt|jƒ|ƒD]}t|j|<qôW|jƒdS(sw
        Update the contents of this IP set with the union of itself and
        other IP set.

        :param iterable: an iterable containing IP addresses and subnets.

        :param flags: decides which rules are applied to the interpretation
            of the addr value. See the netaddr.core namespace documentation
            for supported constant values.

        css|]}|VqdS(N((R0RK((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pys	<genexpr>ŠsNRRsan iterable was expected!R!(R"RR%R&RRR R#RRRUthasattrRHRRRRG(R)R*R!R+R,R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRS|s$ 

 cCs
i|_dS(s5Remove all IP addresses and subnets from this IP set.N(R (R)((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytclearŸscCs-y|j|jkSWntk
r(tSXdS(s›
        :param other: an IP set

        :return: ``True`` if this IP set is equivalent to the ``other`` IP set,
            ``False`` otherwise.
        N(R tAttributeErrortNotImplemented(R)R\((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__eq__£s
cCs-y|j|jkSWntk
r(tSXdS(s›
        :param other: an IP set

        :return: ``False`` if this IP set is equivalent to the ``other`` IP set,
            ``True`` otherwise.
        N(R RdRe(R)R\((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__ne__¯s
cCs2t|dƒstS|j|jko1|j|ƒS(s—
        :param other: an IP set

        :return: ``True`` if this IP set is less than the ``other`` IP set,
            ``False`` otherwise.
        R (RbRetsizetissubset(R)R\((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__lt__»scCs(x!|jD]}||kr
tSq
WtS(sš
        :param other: an IP set.

        :return: ``True`` if every IP address and subnet in this IP set
            is found within ``other``.
        (R RJR#(R)R\R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRiÇscCs2t|dƒstS|j|jko1|j|ƒS(s›
        :param other: an IP set.

        :return: ``True`` if this IP set is greater than the ``other`` IP set,
            ``False`` otherwise.
        R (RbReRht
issuperset(R)R\((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__gt__ÕscCs;t|dƒstSx!|jD]}||krtSqWtS(sš
        :param other: an IP set.

        :return: ``True`` if every IP address and subnet in other IP set
            is found within this one.
        R (RbReR RJR#(R)R\R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRkáscCs|jƒ}|j|ƒ|S(s±
        :param other: an IP set.

        :return: the union of this IP set and another as a new IP set
            (combines IP addresses and subnets from both sets).
        (RaRS(R)R\tip_set((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytunionòs
cCs'i}t|jƒ}t|jƒ}d}d}t|ƒ}t|ƒ}xÆ||kr||kr||}	||}
|	|
kr¤t||	<|d7}|d7}qK|	|
krÇt||	<|d7}qK|
|	krêt||
<|d7}qK|	|
kr|d7}qK|d7}qKWtƒ}||_|S(sµ
        :param other: an IP set.

        :return: the intersection of this IP set and another as a new IP set.
            (IP addresses and subnets common to both sets).
        ii(RQR R
R#R(R)R\tresult_cidrstown_netst
other_netstown_idxt	other_idxtown_lent	other_lentown_curt	other_curR]((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyR[ÿs4









		cCsJg}t|jƒ}t|jƒ}d}d}t|ƒ}t|ƒ}x||kr`||kr`||}	||}
|	|
krš|d7}|d7}qK|	|
krÈt|
|||ƒ}|d7}qK|
|	kröt|	|||ƒ}|d7}qK|	|
kr1|j|	jj|	j|	jfƒ|d7}qK|j|
jj|
j|
jfƒ|d7}qKWxF||kr©||}	|j|	jj|	j|	jfƒ|d7}qdWxF||krò||}
|j|
jj|
j|
jfƒ|d7}q­Wt	ƒ}xGt
|ƒD]9\}}
t||
ƒ}x|D]}t|j|<q+Wq	W|S(sÜ
        :param other: an IP set.

        :return: the symmetric difference of this IP set and another as a new
            IP set (all IP addresses and subnets that are in exactly one
            of the sets).
        ii(
RQR R
RRR	R
RRRRRR#(R)R\t
result_rangesRpRqRrRsRtRuRvRwR]tstarttstopRFR$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytsymmetric_difference+sT








	
cCsšg}i}t|jƒ}t|jƒ}d}d}t|ƒ}t|ƒ}	xÇ||kr||	kr||}
||}|
|kr |d7}|d7}qQ|
|kr¹|d7}qQ||
krçt|
|||ƒ}|d7}qQ|
|kr
t||
<|d7}qQ|d7}qQWx(||krBt|||<|d7}qWx>t|ƒD]0\}}
x!t||
ƒD]}t||<qlWqPWtƒ}||_|S(sæ
        :param other: an IP set.

        :return: the difference between this IP set and another as a new IP
            set (all IP addresses and subnets that are in this IP set but
            not found in the other.)
        ii(RQR R
RR#RRR(R)R\RxRoRpRqRrRsRtRuRvRwRyRzR$R]((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt
differenceosB




	


		cCs,|j}|tkr(tdtƒ‚n|S(sæ
        :return: the cardinality of this IP set (i.e. sum of individual IP             addresses). Raises ``IndexError`` if size > maxint (a Python             limitation). Use the .size property for subnets of any size.
        sUrange contains more than %d (sys.maxint) IP addresses!Use the .size property instead.(RhRt
IndexError(R)Rh((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__len__¥s	
cCs#tg|jD]}|j^q
ƒS(s˜
        The cardinality of this IP set (based on the number of individual IP
        addresses including those implicitly defined in subnets).
        (tsumR Rh(R)R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRh²scCs*dgt|jƒD]}t|ƒ^qS(s8:return: Python statement to create an equivalent objects	IPSet(%r)(RQR tstr(R)tc((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt__repr__ºscCsf|jƒ}t|ƒdkrb|dd}x3|D](}|d|krMtS|dd}q3WntS(sÆ
        Returns True if the members of the set form a contiguous IP
        address range (with no gaps), False otherwise.

        :return: ``True`` if the ``IPSet`` object is contiguous.
        iiiÿÿÿÿ(R'R
RJR#(R)RFR9R$((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytiscontiguousÀs
cCsO|jƒr?|jƒ}|s"dSt|dd|ddƒStdƒ‚dS(sì
        Generates an IPRange for this IPSet, if all its members
        form a single contiguous sequence.

        Raises ``ValueError`` if the set is not contiguous.

        :return: An ``IPRange`` for all IPs in the IPSet.
        iiÿÿÿÿsIPSet is not contiguousN(RƒR'R(Rt
ValueError(R)RF((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pytiprangeÐs	ccscg|jƒD]!}|jj|j|jf^q
}x(t|ƒD]\}}t||ƒVqAWdS(sùGenerate the merged IPRanges for this IPSet.

        In contrast to self.iprange(), this will work even when the IPSet is
        not contiguous. Adjacent IPRanges will be merged together, so you
        get the minimal number of IPRanges.
        N(R'R	R
RRRR(R)R$RRyRz((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt
iter_iprangesás1(s_cidrsN(/t__name__t
__module__t__doc__t	__slots__R(R-R/R4RERGRIRLRNt__bool__RRR'RURVRZR^RaRSRcRfRgRjRit__le__RlRkt__ge__Rnt__or__R[t__and__R{t__xor__R|t__sub__R~tpropertyRhR‚t__str__RƒR…R†(((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyRUsV		
	J							!8				#									*	B	4	
			(R‰t	itertoolsROt
netaddr.ipRRRRRRtnetaddr.compatRRRRRtobjectR(((sD/home/tvault/.virtenv/lib/python2.7/site-packages/netaddr/ip/sets.pyt<module>s.	(