🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more

port-range

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

port-range

Port range with support of CIDR-like notation.

2.2.0
Maintainers
6

Port Range

Like Python's standard library ipaddress package <https://docs.python.org/dev/library/ipaddress.html>, but for ports <https://en.wikipedia.org/wiki/Port_(computer_networking)>.

Stable release: |release| |versions| |license| |dependencies|

Development: |build| |coverage| |quality|

.. |release| image:: https://img.shields.io/pypi/v/port-range.svg :target: https://pypi.python.org/pypi/port-range :alt: Last release .. |versions| image:: https://img.shields.io/pypi/pyversions/port-range.svg :target: https://pypi.python.org/pypi/port-range :alt: Python versions .. |license| image:: https://img.shields.io/pypi/l/port-range.svg :target: https://opensource.org/licenses/BSD-2-Clause :alt: Software license .. |dependencies| image:: https://requires.io/github/scaleway/port-range/requirements.svg?branch=master :target: https://requires.io/github/scaleway/port-range/requirements/?branch=master :alt: Requirements freshness .. |build| image:: https://travis-ci.org/scaleway/port-range.svg?branch=develop :target: https://travis-ci.org/scaleway/port-range :alt: Unit-tests status .. |coverage| image:: https://codecov.io/gh/scaleway/port-range/branch/develop/graph/badge.svg :target: https://codecov.io/github/scaleway/port-range?branch=develop :alt: Coverage Status .. |quality| image:: https://scrutinizer-ci.com/g/scaleway/port-range/badges/quality-score.png?b=develop :target: https://scrutinizer-ci.com/g/scaleway/port-range/?branch=develop :alt: Code Quality

Features

Support CIDR-like notation:

.. code-block:: python

>>> from port_range import PortRange
>>> pr = PortRange('1027/15')
>>> pr.port_from
1027
>>> pr.port_to
1028
>>> pr.bounds
(1027, 1028)

Parse and normalize port ranges:

.. code-block:: python

>>> pr = PortRange(' 4242-42 ')
>>> pr.bounds
(42, 4242)
>>> str(pr)
'42-4242'

Enforce strong validation in strict mode:

.. code-block:: python

>>> PortRange(' 4242-42 ', strict=True)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "port_range/__init__.py", line 62, in __init__
    self.port_from, self.port_to = self.parse(port_range)
  File "port_range/__init__.py", line 109, in parse
    raise ValueError("Invalid reversed port range.")
ValueError: Invalid reversed port range.

Access to decimal-representation properties:

.. code-block:: python

>>> pr = PortRange('1027/15')
>>> pr.base
1027
>>> pr.prefix
15
>>> pr.mask
1
>>> pr.offset
3

License

This software is licensed under the BSD 2-Clause License_.

.. _BSD 2-Clause License: https://github.com/scaleway/port-range/blob/develop/LICENSE.rst

Changes for v2.2.0 (2019-09-19) <https://github.com/scaleway/port-range/compare/v2.1.0...v2.2.0>_

  • Fix Travis build
  • Implement equality and hash operators
  • Fix deprecated collections warning

Full changelog <https://github.com/scaleway/port-range/blob/develop/CHANGES.rst#changelog>_.

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts