This release is a pre-release and may not be stable for production use.
Hierarchical Configuration
Hierarchical Configuration, also known as hier_config, is a Python library designed to query and compare network devices configurations. Among other capabilities, it can compare the running config to an intended configuration to determine the commands necessary to bring a device into compliance with its intended configuration.
Hierarchical Configuration has been used extensively on:
- Cisco IOS
- Cisco IOSXR
- Cisco NXOS
- Arista EOS
- Fortinet FortiOS
- HP Procurve (Aruba AOSS)
- HP Comware5 / H3C
- Huawei VRP
In addition to the Cisco-style syntax, hier_config offers experimental support for Juniper-style configurations using set and delete commands. This allows users to remediate Junos configurations in native syntax. However, please note that Juniper syntax support is still in an experimental phase and has not been tested extensively. Use with caution in production environments.
- Juniper JunOS
- Nokia SRL (Service Router Linux)
- Ruckus/Brocade FastIron (ICX)
- VyOS
Newer drivers start life as experimental until they have seen wider production use — currently Aruba AOS-CX joins the list above in that status. See Supported Platforms for the authoritative per-platform status.
Hier Config is compatible with any NOS that utilizes a structured CLI syntax similar to Cisco IOS or Junos OS.
The code documentation can be found at: Hier Config documentation.
Why hier_config?
Network devices continuously drift from their intended state — VLANs appear, ACL entries change, BGP timers shift. hier_config solves this by parsing configuration text into a hierarchical tree and performing deterministic, line-level diffs that respect the vendor's own syntax rules. Rather than string-matching raw text, it understands the structure of commands so that remediation output is minimal, ordered, and safe to apply.
Highlights
- Predict the device state before deploying with
future()— and audit ambiguous negation resolution explicitly withfuture_with_report(). - Build remediation workflows with deterministic diffs across Cisco-style and Junos-style configuration syntaxes.
- Ingest and render structured configs: JSON and XML loading, NETCONF
edit-configpayloads, and gNMI-style JSON remediation. - Tag remediation lines and filter output with tag-based rules for phased or conditional deployment.
- Extend the pipeline with
RemediationPlugintransforms and register custom platform drivers at runtime. - Aggregate and analyse changes across a fleet with RemediationReporter.
- Render structured, typed interface data with the Config View abstraction.
See the Architecture Overview for how the tree, driver, and workflow layers fit together.
Installation
PIP
Version 4 is currently published as a prerelease; pip skips prereleases by default, so pass --pre:
pip install --pre hier-config
(The Quick Start below uses the v4 API. pip install hier-config without --pre installs the latest stable v3 release — see the v3 documentation for that API.)
Quick Start
Step 1: Import Required Classes
from hier_config import WorkflowRemediation, HConfig, Platform
from hier_config.utils import read_text_from_file
Step 2: Load Configurations
Load the running and intended configurations as strings:
running_config_text = read_text_from_file("./tests/fixtures/running_config.conf")
generated_config_text = read_text_from_file("./tests/fixtures/generated_config.conf")
Step 3: Create HConfig Objects
Specify the device platform (e.g., Platform.CISCO_IOS):
running_config = HConfig.from_text(Platform.CISCO_IOS, running_config_text)
generated_config = HConfig.from_text(Platform.CISCO_IOS, generated_config_text)
Step 4: Initialize WorkflowRemediation
Compare configurations and generate remediation steps:
workflow = WorkflowRemediation(running_config, generated_config)
print("Remediation Configuration:")
print(workflow.remediation_config)
This guide gets you started with Hier Config in minutes! For more details, visit Hier Config Documentation Site.
Metadata
Release files for hier-config 4.0.0b4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hier_config-4.0.0b4.tar.gz | 281.4 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| hier_config-4.0.0b4-cp311-abi3-win_arm64.whl | CPython 3.11 | abi3 | Windows ARM64 | Details |
| hier_config-4.0.0b4-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_x86_64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ x86-64 | Details |
| hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_aarch64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ ARM64 | Details |
| hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| hier_config-4.0.0b4-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| hier_config-4.0.0b4-cp311-abi3-macosx_10_12_x86_64.whl | CPython 3.11 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 15.2 MB
Release files / hier_config-4.0.0b4.tar.gz
| Download URL | hier_config-4.0.0b4.tar.gz |
|---|---|
| Size | 281.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7c54a9fb991102ae68a1921171a29a494e4019c39fd8afd617235b0e06e375f5
|
|
BLAKE2b-256 checksum How to use checksums |
10b02e87d35ee2bc99bda1c9eb09cf29c94f40173e2d543e6ee76460cedf9724
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-win_arm64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-win_arm64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.11 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
717b56869b3a025954983274a2771217da3ff04dd701c9eafac65da4f3b84f02
|
|
BLAKE2b-256 checksum How to use checksums |
cdc6b839139464fe6a9e674eedab675acf24f762477ccc47c0f77a4faf9a9cc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-win_amd64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3617a08506f38afa3a51e7d9c57bcc18b9da0981f5bf733f3a73ea9cd928b0c5
|
|
BLAKE2b-256 checksum How to use checksums |
7e136ac834187e8d55c3dec81372b80e9f0c181bb52c7070508b3a746e4e647b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5cd892f98c610ee3afbb8e810090aa52d849a55b49720d77909c4a2d21c12519
|
|
BLAKE2b-256 checksum How to use checksums |
ffd4d8011a82617c8a824692444774b01f075cf8d95ce2bc97c5fa2fa8c6e610
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 2.0 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
66b7504ddd2b1927b9b9e339927b00acf9bace390f9b94d52dfe00a0b0a2f134
|
|
BLAKE2b-256 checksum How to use checksums |
e733f9379888924d1110fe287fe1e0d1475fcea089650f008887f11de0bb1b7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.9 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
509e808c4974d2eb11c65b93501aa81033ee415dc2d9dfe35535e5dace7fa591
|
|
BLAKE2b-256 checksum How to use checksums |
d6515be026c807f9fe219c68ce6da0bf6e9363a69c9b2f5dc25a1a0aaecc1d58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d93f92eaa869b1b33d89d26a48402694002d106d7eb83213fa677d6ecaef2fc6
|
|
BLAKE2b-256 checksum How to use checksums |
05b4421bb1916a4e7965a98f798715a9dedb720bef79d460fe1624e3829aa9c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3058a52d5a33f003b5b52750e15be2c88af92797869c03d4066fe8d7e00dfb20
|
|
BLAKE2b-256 checksum How to use checksums |
11fdfab9a9ed4fce61e11b140a31ef78d281fe45fe507a9d8bfd452df664c14f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / hier_config-4.0.0b4-cp311-abi3-macosx_10_12_x86_64.whl
| Download URL | hier_config-4.0.0b4-cp311-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
967d19e89f493fbf2601f8da56b0e6b24f8a213a68fcb9469404e019c6827ddf
|
|
BLAKE2b-256 checksum How to use checksums |
211901f1d4d662172e25e8a7be873de4800e2e19f989df1122db24bc9a7accaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|