Skip to main content

A utility to calculate ipv4, ipv6 network information.

Project description

PyIPCalc

A comprehensive utility to calculate IPv4 and IPv6 network information with support for multiple input formats and detailed output including hexadecimal representations and subnet possibilities.

Features

  • IPv4 Support: Calculate network information for IPv4 addresses
  • IPv6 Support: Full IPv6 network calculation support
  • Multiple Input Formats:
    • CIDR notation (192.168.1.0/24, 2001:db8::/32)
    • Decimal netmask (192.168.1.0/255.255.255.0)
    • IPv6 compressed format (::1, ::ffff:192.168.1.1)
  • Comprehensive Output:
    • Network, broadcast, and host range information
    • Hexadecimal and binary representations (IPv4)
    • Possible subnet divisions
    • Network class information (IPv4)
  • Multiple Usage Options: Command-line script, Python module, or python -m execution

Installation

pip install pyipcalc

For development:

git clone https://github.com/fxyzbtc/pyipcalc.git
cd pyipcalc
uv install

Usage

As a Command-Line Tool

# IPv4 with CIDR notation
pyipcalc 192.168.1.0/24

# IPv4 with decimal netmask
pyipcalc 192.168.1.0/255.255.255.0

# IPv6 network
pyipcalc 2001:db8::/32

# With verbose output
pyipcalc -v 10.0.0.0/8

# Quiet mode (results only)
pyipcalc -q 172.16.0.0/12

As a Python Module

python -m pyipcalc 192.168.1.0/24

In Python Code

from pyipcalc import IPCalculator, DisplayFormatter

# Calculate network information
result = IPCalculator.calculate("192.168.1.0/24")

# Display formatted output
print(DisplayFormatter.format_output(result))

# Access specific information
print(f"Network: {result.network}")
print(f"Usable hosts: {result.usable_hosts}")
print(f"Hexadecimal: {result.network_hex}")

Output Examples

IPv4 Example

=== IPv4 Network Information ===
Network:           192.168.1.0/24
Netmask:           255.255.255.0
Wildcard:          0.0.0.255
Broadcast:         192.168.1.255
Network Class:     C

=== Host Range ===
First Host:        192.168.1.1
Last Host:         192.168.1.254
Total Hosts:       256
Usable Hosts:      254

=== Hexadecimal Format ===
Network (Hex):     C0.A8.01.00
Netmask (Hex):     FF.FF.FF.00
Broadcast (Hex):   C0.A8.01.FF
First Host (Hex):  C0.A8.01.01
Last Host (Hex):   C0.A8.01.FE

=== Binary Format ===
Network (Binary):  11000000.10101000.00000001.00000000
Netmask (Binary):  11111111.11111111.11111111.00000000

=== Possible Subnet Divisions ===
  /25 (2 subnets)
  /26 (4 subnets)
  /27 (8 subnets)
  /28 (16 subnets)
  /29 (32 subnets)
  /30 (64 subnets)

IPv6 Example

=== IPv6 Network Information ===
Network:           2001:db8::/32
Prefix Length:     /32

=== Address Formats ===
Compressed:        2001:db8::
Expanded:          2001:0db8:0000:0000:0000:0000:0000:0000
Hexadecimal:       20010db8000000000000000000000000

=== Host Range ===
First Host:        2001:db8::
Last Host:         2001:db8:ffff:ffff:ffff:ffff:ffff:ffff
Total Hosts:       79,228,162,514,264,337,593,543,950,336

=== Possible Subnet Divisions ===
  /48 (65536 subnets)
  /56 (16777216 subnets)
  /60 (268435456 subnets)
  /64 (4294967296 subnets)

Supported Input Formats

  • IPv4 CIDR: 192.168.1.0/24
  • IPv4 with decimal netmask: 192.168.1.0/255.255.255.0
  • IPv6 CIDR: 2001:db8::/32
  • IPv6 compressed: ::1/128, ::ffff:192.168.1.1/96
  • Single IP addresses: Automatically assumes /32 for IPv4 and /128 for IPv6

Development

Setup Development Environment

git clone https://github.com/fxyzbtc/pyipcalc.git
cd pyipcalc
uv venv
uv install

Running Tests

uv run pytest

Code Style

This project uses ruff for code formatting and linting:

uv run ruff check
uv run ruff format

Pain Points Solved

  • Multiple Format Support: No need to convert between different IP notation formats
  • Comprehensive Information: Get all network details in one command
  • Hexadecimal Output: Essential for network programming and debugging
  • Subnet Planning: See possible subnet divisions at a glance
  • Cross-Platform: Works on Windows, macOS, and Linux
  • Multiple Interfaces: Use as CLI tool, Python module, or import in code

Links

License

This project is licensed under the MIT License.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyipcalc-0.1.2.tar.gz (10.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyipcalc-0.1.2-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file pyipcalc-0.1.2.tar.gz.

File metadata

  • Download URL: pyipcalc-0.1.2.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.25

File hashes

Hashes for pyipcalc-0.1.2.tar.gz
Algorithm Hash digest
SHA256 5ead2bdce41502dd18e51031c62dd27e5400a54b54260f32ac11d8a3f18c6619
MD5 7798178ec677486050997701c81bbb87
BLAKE2b-256 040386a4101831c175b17ae03a6fab0b4cb1985cb97f9452254b8d7a9d7e3b3a

See more details on using hashes here.

File details

Details for the file pyipcalc-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pyipcalc-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.25

File hashes

Hashes for pyipcalc-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d2b92735d3dbaf986936db26000dea24933a351a695b49c91d07782ebb55adb2
MD5 080b87a606c27cc0da479ea46744b7c9
BLAKE2b-256 3e922e9d848a9c06bb5ea6f50615716d6ff3e9e6d13d5d1d0b02e1b98f4e55be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page