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.
Project description
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')>]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
listmodel-0.2.1.tar.gz
(3.5 kB
view details)
File details
Details for the file listmodel-0.2.1.tar.gz.
File metadata
- Download URL: listmodel-0.2.1.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bb4521a4137f4db57c55f6d07e66d32af302d8bf032dff6fb6161d3d42ceae5
|
|
| MD5 |
f07f163b88396e98eeaa23a23e836c8b
|
|
| BLAKE2b-256 |
becd4feec82e8c678719159da68e0666cab3fb12d452534993a12e3fb2fb6a0c
|