Metadata-Version: 1.1 Name: IPy Version: 0.75 Summary: Class and tools for handling of IPv4 and IPv6 addresses and networks Home-page: https://github.com/haypo/python-ipy Author: Victor Stinner Author-email: victor.stinner AT haypocalc.com License: BSD License Download-URL: https://github.com/haypo/python-ipy Description: IPy - class and tools for handling of IPv4 and IPv6 addresses and networks. Website: https://github.com/haypo/python-ipy/ Presentation of the API ======================= The IP class allows a comfortable parsing and handling for most notations in use for IPv4 and IPv6 addresses and networks. It was greatly inspired by RIPE's Perl module NET::IP's interface but doesn't share the implementation. It doesn't share non-CIDR netmasks, so funky stuff like a netmask of 0xffffff0f can't be done here. >>> from IPy import IP >>> ip = IP('127.0.0.0/30') >>> for x in ip: ... print(x) ... 127.0.0.0 127.0.0.1 127.0.0.2 127.0.0.3 >>> ip2 = IP('0x7f000000/30') >>> ip == ip2 1 >>> ip.reverseNames() ['0.0.0.127.in-addr.arpa.', '1.0.0.127.in-addr.arpa.', '2.0.0.127.in-addr.arpa.', '3.0.0.127.in-addr.arpa.'] >>> ip.reverseName() '0-3.0.0.127.in-addr.arpa.' >>> ip.iptype() 'PRIVATE' Supports most IP address formats ================================ It can detect about a dozen different ways of expressing IP addresses and networks, parse them and distinguish between IPv4 and IPv6 addresses: >>> IP('10.0.0.0/8').version() 4 >>> IP('::1').version() 6 IPv4 addresses -------------- >>> print(IP(0x7f000001)) 127.0.0.1 >>> print(IP('0x7f000001')) 127.0.0.1 >>> print(IP('127.0.0.1')) 127.0.0.1 >>> print(IP('10')) 10.0.0.0 IPv6 addresses -------------- >>> print(IP('1080:0:0:0:8:800:200C:417A')) 1080::8:800:200c:417a >>> print(IP('1080::8:800:200C:417A')) 1080::8:800:200c:417a >>> print(IP('::1')) ::1 >>> print(IP('::13.1.68.3')) ::d01:4403 Network mask and prefixes ------------------------- >>> print(IP('127.0.0.0/8')) 127.0.0.0/8 >>> print(IP('127.0.0.0/255.0.0.0')) 127.0.0.0/8 >>> print(IP('127.0.0.0-127.255.255.255')) 127.0.0.0/8 Derive network address =========================== IPy can transform an IP address into a network address by applying the given netmask: >>> print(IP('127.0.0.1/255.0.0.0', make_net=True)) 127.0.0.0/8 This can also be done for existing IP instances: >>> print(IP('127.0.0.1').make_net('255.0.0.0')) 127.0.0.0/8 Convert address to string ========================= Nearly all class methods which return a string have an optional parameter 'wantprefixlen' which controls if the prefixlen or netmask is printed. Per default the prefilen is always shown if the network contains more than one address:: wantprefixlen == 0 / None don't return anything 1.2.3.0 wantprefixlen == 1 /prefix 1.2.3.0/24 wantprefixlen == 2 /netmask 1.2.3.0/255.255.255.0 wantprefixlen == 3 -lastip 1.2.3.0-1.2.3.255 You can also change the defaults on an per-object basis by fiddling with the class members: * NoPrefixForSingleIp * WantPrefixLen Examples of string conversions: >>> IP('10.0.0.0/32').strNormal() '10.0.0.0' >>> IP('10.0.0.0/24').strNormal() '10.0.0.0/24' >>> IP('10.0.0.0/24').strNormal(0) '10.0.0.0' >>> IP('10.0.0.0/24').strNormal(1) '10.0.0.0/24' >>> IP('10.0.0.0/24').strNormal(2) '10.0.0.0/255.255.255.0' >>> IP('10.0.0.0/24').strNormal(3) '10.0.0.0-10.0.0.255' >>> ip = IP('10.0.0.0') >>> print(ip) 10.0.0.0 >>> ip.NoPrefixForSingleIp = None >>> print(ip) 10.0.0.0/32 >>> ip.WantPrefixLen = 3 >>> print(ip) 10.0.0.0-10.0.0.0 Compatibility and links ======================= IPy 0.73 works on Python version 2.5-2.7. This Python module is under BSD license: see COPYING file. Further Information might be available at: https://github.com/haypo/python-ipy TODO ==== * better comparison (__cmp__ and friends) * tests for __cmp__ * always write hex values lowercase * interpret 2001:1234:5678:1234/64 as 2001:1234:5678:1234::/64 * move size in bits into class variables to get rid of some "if self._ipversion ..." * support for base85 encoding * support for output of IPv6 encoded IPv4 Addresses * update address type tables * first-last notation should be allowed for IPv6 * add IPv6 docstring examples * check better for negative parameters * add addition / aggregation * move reverse name stuff out of the classes and refactor it * support for aggregation of more than two nets at once * support for aggregation with "holes" * support for finding common prefix * '>>' and '<<' for prefix manipulation * add our own exceptions instead ValueError all the time * rename checkPrefix to checkPrefixOk * add more documentation and doctests * refactor What's new ========== Version 0.75 (2011-04-12) ------------------------- * IP('::/0').netmask() gives IP('::') instead of IP('0.0.0.0') Version 0.74 (2011-02-16) ------------------------- * Fix tests for Python 3.1 and 3.2 * ip.__nonzero__() and (ipa in ipb) return a bool instead of 0 or 1 * IP('0.0.0.0/0') + IP('0.0.0.0/0') raises an error, fix written by Arfrever Version 0.73 (2011-02-15) ------------------------- * Support Python 3: setup.py runs 2to3 * Update the ranges for IPv6 IPs * Fix reverseName() and reverseNames() for IPv4 in IPv6 addresses * Drop support of Python < 2.5 Version 0.72 (2010-11-23) ------------------------- * Include examples and MANIFEST.in in source build (add them to MANIFEST.in) * Remove __rcsid__ constant from IPy module Version 0.71 (2010-10-01) ------------------------- * Use xrange() instead of range() * Use isinstance(x, int) instead of type(x) == types.IntType * Prepare support of Python3 (use integer division: x // y) * Fix IP(long) constructor: ensure that the address is not too large * Constructor raise a TypeError if the type is not int, long, str or unicode * 223.0.0.0/8 is now public (belongs to APNIC) Version 0.70 (2009-10-29) ------------------------- * New "major" version because it may break compatibility * Fix __cmp__(): IP('0.0.0.0/0') and IP('0.0.0.0') are not equal * Fix IP.net() of the network "::/0": "::" instead of "0.0.0.0". IPy 0.63 should fix this bug, but it wasn't. Version 0.64 (2009-08-19) ------------------------- * Create MANIFEST.in to fix setup.py bdist_rpm, fix by Robert Nickel Version 0.63 (2009-06-23) ------------------------- * Fix formatting of "IPv4 in IPv6" network, eg. IP('::ffff:192.168.10.0/120'), the netmask ("/120" in the example) was missing! Version 0.62 (2008-07-15) ------------------------- * Fix reverse DNS of IPv6 address: use ".ip6.arpa." suffix instead of deprecated ".ip6.int." suffix Version 0.61 (2008-06-12) ------------------------- * Patch from Aras Vaichas allowing the [-1] operator to work with an IP object of size 1. Version 0.60 (2008-05-16) ------------------------- * strCompressed() formats '::ffff:a.b.c.d' correctly * Use strCompressed() instead of strFullsize() to format IP addresses, ouput is smarter with IPv6 address * Remove check_addr_prefixlen because it generates invalid IP address Keywords: ipv4 ipv6 netmask Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators Classifier: Environment :: Plugins Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Communications Classifier: Topic :: Internet Classifier: Topic :: System :: Networking Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Natural Language :: English Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
_markerlib | Folder | 0755 |
|
|
backports | Folder | 0755 |
|
|
chardet | Folder | 0755 |
|
|
chardet-2.2.1-py2.7.egg-info | Folder | 0755 |
|
|
decorator-3.4.0-py2.7.egg-info | Folder | 0755 |
|
|
firewall | Folder | 0755 |
|
|
iniparse | Folder | 0755 |
|
|
isc | Folder | 0755 |
|
|
kitchen | Folder | 0755 |
|
|
kitchen-1.1.1-py2.7.egg-info | Folder | 0755 |
|
|
ply | Folder | 0755 |
|
|
procfs | Folder | 0755 |
|
|
pyudev | Folder | 0755 |
|
|
pyudev-0.15-py2.7.egg-info | Folder | 0755 |
|
|
rpmUtils | Folder | 0755 |
|
|
setuptools | Folder | 0755 |
|
|
setuptools-0.9.8-py2.7.egg-info | Folder | 0755 |
|
|
slip | Folder | 0755 |
|
|
tuned | Folder | 0755 |
|
|
urlgrabber | Folder | 0755 |
|
|
yum | Folder | 0755 |
|
|
yumutils | Folder | 0755 |
|
|
.IPy.pyo.40009 | File | 39.92 KB | 0644 |
|
.configobj.pyo.40009 | File | 64.72 KB | 0644 |
|
.easy_install.pyo.40009 | File | 315 B | 0644 |
|
.pyparsing.pyo.40009 | File | 145.41 KB | 0644 |
|
.validate.pyo.40009 | File | 45.62 KB | 0644 |
|
IPy-0.75-py2.7.egg-info | File | 9.83 KB | 0644 |
|
IPy.py | File | 50.07 KB | 0644 |
|
IPy.pyc | File | 39.92 KB | 0644 |
|
IPy.pyo | File | 39.92 KB | 0644 |
|
backports.ssl_match_hostname-3.5.0.1-py2.7.egg-info | File | 3.96 KB | 0644 |
|
configobj-4.7.2-py2.7.egg-info | File | 2.08 KB | 0644 |
|
configobj.py | File | 86.1 KB | 0644 |
|
configobj.pyc | File | 64.72 KB | 0644 |
|
configobj.pyo | File | 64.72 KB | 0644 |
|
decorator.py | File | 10.39 KB | 0644 |
|
decorator.pyc | File | 8.36 KB | 0644 |
|
decorator.pyo | File | 8.32 KB | 0644 |
|
easy-install.pth | File | 209 B | 0644 |
|
easy_install.py | File | 126 B | 0644 |
|
easy_install.pyc | File | 315 B | 0644 |
|
easy_install.pyo | File | 315 B | 0644 |
|
iniparse-0.4-py2.7.egg-info | File | 1.06 KB | 0644 |
|
ipaddress-1.0.16-py2.7.egg-info | File | 783 B | 0644 |
|
ipaddress.py | File | 78.03 KB | 0644 |
|
ipaddress.pyc | File | 73.75 KB | 0644 |
|
ipaddress.pyo | File | 73.57 KB | 0644 |
|
isc-2.0-py2.7.egg-info | File | 267 B | 0644 |
|
pkg_resources.py | File | 98.74 KB | 0644 |
|
pkg_resources.pyc | File | 105.5 KB | 0644 |
|
pkg_resources.pyo | File | 105.47 KB | 0644 |
|
ply-3.4-py2.7.egg-info | File | 900 B | 0644 |
|
pyparsing-1.5.6-py2.7.egg-info | File | 670 B | 0644 |
|
pyparsing.py | File | 151.79 KB | 0644 |
|
pyparsing.pyc | File | 145.41 KB | 0644 |
|
pyparsing.pyo | File | 145.41 KB | 0644 |
|
python_linux_procfs-0.4.9-py2.7.egg-info | File | 350 B | 0644 |
|
pyzor-1.0.0-py2.7.egg | File | 78.18 KB | 0644 |
|
slip-0.4.0-py2.7.egg-info | File | 196 B | 0644 |
|
slip.dbus-0.4.0-py2.7.egg-info | File | 269 B | 0644 |
|
urlgrabber-3.10-py2.7.egg-info | File | 2.21 KB | 0644 |
|
validate.py | File | 45.22 KB | 0644 |
|
validate.pyc | File | 45.62 KB | 0644 |
|
validate.pyo | File | 45.62 KB | 0644 |
|