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)
| 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 |