SkillAgentSearch skills...

Untangle

Converts XML to Python objects

Install / Use

/learn @stchris/Untangle
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

untangle

Build Status PyPi version <a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>

Documentation

  • Converts XML to a Python object.
  • Siblings with similar names are grouped into a list.
  • Children can be accessed with parent.child, attributes with element['attribute'].
  • You can call the parse() method with a filename, an URL or an XML string.
  • Substitutes -, . and : with _ <foobar><foo-bar/></foobar> can be accessed with foobar.foo_bar, <foo.bar.baz/> can be accessed with foo_bar_baz and <foo:bar><foo:baz/></foo:bar> can be accessed with foo_bar.foo_baz

Installation

With pip:

pip install untangle

Usage

(See and run <a href="https://github.com/stchris/untangle/blob/main/examples.py">examples.py</a> or this blog post: Read XML painlessly for more info)

import untangle
obj = untangle.parse(resource)

resource can be:

  • a URL
  • a filename
  • an XML string

Running the above code and passing this XML:

<?xml version="1.0"?>
<root>
	<child name="child1"/>
</root>

allows it to be navigated from the untangled object like this:

obj.root.child['name'] # u'child1'

Development

untangle uses uv for builds and virtualenv management:

$ uv sync

Run tests:

$ uv run pytest

Run linter:

$ uv run ruff check .

Run formatter checks:

$ uv run ruff format --check

Run type hint checks:

$ uv run ty check .

Changelog

see CHANGELOG.md

Related Skills

View on GitHub
GitHub Stars631
CategoryDevelopment
Updated12d ago
Forks88

Languages

Python

Security Score

100/100

Audited on Mar 25, 2026

No findings