Python bindings for BGPKIT software. For all software offerings, please check out our GitHub repository at https://github.com/bgpkit.
See the bgpkit-parser-py documentation for the full API.
import bgpkit
# Full element parsing
parser = bgpkit.Parser(url="https://spaces.bgpkit.org/parser/update-example",
filters={"peer_ips": "185.1.8.65, 2001:7f8:73:0:3:fa4:0:1"})
for elem in parser:
print(elem)
# Route-level parsing (faster, fewer fields)
for route in bgpkit.RouteParser(url="https://spaces.bgpkit.org/parser/update-example"):
print(route.prefix, route.as_path)
# Reusable filter objects
from bgpkit import Filter
f = Filter.peer_ip("185.1.8.65")
parser = bgpkit.Parser.from_filters(url, [f])import bgpkit
broker = bgpkit.Broker()
# Search MRT data files
items = broker.query(ts_start="2024-01-01T00:00:00Z", ts_end="2024-01-01T01:00:00Z")
print(len(items))
# Get latest files
latest = broker.latest()
# Query peer information
peers = broker.peers(asn=13335, full_feed=True)
# List collectors
collectors = broker.collectors(project="routeviews", active=True)ip_info = bgpkit.IpLookup().query("1.1.1.1")
print(ip_info.country, ip_info.as_number, ip_info.as_name)result = bgpkit.AsnLookup().query(asn="13335", country="US")
for asn in result.data:
print(asn.asn, asn.name, asn.country)entries = bgpkit.CommunityLookup().query(asn="13335", page_size=50)
for entry in entries:
print(entry.value, entry.description)
sources = bgpkit.CommunityLookup().sources()roas = bgpkit.Roas()
data = roas.query(asn=3333, date="2018-01-01")
for entry in data:
print(entry.prefix, entry.asn, entry.tal)
# Current ROAs only
current = roas.query(prefix="1.1.1.0/24", current=True)Push a version tag to build and publish automatically via GitHub Actions:
git tag v0.7.0
git push origin v0.7.0
Manual release:
python -m pip install --upgrade build twine
python -m build
twine upload --skip-existing dist/*
PyPI Trusted Publishing is configured for automated releases. See .github/workflows/release.yml.