@@ -91,7 +91,8 @@ Address objects
91
91
The :class: `IPv4Address ` and :class: `IPv6Address ` objects share a lot of common
92
92
attributes. Some attributes that are only meaningful for IPv6 addresses are
93
93
also implemented by :class: `IPv4Address ` objects, in order to make it easier to
94
- write code that handles both IP versions correctly.
94
+ write code that handles both IP versions correctly. Address objects are
95
+ :term: `hashable `, so they can be used as keys in dictionaries.
95
96
96
97
.. class :: IPv4Address(address)
97
98
@@ -368,6 +369,8 @@ All attributes implemented by address objects are implemented by network
368
369
objects as well. In addition, network objects implement additional attributes.
369
370
All of these are common betwe
10000
en :class: `IPv4Network ` and :class: `IPv6Network `,
370
371
so to avoid duplication they are only documented for :class: `IPv4Network `.
372
+ Network objects are :term: `hashable `, so they can be used as keys in
373
+ dictionaries.
371
374
372
375
.. class :: IPv4Network(address, strict=True)
373
376
@@ -377,8 +380,9 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
377
380
a slash (``/ ``). The IP address is the network address, and the mask
378
381
can be either a single number, which means it's a *prefix *, or a string
379
382
representation of an IPv4 address. If it's the latter, the mask is
380
- interpreted as a *net mask * if it starts with a non-zero field, or as
381
- a *host mask * if it starts with a zero field. If no mask is provided,
383
+ interpreted as a *net mask * if it starts with a non-zero field, or as a
384
+ *host mask * if it starts with a zero field, with the single exception of
385
+ an all-zero mask which is treated as a *net mask *. If no mask is provided,
382
386
it's considered to be ``/32 ``.
383
387
384
388
For example, the following *address * specifications are equivalent:
@@ -408,7 +412,7 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
408
412
409
413
Unless stated otherwise, all network methods accepting other network/address
410
414
objects will raise :exc: `TypeError ` if the argument's IP version is
411
- incompatible to ``self ``
415
+ incompatible to ``self ``.
412
416
413
417
.. versionchanged :: 3.5
414
418
@@ -418,7 +422,7 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
418
422
.. attribute :: max_prefixlen
419
423
420
424
Refer to the corresponding attribute documentation in
421
- :class: `IPv4Address `
425
+ :class: `IPv4Address `.
422
426
423
427
.. attribute :: is_multicast
424
428
.. attribute :: is_private
@@ -428,7 +432,7 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
428
432
.. attribute :: is_link_local
429
433
430
434
These attributes are true for the network as a whole if they are true
431
- for both the network address and the broadcast address
435
+ for both the network address and the broadcast address.
432
436
433
437
.. attribute :: network_address
434
438
@@ -590,10 +594,10 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
590
594
591
595
Construct an IPv6 network definition. *address * can be one of the following:
592
596
593
- 1. A string consisting of an IP address and an optional mask, separated by
594
- a slash (``/ ``). The IP address is the network address, and the mask
595
- is a single number, which represents a *prefix *. If no mask is provided,
596
- it's considered to be ``/128 ``.
597
+ 1. A string consisting of an IP address and an optional prefix length,
598
+ separated by a slash (``/ ``). The IP address is the network address,
599
+ and the prefix length must be a single number, the *prefix *. If no
600
+ prefix length is provided, it's considered to be ``/128 ``.
597
601
598
602
Note that currently expanded netmasks are not supported. That means
599
603
``2001:db00::0/24 `` is a valid argument while ``2001:db00::0/ffff:ff00:: ``
@@ -652,12 +656,12 @@ so to avoid duplication they are only documented for :class:`IPv4Network`.
652
656
.. method :: compare_networks(other)
653
657
654
658
Refer to the corresponding attribute documentation in
655
- :class: `IPv4Network `
659
+ :class: `IPv4Network `.
656
660
657
661
.. attribute :: is_site_local
658
662
659
663
These attribute is true for the network as a whole if it is true
660
- for both the network address and the broadcast address
664
+ for both the network address and the broadcast address.
661
665
662
666
663
667
Operators
@@ -671,8 +675,8 @@ IPv6).
671
675
Logical operators
672
676
"""""""""""""""""
673
677
674
- Network objects can be compared with the usual set of logical operators,
675
- similarly to address objects .
678
+ Network objects can be compared with the usual set of logical operators.
679
+ Network objects are ordered first by network address, then by net mask .
676
680
677
681
678
682
Iteration
@@ -722,6 +726,9 @@ Network objects can act as containers of addresses. Some examples::
722
726
Interface objects
723
727
-----------------
724
728
729
+ Interface objects are :term: `hashable `, so they can be used as keys in
730
+ dictionaries.
731
+
725
732
.. class :: IPv4Interface(address)
726
733
727
734
Construct an IPv4 interface. The meaning of *address * is as in the
@@ -793,6 +800,30 @@ Interface objects
793
800
:class: `IPv4Interface `.
794
801
795
802
803
+ Operators
804
+ ^^^^^^^^^
805
+
806
+ Interface objects support some operators. Unless stated otherwise, operators
807
+ can only be applied between compatible objects (i.e. IPv4 with IPv4, IPv6 with
808
+ IPv6).
809
+
810
+
811
+ Logical operators
812
+ """""""""""""""""
813
+
814
+ Interface objects can be compared with the usual set of logical operators.
815
+
816
+ For equality comparison (``== `` and ``!= ``), both the IP address and network
817
+ must be the same for the objects to be equal. An interface will not compare
818
+ equal to any address or network object.
819
+
820
+ For ordering (``< ``, ``> ``, etc) the rules are different. Interface and
821
+ address objects with the same IP version can be compared, and the address
822
+ objects will always sort before the interface objects. Two interface objects
823
+ are first compared by their networks and, if those are the same, then by their
824
+ IP addresses.
825
+
826
+
796
827
Other Module Level Functions
797
828
----------------------------
798
829
@@ -858,7 +889,7 @@ The module also provides the following module level functions:
858
889
859
890
doesn't make sense. There are some times however, where you may wish to
860
891
have :mod: `ipaddress ` sort these anyway. If you need to do this, you can use
861
- this function as the `` key `` argument to :func: `sorted() `.
892
+ this function as the * key * argument to :func: `sorted() `.
862
893
863
894
*obj * is either a network or address object.
864
895
@@ -876,4 +907,4 @@ module defines the following exceptions:
876
907
877
908
.. exception :: NetmaskValueError(ValueError)
878
909
879
- Any value error related to the netmask .
910
+ Any value error related to the net mask .
0 commit comments