netifaces


Namenetifaces JSON
Version 0.11.0 PyPI version JSON
download
home_pagehttps://github.com/al45tair/netifaces
SummaryPortable network interface information.
upload_time2021-05-31 08:33:02
maintainer
docs_urlNone
authorAlastair Houghton
requires_python
licenseMIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            netifaces 0.10.8
================

+-------------+------------------+
| Linux/macOS | |BuildStatus|    |
+-------------+------------------+
| Windows     | |WinBuildStatus| |
+-------------+------------------+

.. |BuildStatus| image:: https://travis-ci.org/al45tair/netifaces.svg?branch=master
   :target: https://travis-ci.org/al45tair/netifaces
   :alt: Build Status (Linux/Mac)

.. |WinBuildStatus| image:: https://ci.appveyor.com/api/projects/status/3ctn1bl0aigpfjoo/branch/master?svg=true
   :target: https://ci.appveyor.com/project/al45tair/netifaces/branch/master
   :alt: Build Status (Windows)

.. warning::

   netifaces needs a new maintainer.  al45tair is no longer able to maintain it
   or make new releases due to work commitments.

1. What is this?
----------------

It's been annoying me for some time that there's no easy way to get the
address(es) of the machine's network interfaces from Python.  There is
a good reason for this difficulty, which is that it is virtually impossible
to do so in a portable manner.  However, it seems to me that there should
be a package you can easy_install that will take care of working out the
details of doing so on the machine you're using, then you can get on with
writing Python code without concerning yourself with the nitty gritty of
system-dependent low-level networking APIs.

This package attempts to solve that problem.

2. How do I use it?
-------------------

First you need to install it, which you can do by typing::

  tar xvzf netifaces-0.10.8.tar.gz
  cd netifaces-0.10.8
  python setup.py install

**Note that you will need the relevant developer tools for your platform**,
as netifaces is written in C and installing this way will compile the extension.

Once that's done, you'll need to start Python and do something like the
following::

>>> import netifaces

Then if you enter

>>> netifaces.interfaces()
['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']

you'll see the list of interface identifiers for your machine.

You can ask for the addresses of a particular interface by doing

>>> netifaces.ifaddresses('lo0')
{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]}

Hmmmm.  That result looks a bit cryptic; let's break it apart and explain
what each piece means.  It returned a dictionary, so let's look there first::

  { 18: [...], 2: [...], 30: [...] }

Each of the numbers refers to a particular address family.  In this case, we
have three address families listed; on my system, 18 is ``AF_LINK`` (which means
the link layer interface, e.g. Ethernet), 2 is ``AF_INET`` (normal Internet
addresses), and 30 is ``AF_INET6`` (IPv6).

But wait!  Don't use these numbers in your code.  The numeric values here are
system dependent; fortunately, I thought of that when writing netifaces, so
the module declares a range of values that you might need.  e.g.

>>> netifaces.AF_LINK
18

Again, on your system, the number may be different.

So, what we've established is that the dictionary that's returned has one
entry for each address family for which this interface has an address.  Let's
take a look at the ``AF_INET`` addresses now:

>>> addrs = netifaces.ifaddresses('lo0')
>>> addrs[netifaces.AF_INET]
[{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}]

You might be wondering why this value is a list.  The reason is that it's
possible for an interface to have more than one address, even within the
same family.  I'll say that again: *you can have more than one address of
the same type associated with each interface*.

*Asking for "the" address of a particular interface doesn't make sense.*

Right, so, we can see that this particular interface only has one address,
and, because it's a loopback interface, it's point-to-point and therefore
has a *peer* address rather than a broadcast address.

Let's look at a more interesting interface.

>>> addrs = netifaces.ifaddresses('en0')
>>> addrs[netifaces.AF_INET]
[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]

This interface has two addresses (see, I told you...)  Both of them are
regular IPv4 addresses, although in one case the netmask has been changed
from its default.  The netmask *may not* appear on your system if it's set
to the default for the address range.

Because this interface isn't point-to-point, it also has broadcast addresses.

Now, say we want, instead of the IP addresses, to get the MAC address; that
is, the hardware address of the Ethernet adapter running this interface.  We
can do

>>> addrs[netifaces.AF_LINK]
[{'addr': '00:12:34:56:78:9a'}]

Note that this may not be available on platforms without getifaddrs(), unless
they happen to implement ``SIOCGIFHWADDR``.  Note also that you just get the
address; it's unlikely that you'll see anything else with an ``AF_LINK`` address.
Oh, and don't assume that all ``AF_LINK`` addresses are Ethernet; you might, for
instance, be on a Mac, in which case:

>>> addrs = netifaces.ifaddresses('fw0')
>>> addrs[netifaces.AF_LINK]
[{'addr': '00:12:34:56:78:9a:bc:de'}]

No, that isn't an exceptionally long Ethernet MAC address---it's a FireWire
address.

As of version 0.10.0, you can also obtain a list of gateways on your
machine:

>>> netifaces.gateways()
{2: [('10.0.1.1', 'en0', True), ('10.2.1.1', 'en1', False)], 30: [('fe80::1', 'en0', True)], 'default': { 2: ('10.0.1.1', 'en0'), 30: ('fe80::1', 'en0') }}

This dictionary is keyed on address family---in this case, ``AF_INET``---and
each entry is a list of gateways as ``(address, interface, is_default)`` tuples.
Notice that here we have two separate gateways for IPv4 (``AF_INET``); some
operating systems support configurations like this and can either route packets
based on their source, or based on administratively configured routing tables.

For convenience, we also allow you to index the dictionary with the special
value ``'default'``, which returns a dictionary mapping address families to the
default gateway in each case.  Thus you can get the default IPv4 gateway with

>>> gws = netifaces.gateways()
>>> gws['default'][netifaces.AF_INET]
('10.0.1.1', 'en0')

Do note that there may be no default gateway for any given address family;
this is currently very common for IPv6 and much less common for IPv4 but it
can happen even for ``AF_INET``.

BTW, if you're trying to configure your machine to have multiple gateways for
the same address family, it's a very good idea to check the documentation for
your operating system *very* carefully, as some systems become extremely
confused or route packets in a non-obvious manner.

I'm very interested in hearing from anyone (on any platform) for whom the
``gateways()`` method doesn't produce the expected results.  It's quite
complicated extracting this information from the operating system (whichever
operating system we're talking about), and so I expect there's at least one
system out there where this just won't work.

3. This is great!  What platforms does it work on?
--------------------------------------------------

It gets regular testing on OS X, Linux and Windows.  It has also been used
successfully on Solaris, and it's expected to work properly on other UNIX-like
systems as well.  If you are running something that is not supported, and
wish to contribute a patch, please use Github to send a pull request.

4. What license is this under?
------------------------------

It's an MIT-style license. See `LICENSE <./LICENSE>`_.

5. Why the jump to 0.10.0?
--------------------------

Because someone released a fork of netifaces with the version 0.9.0.
Hopefully skipping the version number should remove any confusion.  In
addition starting with 0.10.0 Python 3 is now supported and other
features/bugfixes have been included as well.  See the CHANGELOG for a
more complete list of changes.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/al45tair/netifaces",
    "name": "netifaces",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Alastair Houghton",
    "author_email": "alastair@alastairs-place.net",
    "download_url": "https://files.pythonhosted.org/packages/a6/91/86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73/netifaces-0.11.0.tar.gz",
    "platform": "",
    "description": "netifaces 0.10.8\n================\n\n+-------------+------------------+\n| Linux/macOS | |BuildStatus|    |\n+-------------+------------------+\n| Windows     | |WinBuildStatus| |\n+-------------+------------------+\n\n.. |BuildStatus| image:: https://travis-ci.org/al45tair/netifaces.svg?branch=master\n   :target: https://travis-ci.org/al45tair/netifaces\n   :alt: Build Status (Linux/Mac)\n\n.. |WinBuildStatus| image:: https://ci.appveyor.com/api/projects/status/3ctn1bl0aigpfjoo/branch/master?svg=true\n   :target: https://ci.appveyor.com/project/al45tair/netifaces/branch/master\n   :alt: Build Status (Windows)\n\n.. warning::\n\n   netifaces needs a new maintainer.  al45tair is no longer able to maintain it\n   or make new releases due to work commitments.\n\n1. What is this?\n----------------\n\nIt's been annoying me for some time that there's no easy way to get the\naddress(es) of the machine's network interfaces from Python.  There is\na good reason for this difficulty, which is that it is virtually impossible\nto do so in a portable manner.  However, it seems to me that there should\nbe a package you can easy_install that will take care of working out the\ndetails of doing so on the machine you're using, then you can get on with\nwriting Python code without concerning yourself with the nitty gritty of\nsystem-dependent low-level networking APIs.\n\nThis package attempts to solve that problem.\n\n2. How do I use it?\n-------------------\n\nFirst you need to install it, which you can do by typing::\n\n  tar xvzf netifaces-0.10.8.tar.gz\n  cd netifaces-0.10.8\n  python setup.py install\n\n**Note that you will need the relevant developer tools for your platform**,\nas netifaces is written in C and installing this way will compile the extension.\n\nOnce that's done, you'll need to start Python and do something like the\nfollowing::\n\n>>> import netifaces\n\nThen if you enter\n\n>>> netifaces.interfaces()\n['lo0', 'gif0', 'stf0', 'en0', 'en1', 'fw0']\n\nyou'll see the list of interface identifiers for your machine.\n\nYou can ask for the addresses of a particular interface by doing\n\n>>> netifaces.ifaddresses('lo0')\n{18: [{'addr': ''}], 2: [{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}], 30: [{'peer': '::1', 'netmask': 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', 'addr': '::1'}, {'peer': '', 'netmask': 'ffff:ffff:ffff:ffff::', 'addr': 'fe80::1%lo0'}]}\n\nHmmmm.  That result looks a bit cryptic; let's break it apart and explain\nwhat each piece means.  It returned a dictionary, so let's look there first::\n\n  { 18: [...], 2: [...], 30: [...] }\n\nEach of the numbers refers to a particular address family.  In this case, we\nhave three address families listed; on my system, 18 is ``AF_LINK`` (which means\nthe link layer interface, e.g. Ethernet), 2 is ``AF_INET`` (normal Internet\naddresses), and 30 is ``AF_INET6`` (IPv6).\n\nBut wait!  Don't use these numbers in your code.  The numeric values here are\nsystem dependent; fortunately, I thought of that when writing netifaces, so\nthe module declares a range of values that you might need.  e.g.\n\n>>> netifaces.AF_LINK\n18\n\nAgain, on your system, the number may be different.\n\nSo, what we've established is that the dictionary that's returned has one\nentry for each address family for which this interface has an address.  Let's\ntake a look at the ``AF_INET`` addresses now:\n\n>>> addrs = netifaces.ifaddresses('lo0')\n>>> addrs[netifaces.AF_INET]\n[{'peer': '127.0.0.1', 'netmask': '255.0.0.0', 'addr': '127.0.0.1'}]\n\nYou might be wondering why this value is a list.  The reason is that it's\npossible for an interface to have more than one address, even within the\nsame family.  I'll say that again: *you can have more than one address of\nthe same type associated with each interface*.\n\n*Asking for \"the\" address of a particular interface doesn't make sense.*\n\nRight, so, we can see that this particular interface only has one address,\nand, because it's a loopback interface, it's point-to-point and therefore\nhas a *peer* address rather than a broadcast address.\n\nLet's look at a more interesting interface.\n\n>>> addrs = netifaces.ifaddresses('en0')\n>>> addrs[netifaces.AF_INET]\n[{'broadcast': '10.15.255.255', 'netmask': '255.240.0.0', 'addr': '10.0.1.4'}, {'broadcast': '192.168.0.255', 'addr': '192.168.0.47'}]\n\nThis interface has two addresses (see, I told you...)  Both of them are\nregular IPv4 addresses, although in one case the netmask has been changed\nfrom its default.  The netmask *may not* appear on your system if it's set\nto the default for the address range.\n\nBecause this interface isn't point-to-point, it also has broadcast addresses.\n\nNow, say we want, instead of the IP addresses, to get the MAC address; that\nis, the hardware address of the Ethernet adapter running this interface.  We\ncan do\n\n>>> addrs[netifaces.AF_LINK]\n[{'addr': '00:12:34:56:78:9a'}]\n\nNote that this may not be available on platforms without getifaddrs(), unless\nthey happen to implement ``SIOCGIFHWADDR``.  Note also that you just get the\naddress; it's unlikely that you'll see anything else with an ``AF_LINK`` address.\nOh, and don't assume that all ``AF_LINK`` addresses are Ethernet; you might, for\ninstance, be on a Mac, in which case:\n\n>>> addrs = netifaces.ifaddresses('fw0')\n>>> addrs[netifaces.AF_LINK]\n[{'addr': '00:12:34:56:78:9a:bc:de'}]\n\nNo, that isn't an exceptionally long Ethernet MAC address---it's a FireWire\naddress.\n\nAs of version 0.10.0, you can also obtain a list of gateways on your\nmachine:\n\n>>> netifaces.gateways()\n{2: [('10.0.1.1', 'en0', True), ('10.2.1.1', 'en1', False)], 30: [('fe80::1', 'en0', True)], 'default': { 2: ('10.0.1.1', 'en0'), 30: ('fe80::1', 'en0') }}\n\nThis dictionary is keyed on address family---in this case, ``AF_INET``---and\neach entry is a list of gateways as ``(address, interface, is_default)`` tuples.\nNotice that here we have two separate gateways for IPv4 (``AF_INET``); some\noperating systems support configurations like this and can either route packets\nbased on their source, or based on administratively configured routing tables.\n\nFor convenience, we also allow you to index the dictionary with the special\nvalue ``'default'``, which returns a dictionary mapping address families to the\ndefault gateway in each case.  Thus you can get the default IPv4 gateway with\n\n>>> gws = netifaces.gateways()\n>>> gws['default'][netifaces.AF_INET]\n('10.0.1.1', 'en0')\n\nDo note that there may be no default gateway for any given address family;\nthis is currently very common for IPv6 and much less common for IPv4 but it\ncan happen even for ``AF_INET``.\n\nBTW, if you're trying to configure your machine to have multiple gateways for\nthe same address family, it's a very good idea to check the documentation for\nyour operating system *very* carefully, as some systems become extremely\nconfused or route packets in a non-obvious manner.\n\nI'm very interested in hearing from anyone (on any platform) for whom the\n``gateways()`` method doesn't produce the expected results.  It's quite\ncomplicated extracting this information from the operating system (whichever\noperating system we're talking about), and so I expect there's at least one\nsystem out there where this just won't work.\n\n3. This is great!  What platforms does it work on?\n--------------------------------------------------\n\nIt gets regular testing on OS X, Linux and Windows.  It has also been used\nsuccessfully on Solaris, and it's expected to work properly on other UNIX-like\nsystems as well.  If you are running something that is not supported, and\nwish to contribute a patch, please use Github to send a pull request.\n\n4. What license is this under?\n------------------------------\n\nIt's an MIT-style license. See `LICENSE <./LICENSE>`_.\n\n5. Why the jump to 0.10.0?\n--------------------------\n\nBecause someone released a fork of netifaces with the version 0.9.0.\nHopefully skipping the version number should remove any confusion.  In\naddition starting with 0.10.0 Python 3 is now supported and other\nfeatures/bugfixes have been included as well.  See the CHANGELOG for a\nmore complete list of changes.\n\n\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Portable network interface information.",
    "version": "0.11.0",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "d11128eda69a0df8b60946c2399a80ee",
                "sha256": "eb4813b77d5df99903af4757ce980a98c4d702bbcb81f32a0b305a1537bdf0b1"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "d11128eda69a0df8b60946c2399a80ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 30744,
            "upload_time": "2021-05-31T08:32:28",
            "upload_time_iso_8601": "2021-05-31T08:32:28.094718Z",
            "url": "https://files.pythonhosted.org/packages/e9/50/0c9f1703cf67ab6605ac7c03ddf8d0a1fb6862e5ad2be349c42b40381f12/netifaces-0.11.0-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "ad279ad8b6ddc014c6fa83df1f35c865",
                "sha256": "5f9ca13babe4d845e400921973f6165a4c2f9f3379c7abfc7478160e25d196a4"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad279ad8b6ddc014c6fa83df1f35c865",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 31403,
            "upload_time": "2021-05-31T08:32:29",
            "upload_time_iso_8601": "2021-05-31T08:32:29.533093Z",
            "url": "https://files.pythonhosted.org/packages/1a/29/fedda8ef898f12af8edde0355775e1564acf358261c974f2929e9307597e/netifaces-0.11.0-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "55df88de5eb8c602ef6ecaf04ef593fc",
                "sha256": "08e3f102a59f9eaef70948340aeb6c89bd09734e0dca0f3b82720305729f63ea"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "55df88de5eb8c602ef6ecaf04ef593fc",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 30743,
            "upload_time": "2021-05-31T08:32:34",
            "upload_time_iso_8601": "2021-05-31T08:32:34.219783Z",
            "url": "https://files.pythonhosted.org/packages/0a/0f/6cd5502483369f1141dbb5335f8db145d1684b6f3ada4964cfa6b24a4b62/netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5dd8f1e6f595311eea9e4dbac09127b7",
                "sha256": "c03fb2d4ef4e393f2e6ffc6376410a22a3544f164b336b3a355226653e5efd89"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "5dd8f1e6f595311eea9e4dbac09127b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 31407,
            "upload_time": "2021-05-31T08:32:35",
            "upload_time_iso_8601": "2021-05-31T08:32:35.343612Z",
            "url": "https://files.pythonhosted.org/packages/89/b2/b0201e550aee1fb84de0a951bfb74a91b67d49a77d8cb5334b7585e40a77/netifaces-0.11.0-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5ede528d67348be34fdfeee493a9ea4b",
                "sha256": "7dbb71ea26d304e78ccccf6faccef71bb27ea35e259fb883cfd7fd7b4f17ecb1"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27m-win32.whl",
            "has_sig": false,
            "md5_digest": "5ede528d67348be34fdfeee493a9ea4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 13611,
            "upload_time": "2021-05-31T08:32:30",
            "upload_time_iso_8601": "2021-05-31T08:32:30.856402Z",
            "url": "https://files.pythonhosted.org/packages/0f/5a/e41d480218114fa48615b1f9edd9b3a952fbdce244d4d995d876b5a0d674/netifaces-0.11.0-cp27-cp27m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8f7cac5a7263322a0667288b8f2bc1ae",
                "sha256": "0f6133ac02521270d9f7c490f0c8c60638ff4aec8338efeff10a1b51506abe85"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp27-cp27m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "8f7cac5a7263322a0667288b8f2bc1ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp27",
            "requires_python": null,
            "size": 13832,
            "upload_time": "2021-05-31T08:32:32",
            "upload_time_iso_8601": "2021-05-31T08:32:32.694346Z",
            "url": "https://files.pythonhosted.org/packages/66/a4/78085681dc50af1c310791b30bf901455893cd7cfe98194e334fbc8dd6d9/netifaces-0.11.0-cp27-cp27m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "8b847c385666689ed92c43b4bc5b9cdf",
                "sha256": "73ff21559675150d31deea8f1f8d7e9a9a7e4688732a94d71327082f517fc6b4"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp34-cp34m-win32.whl",
            "has_sig": false,
            "md5_digest": "8b847c385666689ed92c43b4bc5b9cdf",
            "packagetype": "bdist_wheel",
            "python_version": "cp34",
            "requires_python": null,
            "size": 13530,
            "upload_time": "2021-05-31T08:32:36",
            "upload_time_iso_8601": "2021-05-31T08:32:36.560955Z",
            "url": "https://files.pythonhosted.org/packages/b8/cf/10693eb6d91d24916e5b12a498a5f13d150a0169922a344ffd1b4c006648/netifaces-0.11.0-cp34-cp34m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "86d337579dfd21793ebd53dce1fe226f",
                "sha256": "815eafdf8b8f2e61370afc6add6194bd5a7252ae44c667e96c4c1ecf418811e4"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "86d337579dfd21793ebd53dce1fe226f",
            "packagetype": "bdist_wheel",
            "python_version": "cp35",
            "requires_python": null,
            "size": 32066,
            "upload_time": "2021-05-31T08:32:38",
            "upload_time_iso_8601": "2021-05-31T08:32:38.102290Z",
            "url": "https://files.pythonhosted.org/packages/73/b1/a8285eb5c37592fd202037f5ccac64faf59f990b3d85a881286881ef2ba4/netifaces-0.11.0-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "889537de972afe544be5a789f0bd88ac",
                "sha256": "50721858c935a76b83dd0dd1ab472cad0a3ef540a1408057624604002fcfb45b"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "889537de972afe544be5a789f0bd88ac",
            "packagetype": "bdist_wheel",
            "python_version": "cp35",
            "requires_python": null,
            "size": 32674,
            "upload_time": "2021-05-31T08:32:39",
            "upload_time_iso_8601": "2021-05-31T08:32:39.230610Z",
            "url": "https://files.pythonhosted.org/packages/89/5c/f44769f4afa88a1e8888eb81771a00a54227d40858f81bdf9f5fc1ec110c/netifaces-0.11.0-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d543af3b2b98b5ca69451308eaa3dfd5",
                "sha256": "c9a3a47cd3aaeb71e93e681d9816c56406ed755b9442e981b07e3618fb71d2ac"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp35-cp35m-win32.whl",
            "has_sig": false,
            "md5_digest": "d543af3b2b98b5ca69451308eaa3dfd5",
            "packagetype": "bdist_wheel",
            "python_version": "cp35",
            "requires_python": null,
            "size": 15045,
            "upload_time": "2021-05-31T08:32:40",
            "upload_time_iso_8601": "2021-05-31T08:32:40.593213Z",
            "url": "https://files.pythonhosted.org/packages/6e/9d/22ac139745145a3780ef7fe70d13727015b6819462044f0148eff912b532/netifaces-0.11.0-cp35-cp35m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "be1b6ae9a56460ad5ebff5e24e813b32",
                "sha256": "aab1dbfdc55086c789f0eb37affccf47b895b98d490738b81f3b2360100426be"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp36-cp36m-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "be1b6ae9a56460ad5ebff5e24e813b32",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 12217,
            "upload_time": "2021-05-31T08:32:41",
            "upload_time_iso_8601": "2021-05-31T08:32:41.666844Z",
            "url": "https://files.pythonhosted.org/packages/ea/14/57dcb067e83a6615b60d3635cdaa05b4b7c7fa8b21a1ae5fcab5513bda20/netifaces-0.11.0-cp36-cp36m-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "341e3bd15dfe6cb03eeaaffac3b947bf",
                "sha256": "c37a1ca83825bc6f54dddf5277e9c65dec2f1b4d0ba44b8fd42bc30c91aa6ea1"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "341e3bd15dfe6cb03eeaaffac3b947bf",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 32059,
            "upload_time": "2021-05-31T08:32:42",
            "upload_time_iso_8601": "2021-05-31T08:32:42.970781Z",
            "url": "https://files.pythonhosted.org/packages/95/61/762ab93c47553a4501fbac46bbe0e27c9e80a4a9d0696917ca9c5ab2d5b9/netifaces-0.11.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "1a8fb7129c31dbad0a42190b16683de4",
                "sha256": "28f4bf3a1361ab3ed93c5ef360c8b7d4a4ae060176a3529e72e5e4ffc4afd8b0"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1a8fb7129c31dbad0a42190b16683de4",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 32680,
            "upload_time": "2021-05-31T08:32:44",
            "upload_time_iso_8601": "2021-05-31T08:32:44.014940Z",
            "url": "https://files.pythonhosted.org/packages/47/49/bf6c18d33682ec5cca15ba37f86d0a04979cfa15a9e51c86673c1831d04c/netifaces-0.11.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4feec112b5c0ac81b970dcb0d4a496ff",
                "sha256": "2650beee182fed66617e18474b943e72e52f10a24dc8cac1db36c41ee9c041b7"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp36-cp36m-win32.whl",
            "has_sig": false,
            "md5_digest": "4feec112b5c0ac81b970dcb0d4a496ff",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 15048,
            "upload_time": "2021-05-31T08:32:45",
            "upload_time_iso_8601": "2021-05-31T08:32:45.170158Z",
            "url": "https://files.pythonhosted.org/packages/40/53/42ff106997354547cdde323b8d4ceb7308feeff32e1ba5a6e44f91807e75/netifaces-0.11.0-cp36-cp36m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "397515aa000d6fa73210c1ae0ad10e49",
                "sha256": "cb925e1ca024d6f9b4f9b01d83215fd00fe69d095d0255ff3f64bffda74025c8"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp36-cp36m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "397515aa000d6fa73210c1ae0ad10e49",
            "packagetype": "bdist_wheel",
            "python_version": "cp36",
            "requires_python": null,
            "size": 16324,
            "upload_time": "2021-05-31T08:32:46",
            "upload_time_iso_8601": "2021-05-31T08:32:46.186783Z",
            "url": "https://files.pythonhosted.org/packages/fc/9f/4774897afc9d2bea18d3cb62d9a9815d03b9897387ad6e9b788a2acdf425/netifaces-0.11.0-cp36-cp36m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "16e141c05d14787719105e0fa4f67171",
                "sha256": "84e4d2e6973eccc52778735befc01638498781ce0e39aa2044ccfd2385c03246"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp37-cp37m-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "16e141c05d14787719105e0fa4f67171",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 12222,
            "upload_time": "2021-05-31T08:32:47",
            "upload_time_iso_8601": "2021-05-31T08:32:47.234846Z",
            "url": "https://files.pythonhosted.org/packages/cb/08/b02f45cde4d0a6250ced65fad02ca08b48d0938ee1d64b9880f82b27ccab/netifaces-0.11.0-cp37-cp37m-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "aad2ab3d093a9815c752cdb2f973aaac",
                "sha256": "18917fbbdcb2d4f897153c5ddbb56b31fa6dd7c3fa9608b7e3c3a663df8206b5"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "aad2ab3d093a9815c752cdb2f973aaac",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 32056,
            "upload_time": "2021-05-31T08:32:48",
            "upload_time_iso_8601": "2021-05-31T08:32:48.479366Z",
            "url": "https://files.pythonhosted.org/packages/d8/6f/3cb4f56b5298905e55fbbb8eb468e2db13375f74504d162bbaa9488a306e/netifaces-0.11.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "30bb5c3e6f43ae5193ce7955e4c84d80",
                "sha256": "48324183af7f1bc44f5f197f3dad54a809ad1ef0c78baee2c88f16a5de02c4c9"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "30bb5c3e6f43ae5193ce7955e4c84d80",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 32683,
            "upload_time": "2021-05-31T08:32:49",
            "upload_time_iso_8601": "2021-05-31T08:32:49.398856Z",
            "url": "https://files.pythonhosted.org/packages/c8/05/b41bbe076da2316f4521decf22346b1f20cb81484dc49424a9e58e6f50ae/netifaces-0.11.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "11c741dae44750f92b78a9711b9728fa",
                "sha256": "8f7da24eab0d4184715d96208b38d373fd15c37b0dafb74756c638bd619ba150"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp37-cp37m-win32.whl",
            "has_sig": false,
            "md5_digest": "11c741dae44750f92b78a9711b9728fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 15045,
            "upload_time": "2021-05-31T08:32:50",
            "upload_time_iso_8601": "2021-05-31T08:32:50.423536Z",
            "url": "https://files.pythonhosted.org/packages/15/4c/8610767d17c0cc495ad4469ec9a7c46a29714f77b783a6c79124eb291854/netifaces-0.11.0-cp37-cp37m-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d23ecd341752896509314d77a33f9d4b",
                "sha256": "2479bb4bb50968089a7c045f24d120f37026d7e802ec134c4490eae994c729b5"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp37-cp37m-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d23ecd341752896509314d77a33f9d4b",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": null,
            "size": 16330,
            "upload_time": "2021-05-31T08:32:51",
            "upload_time_iso_8601": "2021-05-31T08:32:51.694858Z",
            "url": "https://files.pythonhosted.org/packages/a9/65/eea4d675d8bb5acc243d44f93a4b5757fcda223a6817ef2864c1491fe60f/netifaces-0.11.0-cp37-cp37m-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "9984a723441b1cd63dd2cdbcbd7fe3ea",
                "sha256": "3ecb3f37c31d5d51d2a4d935cfa81c9bc956687c6f5237021b36d6fdc2815b2c"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp38-cp38-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9984a723441b1cd63dd2cdbcbd7fe3ea",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 12264,
            "upload_time": "2021-05-31T08:32:52",
            "upload_time_iso_8601": "2021-05-31T08:32:52.696761Z",
            "url": "https://files.pythonhosted.org/packages/1d/b4/0ba3c00f8bbbd3328562d9e7158235ffe21968b88a21adf5614b019e5037/netifaces-0.11.0-cp38-cp38-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5011081fca3de01f913c97e4c8419286",
                "sha256": "96c0fe9696398253f93482c84814f0e7290eee0bfec11563bd07d80d701280c3"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "5011081fca3de01f913c97e4c8419286",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 33185,
            "upload_time": "2021-05-31T08:32:53",
            "upload_time_iso_8601": "2021-05-31T08:32:53.613806Z",
            "url": "https://files.pythonhosted.org/packages/13/d3/805fbf89548882361e6900cbb7cc50ad7dec7fab486c5513be49729d9c4e/netifaces-0.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "61dd6d07b08b4290ad7e612df6c1a802",
                "sha256": "c92ff9ac7c2282009fe0dcb67ee3cd17978cffbe0c8f4b471c00fe4325c9b4d4"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "61dd6d07b08b4290ad7e612df6c1a802",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 33922,
            "upload_time": "2021-05-31T08:32:55",
            "upload_time_iso_8601": "2021-05-31T08:32:55.030784Z",
            "url": "https://files.pythonhosted.org/packages/77/6c/eb2b7c9dbbf6cd0148fda0215742346dc4d45b79f680500832e8c6457936/netifaces-0.11.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "567384c1b15f4d2e43274a43f5eef22a",
                "sha256": "d07b01c51b0b6ceb0f09fc48ec58debd99d2c8430b09e56651addeaf5de48048"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "567384c1b15f4d2e43274a43f5eef22a",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 15178,
            "upload_time": "2021-05-31T08:32:56",
            "upload_time_iso_8601": "2021-05-31T08:32:56.028314Z",
            "url": "https://files.pythonhosted.org/packages/9f/29/7accc0545b1e39c9ac31b0074c197a5d7cfa9aca21a7e3f6aae65c145fe5/netifaces-0.11.0-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5b7fa60403814cbbaaf778af08aecf0e",
                "sha256": "469fc61034f3daf095e02f9f1bbac07927b826c76b745207287bc594884cfd05"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5b7fa60403814cbbaaf778af08aecf0e",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": null,
            "size": 16449,
            "upload_time": "2021-05-31T08:32:56",
            "upload_time_iso_8601": "2021-05-31T08:32:56.956757Z",
            "url": "https://files.pythonhosted.org/packages/d7/6c/d24d9973e385fde1440f6bb83b481ac8d1627902021c6b405f9da3951348/netifaces-0.11.0-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "eba522f146f3f71edd5310a70c449e57",
                "sha256": "5be83986100ed1fdfa78f11ccff9e4757297735ac17391b95e17e74335c2047d"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp39-cp39-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "eba522f146f3f71edd5310a70c449e57",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 12265,
            "upload_time": "2021-05-31T08:32:58",
            "upload_time_iso_8601": "2021-05-31T08:32:58.284671Z",
            "url": "https://files.pythonhosted.org/packages/dd/51/316a0e27e015dff0573da8a7629b025eb2c10ebbe3aaf6a152039f233972/netifaces-0.11.0-cp39-cp39-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "4bbac3ebf528bbc3825eddc3717284f1",
                "sha256": "54ff6624eb95b8a07e79aa8817288659af174e954cca24cdb0daeeddfc03c4ff"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4bbac3ebf528bbc3825eddc3717284f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 12475,
            "upload_time": "2021-05-31T08:32:59",
            "upload_time_iso_8601": "2021-05-31T08:32:59.350783Z",
            "url": "https://files.pythonhosted.org/packages/c0/8c/b8d1e0bb4139e8b9b8acea7157c4106eb020ea25f943b364c763a0edba0a/netifaces-0.11.0-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "06b00fc16be2b5279fbed3861109ff7a",
                "sha256": "841aa21110a20dc1621e3dd9f922c64ca64dd1eb213c47267a2c324d823f6c8f"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "06b00fc16be2b5279fbed3861109ff7a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 32074,
            "upload_time": "2021-05-31T08:33:00",
            "upload_time_iso_8601": "2021-05-31T08:33:00.508684Z",
            "url": "https://files.pythonhosted.org/packages/f1/52/2e526c90b5636bfab54eb81c52f5b27810d0228e80fa1afac3444dd0cd77/netifaces-0.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "b22bd98bb09fb8ec640d85505e1356b2",
                "sha256": "e76c7f351e0444721e85f975ae92718e21c1f361bda946d60a214061de1f00a1"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b22bd98bb09fb8ec640d85505e1356b2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": null,
            "size": 32680,
            "upload_time": "2021-05-31T08:33:01",
            "upload_time_iso_8601": "2021-05-31T08:33:01.479554Z",
            "url": "https://files.pythonhosted.org/packages/6b/07/613110af7b7856cf0bea173a866304f5476aba06f5ccf74c66acc73e36f1/netifaces-0.11.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "3146dcb3297dd018ae5eb9a52b440419",
                "sha256": "043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32"
            },
            "downloads": -1,
            "filename": "netifaces-0.11.0.tar.gz",
            "has_sig": false,
            "md5_digest": "3146dcb3297dd018ae5eb9a52b440419",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 30106,
            "upload_time": "2021-05-31T08:33:02",
            "upload_time_iso_8601": "2021-05-31T08:33:02.506796Z",
            "url": "https://files.pythonhosted.org/packages/a6/91/86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73/netifaces-0.11.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2021-05-31 08:33:02",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "al45tair",
    "github_project": "netifaces",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": false,
    "appveyor": true,
    "lcname": "netifaces"
}
        
Elapsed time: 0.02134s