msg153318 - (view) |
Author: Eli Bendersky (eli.bendersky) *  |
Date: 2012-02-14 03:28 |
The documentation of xml.etree.ElementTree has to be improved. The first, very obvious step, would be to start the documentation page with a general overview of the module + some simple examples. The current opening section makes no sense for this module.
|
msg153334 - (view) |
Author: Stefan Behnel (scoder) *  |
Date: 2012-02-14 11:00 |
Both lxml and ElementTree have tutorials:
http://effbot.org/zone/element.htm
http://lxml.de/tutorial.html
Here is another tutorial that may server as a source for an intro:
http://infohost.nmt.edu/tcc/help/pubs/pylxml/web/index.html
And the general ET documentation is here:
http://effbot.org/zone/element-index.htm#documentation
In terms of licensing, I can't speak for any of the other sources, but as for the lxml documentation, feel free to copy any ET related parts of it that you see fit.
I think the lxml tutorial is gentle enough even for beginners to follow. Note, however, that it uses lxml specific APIs in some places. In the specific case of XPath, the examples should be easily replaced with ElementPath, though.
|
msg153335 - (view) |
Author: Stefan Behnel (scoder) *  |
Date: 2012-02-14 11:03 |
Oh, and here are the ReST sources of the lxml docs:
https://github.com/lxml/lxml/tree/master/doc/
Specifically the tutorial:
https://raw.github.com/lxml/lxml/master/doc/tutorial.txt
and the parsing part:
https://raw.github.com/lxml/lxml/master/doc/parsing.txt
|
msg153899 - (view) |
Author: Leon Matthews (leonov) |
Date: 2012-02-21 20:33 |
The ElementTree.py module has good JavaDoc-style function-level documentation, but as it's not in docstring format, it can't be seen from the interactive help.
I'd be willing to convert the current comments into docstrings, as long as I wouldn't be stepping on anybody's toes, and somebody could give me some guidance as to how to convert the @return and @param declarations, and how to handle the C version of the module.
Any volunteers?
|
msg154030 - (view) |
Author: Éric Araujo (eric.araujo) *  |
Date: 2012-02-23 01:27 |
> The ElementTree.py module has good JavaDoc-style function-level documentation, but as it's not
> in docstring format, it can't be seen from the interactive help.
>
> I'd be willing to convert the current comments into docstrings, as long as I wouldn't be
> stepping on anybody's toes,
Great, thanks! I don’t know if the best approach here is to add lengthy docstrings or move the information from the comments into the reST docs. Maybe this should be asked on the core-mentorship or python-dev mailing list.
> and somebody could give me some guidance as to how to convert the @return and @param declarations
In docstrings as well as in reST docs we just use English, with asterisks to mark up parameters, e.g. “*path* is an instance of :class:`ElementPath`. ... Returns ``True`` if there is a match, ``False`` otherwise.”
> and how to handle the C version of the module.
Doctrings for C modules are not hard to find, just a little painful to write. If we agree to turn comments into docstrings and you need help, I’ll be glad to guide you with that.
|
msg154046 - (view) |
Author: Ezio Melotti (ezio.melotti) *  |
Date: 2012-02-23 03:36 |
Converting sounds good to me, but it should be done carefully.
I think you can have two paragraphs in the docstrings: the first with the description of what it does and what it returns, and the second with the arguments.
For example Lib/xml/etree/ElementTree.py:355:
# Finds the first matching subelement, by tag name or path.
#
# @param path What element to look for.
# @keyparam namespaces Optional namespace prefix map.
# @return The first matching element, or None if no element was found.
# @defreturn Element or None
can become something like:
"""
Finds the first matching subelement, by tag name or path
and returns the first matching element, or None if no
element was found.
*path* is the element to look for and *namespace* is an
optional namespace prefix map.
"""
|
msg154047 - (view) |
Author: Éric Araujo (eric.araujo) *  |
Date: 2012-02-23 03:47 |
My general rule is that function/method docstrings are better short descriptions of what the function does and what the arguments are, a usage reminder for people who have already used the function. Classes docstrings can tell a bit more about how the class is supposed to be used, e.g. what particular responsibility they have and what they work with. Module docstrings should help you make sense of the public objects in the module, for example tell about the main classes and functions and briefly mentioning the less important ones.
This is a personal viewpoint; some people use dir and pydoc a lot to get the most info out of a new module, whereas I like separate documentation more.
ElementTree has no docstrings at all, which is IMO bad; I’d like the javadoc comments to be turned into docstrings, and if they are too big they can be reduced to their core and the extra help moved to reST docs (which are at this moment in what looks like a good shape: they have the same info as the javadoc comments from a quick glance).
I think some of the comments can just be deleted, like the @see lines. Finally, a note about the comments for attributes: they should be documented in the reST docs, and for the Python code you have two possibilities: you can document them in the class docstring, or put string literals after them (see http://www.python.org/dev/peps/pep-0258/#attribute-docstrings – they are discarded by Python, so not available to help/pydoc, but some tools can process them).
|
msg154386 - (view) |
Author: Leon Matthews (leonov) |
Date: 2012-02-26 20:53 |
Thank you Éric and Ezio. I'll produce a patch to convert the javadoc to docstrings this week, then submit it here.
|
msg154412 - (view) |
Author: Florent Xicluna (flox) *  |
Date: 2012-02-26 22:39 |
FWIW, Fredrik, who is the creator of ElementTree, had a preference for JavaDoc conventions, as explained here: http://bugs.python.org/issue6488#msg102087
They are compatible with the tool PythonDoc, authored by Fredrik too:
http://www.effbot.org/zone/pythondoc.htm
However, I agree it makes sense to turn them into docstrings if the package is only maintained in the standard library.
BTW, the issue 6488 is still opened. I did not check if there's something left to do before to close it.
There's also a patch attached to issue 2864, which need some review.
|
msg155014 - (view) |
Author: Eli Bendersky (eli.bendersky) *  |
Date: 2012-03-06 13:22 |
> BTW, the issue 6488 is still opened. I did not check if there's something left to do before to close it.
The fundamental problem issue #6488 was opened for still exists - the docs use the term "path" without defining it. This should be addressed.
|
msg156849 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2012-03-26 18:44 |
New changeset e38f4cf482c7 by Eli Bendersky in branch 'default':
Issue #6488: Explain the XPath support of xml.etree.ElementTree, with code
http://hg.python.org/cpython/rev/e38f4cf482c7
|
msg156851 - (view) |
Author: Eli Bendersky (eli.bendersky) *  |
Date: 2012-03-26 18:45 |
First step in the right direction - e38f4cf482c7
|
msg156893 - (view) |
Author: Eli Bendersky (eli.bendersky) *  |
Date: 2012-03-27 04:06 |
There are two parallel discussions going on here:
1. The external ReST documentation
2. The internal docstring documentation
I opened the issue with (1) in focus, since it's more important IMHO. Not only for the usual reasons (most users don't go into the source to find docstrings), but also because ElementTree.py is just a "reference implementation" in 3.3, since the _elementtree extension is imported by default and is expected to be used on the vast majority of platforms.
Therefore, it's important to have external documentation serving essentially as an API spec implemented once in Python and once in C.
Not that I would object to docstring patches. But it doesn't appear Leon's work is progressing. In any case, I'll be focusing on the ReST docs.
|
msg157129 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2012-03-30 08:45 |
New changeset 78038b6e0a85 by Eli Bendersky in branch 'default':
Issue #14006: improve the documentation of xml.etree.ElementTree
http://hg.python.org/cpython/rev/78038b6e0a85
|
|
Date |
User |
Action |
Args |
2022-04-11 14:57:26 | admin | set | github: 58214 |
2012-06-08 12:32:06 | eli.bendersky | set | status: open -> closed resolution: fixed stage: resolved |
2012-04-14 22:10:06 | tshepang | set | nosy:
+ tshepang
|
2012-03-30 08:45:31 | python-dev | set | messages:
+ msg157129 |
2012-03-27 04:06:23 | eli.bendersky | set | messages:
+ msg156893 |
2012-03-26 18:45:44 | eli.bendersky | set | messages:
+ msg156851 |
2012-03-26 18:44:26 | python-dev | set | nosy:
+ python-dev messages:
+ msg156849
|
2012-03-06 13:22:28 | eli.bendersky | set | messages:
+ msg155014 |
2012-02-26 22:39:44 | flox | set | nosy:
+ effbot dependencies:
+ ElementTree documentation refers to "path" with no explanation, and inconsistently messages:
+ msg154412
|
2012-02-26 20:53:18 | leonov | set | messages:
+ msg154386 |
2012-02-23 03:47:16 | eric.araujo | set | messages:
+ msg154047 |
2012-02-23 03:36:33 | ezio.melotti | set | messages:
+ msg154046 |
2012-02-23 01:27:02 | eric.araujo | set | messages:
+ msg154030 |
2012-02-21 20:33:10 | leonov | set | nosy:
+ leonov messages:
+ msg153899
|
2012-02-14 11:03:37 | scoder | set | messages:
+ msg153335 |
2012-02-14 11:00:33 | scoder | set | messages:
+ msg153334 |
2012-02-14 10:49:27 | Arfrever | set | nosy:
+ Arfrever
|
2012-02-14 03:28:45 | eli.bendersky | create | |