Skip to main content

Listmodel

Listmodel is a Python library for object mappings for various list sources (XML documents, CSV documents, text documents, JSON/YAML objects) in a unified manner. Inspiration was taken from QML XmlListModel.

Basic usage

>>> from listmodel import XMLDoc, QueryAttr, set_name
>>> xml = u"""<bookshelf>
...         <name>My Bookshelf</name>
...         <book>
...             <title>1984</title>
...             <author>Orwell, George</author>
...             <isbn>978-0-452-28423-4</isbn>
...             <chapter id="1">...</chapter>
...             <chapter id="2">...</chapter>
...             <chapter id="3">...</chapter>
...         </book>
...         <book>
...             <title>The man in the high castle</title>
...             <author>Dick, Philip K.</author>
...             <isbn>0679740678</isbn>
...             <chapter id="1">...</chapter>
...             <chapter id="2">...</chapter>
...             <chapter id="3">...</chapter>
...         </book>
...     </bookshelf>
... """
>>> class Bookshelf(XMLDoc):
...     class Iterable(XMLDoc):
...         __query__ = "/bookshelf/book"
...
...         @set_name("Chapter")
...         class Iterable(XMLDoc):
...             __query__ = "chapter"
...             id = QueryAttr("@id")
...
...         isbn = QueryAttr("isbn/text()")
...         title = QueryAttr("title/text()")
...         author = QueryAttr("author/text()")
...
...         @QueryAttr("author/text()")
...         def author_first_name(self, value):
...             return value.split(", ")[1]
...
...     name = QueryAttr("/bookshelf/name/text()")
>>> shelf = Bookshelf.fromstring(xml)
>>> shelf
<Bookshelf (name='My Bookshelf')>
>>> shelf.name
'My Bookshelf'
>>> books = list(shelf)
>>> len(books)
2
>>> books[1].title
'The man in the high castle'
>>> books[1].author_first_name
'Philip K.'
>>> list(books[0])
[<Chapter (id='1')>, <Chapter (id='2')>, <Chapter (id='3')>]

Metadata

Release files for listmodel 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for listmodel 0.2.1
File Size Uploaded
listmodel-0.2.1.tar.gz 3.5 kB Details

Release files / listmodel-0.2.1.tar.gz

Download URL listmodel-0.2.1.tar.gz
Size 3.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9bb4521a4137f4db57c55f6d07e66d32af302d8bf032dff6fb6161d3d42ceae5
BLAKE2b-256 checksum
How to use checksums
becd4feec82e8c678719159da68e0666cab3fb12d452534993a12e3fb2fb6a0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

1 release file

0.2.0

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page