{"id":15569443,"url":"https://github.com/johnthagen/pytap2","last_synced_at":"2025-05-06T21:27:01.730Z","repository":{"id":46209431,"uuid":"94583781","full_name":"johnthagen/pytap2","owner":"johnthagen","description":"Object oriented interface to Linux Tun/Tap devices for Python 3","archived":false,"fork":false,"pushed_at":"2024-03-20T17:34:04.000Z","size":40,"stargazers_count":16,"open_issues_count":3,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-01T13:52:19.814Z","etag":null,"topics":["linux","networking","python","python3","tap","tun"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pytap2/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnthagen.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-06-16T21:50:45.000Z","updated_at":"2025-04-09T10:12:01.000Z","dependencies_parsed_at":"2022-07-23T10:34:28.517Z","dependency_job_id":"b7116fb6-fca6-4e98-bf92-508603d89dd4","html_url":"https://github.com/johnthagen/pytap2","commit_stats":{"total_commits":52,"total_committers":2,"mean_commits":26.0,"dds":"0.15384615384615385","last_synced_commit":"87e411e384eb7946c203b3a4e0416ba138da4382"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnthagen%2Fpytap2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnthagen%2Fpytap2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnthagen%2Fpytap2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnthagen%2Fpytap2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnthagen","download_url":"https://codeload.github.com/johnthagen/pytap2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252771135,"owners_count":21801654,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["linux","networking","python","python3","tap","tun"],"created_at":"2024-10-02T17:28:56.603Z","updated_at":"2025-05-06T21:27:01.710Z","avatar_url":"https://github.com/johnthagen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"``pytap2`` - Object oriented interface to Linux Tun/Tap devices\n===============================================================\n\n.. image:: https://github.com/johnthagen/pytap2/workflows/python/badge.svg\n    :target: https://github.com/johnthagen/pytap2/actions\n\n.. image:: https://codeclimate.com/github/johnthagen/pytap2/badges/gpa.svg\n   :target: https://codeclimate.com/github/johnthagen/pytap2\n\n.. image:: https://codeclimate.com/github/johnthagen/pytap2/badges/issue_count.svg\n   :target: https://codeclimate.com/github/johnthagen/pytap2\n\n.. image:: https://codecov.io/github/johnthagen/pytap2/coverage.svg\n    :target: https://codecov.io/github/johnthagen/pytap2\n\n.. image:: https://img.shields.io/pypi/v/pytap2.svg\n    :target: https://pypi.python.org/pypi/pytap2\n\n.. image:: https://img.shields.io/pypi/status/pytap2.svg\n    :target: https://pypi.python.org/pypi/pytap2\n\n.. image:: https://img.shields.io/pypi/pyversions/pytap2.svg\n    :target: https://pypi.python.org/pypi/pytap2/\n\nFork of `PyTap \u003chttps://pypi.python.org/pypi/PyTap/\u003e`_ that supports Python 3.\n\nRequirements\n------------\n\nThe ``ifconfig`` command line utility must be installed for ``pytap2`` to operate.\n\nTo install ``ifconfig`` on Debian/Ubuntu:\n\n.. code:: shell-session\n\n    $ sudo apt install net-tools\n\nTo install ``ifconfig`` on RHEL/Rocky Linux/Fedora:\n\n.. code:: shell-session\n\n    $ sudo yum install net-tools\n\nInstallation\n------------\n\nYou can install, upgrade, and uninstall ``pytap2`` with these commands:\n\n.. code:: shell-session\n\n    $ pip install pytap2\n    $ pip install --upgrade pytap2\n    $ pip uninstall pytap2\n\nUsage\n-----\n\nUsing as a context manager automatically brings up the device and closes it at the\nend of the ``with`` block.\n\n.. code:: python\n\n    from pytap2 import TapDevice\n\n    with TapDevice() as device:\n        device.ifconfig(mtu=1300)\n        device.write(b'0000')\n\nOr manually call ``up()`` and ``close()``.\n\n.. code:: python\n\n    from pytap2 import TapDevice\n\n    device = TapDevice()\n    device.up()\n    device.ifconfig(mtu=1300)\n    device.write(b'0000')\n    device.close()\n\nThe ``fileno()`` method is defined, so that the device object can be passed directly\nto `select() \u003chttps://docs.python.org/library/select.html#select.select\u003e`_.\n\nReleases\n--------\n\nUnreleased\n^^^^^^^^^^\n\n- Support Python 3.12.\n\n2.3.0 - 2023-04-28\n^^^^^^^^^^^^^^^^^^\n\n- Drop Python 3.7 and support Python 3.11\n- Support Mypy type checking for users\n\n2.2.0 - 2021-11-06\n^^^^^^^^^^^^^^^^^^\n\n- Drop Python 3.6 and support Python 3.10.\n- Document dependency on ``ifconfig``\n\n2.1.0 - 2020-12-30\n^^^^^^^^^^^^^^^^^^\n\n- Drop Python 3.5 and support Python 3.9.\n- Switch to GitHub Actions for CI.\n\n2.0.0 - 2020-03-29\n^^^^^^^^^^^^^^^^^^\n\n- Drop Python 2.7.\n\n1.6.0 - 2019-12-15\n^^^^^^^^^^^^^^^^^^\n\n- Drop Python 3.4 and support Python 3.8.\n- Include license file.\n\n1.5.0 - 2018-07-09\n^^^^^^^^^^^^^^^^^^\n\nSupport Python 3.7.\n\n1.4.0 - 2017-10-24\n^^^^^^^^^^^^^^^^^^\n\nAllow disabling packet information header (``IFF_NO_PI``) and default ``read()`` to read entire\nMTU worth of data plus the packet information header if present.\n\n1.3.0 - 2017-07-31\n^^^^^^^^^^^^^^^^^^\n\nAdd ``fileno()`` method to support ``select()`` calls.\n\n1.2.0 - 2017-06-19\n^^^^^^^^^^^^^^^^^^\n\nContext manager support added.\n\n1.1.0 - 2017-06-17\n^^^^^^^^^^^^^^^^^^\n\nAllow ``read()`` to be called with a specific number of bytes to read.\n\n\n1.0.0 - 2017-06-16\n^^^^^^^^^^^^^^^^^^\n\nInitial release that supports Python 2 and 3.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnthagen%2Fpytap2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnthagen%2Fpytap2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnthagen%2Fpytap2/lists"}