Thread: [Epydoc-commits] SF.net SVN: epydoc: [1591] trunk/epydoc/src/epydoc/docwriter/html.py (Page 2)
Brought to you by:
edloper
From: <dva...@us...> - 2007-07-10 22:01:13
|
Revision: 1591 http://svn.sourceforge.net/epydoc/?rev=1591&view=rev Author: dvarrazzo Date: 2007-07-10 15:01:12 -0700 (Tue, 10 Jul 2007) Log Message: ----------- - Added __xor__ method description (SF bug #1696396) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-06-29 12:11:38 UTC (rev 1590) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-07-10 22:01:12 UTC (rev 1591) @@ -2351,6 +2351,7 @@ '__sub__': 'Subtraction operator', '__and__': 'And operator', '__or__': 'Or operator', + '__xor__': 'Exclusive-Or operator', '__repr__': 'Representation operator', '__call__': 'Call operator', '__getattr__': 'Qualification operator', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-21 23:17:46
|
Revision: 1603 http://epydoc.svn.sourceforge.net/epydoc/?rev=1603&view=rev Author: edloper Date: 2007-09-21 16:17:34 -0700 (Fri, 21 Sep 2007) Log Message: ----------- fixed incorrect linking for index terms in functions (sf bug 1791281, debian bug 441368) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-21 23:11:25 UTC (rev 1602) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-21 23:17:34 UTC (rev 1603) @@ -2865,6 +2865,8 @@ def _terms_from_docstring(self, base_url, container, parsed_docstring): if parsed_docstring in (None, UNKNOWN): return [] terms = [] + # Strip any existing anchor off: + base_url = re.sub('#.*', '', base_url) for term in parsed_docstring.index_terms(): anchor = self._term_index_to_anchor(term) url = '%s#%s' % (base_url, anchor) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-23 01:49:00
|
Revision: 1605 http://epydoc.svn.sourceforge.net/epydoc/?rev=1605&view=rev Author: edloper Date: 2007-09-22 18:48:58 -0700 (Sat, 22 Sep 2007) Log Message: ----------- - Fixed bug in _terms_from_docstring introduced by recent checkin Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-22 19:32:26 UTC (rev 1604) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 01:48:58 UTC (rev 1605) @@ -2866,7 +2866,7 @@ if parsed_docstring in (None, UNKNOWN): return [] terms = [] # Strip any existing anchor off: - base_url = re.sub('#.*', '', base_url) + base_url = re.sub('#.*', '', '%s' % (base_url,)) for term in parsed_docstring.index_terms(): anchor = self._term_index_to_anchor(term) url = '%s#%s' % (base_url, anchor) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-23 03:40:09
|
Revision: 1608 http://epydoc.svn.sourceforge.net/epydoc/?rev=1608&view=rev Author: edloper Date: 2007-09-22 20:40:08 -0700 (Sat, 22 Sep 2007) Log Message: ----------- - Fixed typo Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 02:44:21 UTC (rev 1607) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 03:40:08 UTC (rev 1608) @@ -32,7 +32,7 @@ ###################################################################### ## Template Compiler ###################################################################### -# The compile_tempalte() method defined in this section is used to +# The compile_template() method defined in this section is used to # define several of HTMLWriter's methods. def compile_template(docstring, template_string, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-23 13:49:52
|
Revision: 1614 http://epydoc.svn.sourceforge.net/epydoc/?rev=1614&view=rev Author: edloper Date: 2007-09-23 06:49:51 -0700 (Sun, 23 Sep 2007) Log Message: ----------- - If a param has a @type but no @param, then make sure it still gets listed in the ufnction's details section. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 05:59:41 UTC (rev 1613) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 13:49:51 UTC (rev 1614) @@ -2162,13 +2162,21 @@ rtype = self.return_type(var_doc, indent=10) rdescr = self.return_descr(var_doc, indent=10) arg_descrs = [] - # [xx] if we have a @type but no @param, this won't list it! - # [xx] put them in the right order?? + args = set() + # Find the description for each arg. (Leave them in the + # same order that they're listed in the docstring.) for (arg_names, arg_descr) in var_doc.value.arg_descrs: + args.update(arg_names) lhs = ', '.join([self.arg_name_to_html(var_doc.value, n) for n in arg_names]) rhs = self.docstring_to_html(arg_descr, var_doc.value, 10) arg_descrs.append( (lhs, rhs) ) + # Check for arguments for which we have @type but not @param; + # and add them to the arg_descrs list. + for arg in var_doc.value.arg_types: + if arg not in args: + argname = self.arg_name_to_html(var_doc.value, arg) + arg_descrs.append( (argname,'') ) self.write_function_details_entry(out, var_doc, descr, var_doc.value.callgraph_uid, @@ -2203,7 +2211,10 @@ lhs = m.group() + lhs rhs = rhs[m.end():] - return '<li>%s - %s</li>' % (lhs, rhs) + if rhs: + return '<li>%s - %s</li>' % (lhs, rhs) + else: + return '<li>%s</li>' % (lhs,) def property_accessor_to_html(self, val_doc, context=None): if val_doc not in (None, UNKNOWN): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-24 00:34:01
|
Revision: 1626 http://epydoc.svn.sourceforge.net/epydoc/?rev=1626&view=rev Author: edloper Date: 2007-09-23 17:33:58 -0700 (Sun, 23 Sep 2007) Log Message: ----------- - fixed sf bug [ 1675832 ] minor troubles with python properties in Html output -- links to private objects now include 'onclick="show_private()"', which shows private objects. (E.g., for property fget/fset/fdel functions) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 19:44:06 UTC (rev 1625) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-24 00:33:58 UTC (rev 1626) @@ -1416,6 +1416,7 @@ def write_javascript(self, directory): jsfile = open(os.path.join(directory, 'epydoc.js'), 'w') print >> jsfile, self.TOGGLE_PRIVATE_JS + print >> jsfile, self.SHOW_PRIVATE_JS print >> jsfile, self.GET_COOKIE_JS print >> jsfile, self.SET_FRAME_JS print >> jsfile, self.HIDE_PRIVATE_JS @@ -1532,6 +1533,19 @@ } '''.strip() + SHOW_PRIVATE_JS = ''' + function show_private() { + var elts = document.getElementsByTagName("a"); + for(var i=0; i<elts.length; i++) { + if (elts[i].className == "privatelink") { + cmd = elts[i].innerHTML; + if (cmd && cmd.substr(0,4)=="show") + toggle_private(); + } + } + } + '''.strip() + GET_ANCHOR_JS = ''' function get_anchor() { var href = location.href; @@ -1744,10 +1758,9 @@ // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. - checkCookie() + checkCookie(); // --> </script> - </body> </html> ''') @@ -3258,8 +3271,15 @@ else: css = ' class="%s"' % css_class - return '<a href="%s"%s>%s</a>' % (url, css, label) + onclick = '' + if ((isinstance(target, VariableDoc) and not target.is_public) or + (isinstance(target, ValueDoc) and + not isinstance(target, GenericValueDoc) and + not self._val_is_public(target))): + onclick = ' onclick="show_private();"' + return '<a href="%s"%s%s>%s</a>' % (url, css, onclick, label) + def _attr_to_html(self, attr, api_doc, indent): if api_doc in (None, UNKNOWN): return '' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-24 17:53:48
|
Revision: 1636 http://epydoc.svn.sourceforge.net/epydoc/?rev=1636&view=rev Author: edloper Date: 2007-09-24 10:53:47 -0700 (Mon, 24 Sep 2007) Log Message: ----------- - In the import list, show the name of the imported variable, and use a tooltip to show what value it stands for. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-24 17:44:39 UTC (rev 1635) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-24 17:53:47 UTC (rev 1636) @@ -2692,10 +2692,14 @@ def _import(self, var_doc, context): if var_doc.imported_from not in (None, UNKNOWN): - return self.href(var_doc.imported_from, context=context) + return self.href(var_doc.imported_from, + var_doc.name, context=context, + tooltip='%s' % var_doc.imported_from) elif (var_doc.value not in (None, UNKNOWN) and not isinstance(var_doc.value, GenericValueDoc)): - return self.href(var_doc.value, context=context) + return self.href(var_doc.value, + var_doc.name, context=context, + tooltip='%s' % var_doc.value.canonical_name) else: return plaintext_to_html(var_doc.name) @@ -3223,7 +3227,8 @@ return None # [xx] add code to automatically do <code> wrapping or the like? - def href(self, target, label=None, css_class=None, context=None): + def href(self, target, label=None, css_class=None, context=None, + tooltip=None): """ Return the HTML code for an HREF link to the given target (which can be a C{VariableDoc}, a C{ValueDoc}, or a @@ -3263,7 +3268,9 @@ # Get the url for the target. url = self.url(target) - if url is None: return label + if url is None: + if tooltip: return '<span title="%s">%s</span>' % (tooltip, label) + else: return label # Construct a string for the class attribute. if css_class is None: @@ -3278,8 +3285,13 @@ not self._val_is_public(target))): onclick = ' onclick="show_private();"' - return '<a href="%s"%s%s>%s</a>' % (url, css, onclick, label) + if tooltip: + tooltip = ' title="%s"' % tooltip + else: + tooltip = '' + return '<a href="%s"%s%s%s>%s</a>' % (url, css, onclick, tooltip, label) + def _attr_to_html(self, attr, api_doc, indent): if api_doc in (None, UNKNOWN): return '' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-09-24 22:46:12
|
Revision: 1640 http://epydoc.svn.sourceforge.net/epydoc/?rev=1640&view=rev Author: dvarrazzo Date: 2007-09-24 15:46:11 -0700 (Mon, 24 Sep 2007) Log Message: ----------- - Check the container is really a namespace: in case of masked modules, container() may return the wrong object. An example is SQLAlchemy 0.3.10: the MapperExtension class appears contained in... the mapper() function! (which actually hides the mapper module). Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-24 21:39:48 UTC (rev 1639) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-24 22:46:11 UTC (rev 1640) @@ -3054,7 +3054,7 @@ def _val_is_public(self, valdoc): """Make a best-guess as to whether the given class is public.""" container = self.docindex.container(valdoc) - if container is not None: + if isinstance(container, NamespaceDoc): for vardoc in container.variables.values(): if vardoc in (UNKNOWN, None): continue if vardoc.value is valdoc: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-26 03:48:08
|
Revision: 1650 http://epydoc.svn.sourceforge.net/epydoc/?rev=1650&view=rev Author: edloper Date: 2007-09-25 20:48:06 -0700 (Tue, 25 Sep 2007) Log Message: ----------- - Added sanity check to make sure that the base containing an inherited var is acutally a ClassDoc Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-25 23:32:59 UTC (rev 1649) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-26 03:48:06 UTC (rev 1650) @@ -2024,7 +2024,11 @@ for var_doc in var_docs: if var_doc.container != doc: base = var_doc.container - if (base not in self.class_set or + if not isinstance(base, ClassDoc): + # This *should* never happen: + log.warning("%s's container is not a class!" % var_doc) + normal_vars.append(var_doc) + elif (base not in self.class_set or self._inheritance == 'listed'): listed_inh_vars.setdefault(base,[]).append(var_doc) elif self._inheritance == 'grouped': This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-15 01:16:56
|
Revision: 1723 http://epydoc.svn.sourceforge.net/epydoc/?rev=1723&view=rev Author: edloper Date: 2008-02-14 17:16:54 -0800 (Thu, 14 Feb 2008) Log Message: ----------- - If a class's metaclass is known, then show that class instead of 'Class' on its class html page - When displaying class description tables, don't bother with the 'type' column -- it's always empty anyway. - If a property's fget/fset/fdel function has the name '??', then don't bother to list it. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-15 01:11:18 UTC (rev 1722) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-15 01:16:54 UTC (rev 1723) @@ -842,7 +842,11 @@ self.write_breadcrumbs(out, doc, self.url(doc)) # Write the name of the class we're describing. - if doc.is_type(): typ = 'Type' + if (doc.metaclass is not UNKNOWN and + doc.metaclass.canonical_name is not UNKNOWN and + doc.metaclass.canonical_name != 'type'): + typ = self.href(doc.metaclass, doc.metaclass.canonical_name[-1]) + elif doc.is_type(): typ = 'Type' elif doc.is_exception(): typ = 'Exception' else: typ = 'Class' out('<!-- ==================== %s ' % typ.upper() + @@ -2139,6 +2143,10 @@ var_doc.value.callgraph_uid = callgraph.uid else: callgraph = None + elif isinstance(var_doc.value, ClassDoc): + typ = -1 # use the whole row for description. + description = self.summary_name(var_doc, + link_name=link_name, anchor=anchor) else: typ = self.type_descr(var_doc, indent=6) description = self.summary_name(var_doc, @@ -2171,6 +2179,9 @@ # /------------------------- Template -------------------------\ ''' <tr$tr_class$> + >>> if typ == -1: + <td class="summary" colspan="2"> + >>> else: <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">$typ or " "$</span> </td><td class="summary"> @@ -2266,7 +2277,8 @@ [('Get', prop_doc.fget), ('Set', prop_doc.fset), ('Delete', prop_doc.fdel)] if val_doc not in (None, UNKNOWN) - and val_doc.pyval is not None ] + and val_doc.pyval is not None + and not val_doc.canonical_name[0].startswith('??')] self.write_property_details_entry(out, var_doc, descr, accessors, div_class) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-23 01:07:14
|
Revision: 1735 http://epydoc.svn.sourceforge.net/epydoc/?rev=1735&view=rev Author: edloper Date: 2008-02-22 17:07:05 -0800 (Fri, 22 Feb 2008) Log Message: ----------- - Added note to self Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-23 00:55:52 UTC (rev 1734) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-23 01:07:05 UTC (rev 1735) @@ -2280,7 +2280,9 @@ [('Get', prop_doc.fget), ('Set', prop_doc.fset), ('Delete', prop_doc.fdel)] if val_doc not in (None, UNKNOWN) + # [xx] this requires introspection -- why do this? and val_doc.pyval is not None + # [xx] (end) and not val_doc.canonical_name[0].startswith('??')] self.write_property_details_entry(out, var_doc, descr, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2008-02-27 19:54:45
|
Revision: 1804 http://epydoc.svn.sourceforge.net/epydoc/?rev=1804&view=rev Author: edloper Date: 2008-02-27 11:54:39 -0800 (Wed, 27 Feb 2008) Log Message: ----------- - Fixed bug that causes crash when we can't determine the canonical name for a metaclass. - Fixed bug in callgraph rendering. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-27 00:32:35 UTC (rev 1803) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2008-02-27 19:54:39 UTC (rev 1804) @@ -848,7 +848,7 @@ # Write the name of the class we're describing. if (doc.metaclass is not UNKNOWN and - doc.metaclass.canonical_name is not UNKNOWN and + doc.metaclass.canonical_name not in (None, UNKNOWN) and doc.metaclass.canonical_name != 'type'): typ = self.href(doc.metaclass, doc.metaclass.canonical_name[-1]) elif doc.is_type(): typ = 'Type' @@ -1667,28 +1667,25 @@ if isinstance(callgraph, basestring): uid = callgraph - rv = self._callgraph_cache.get(callgraph, "") - + graph_html = self._callgraph_cache.get(callgraph, "") + elif callgraph.uid in self._callgraph_cache: + uid = callgraph.uid + graph_html = self._callgraph_cache.get(callgraph, "") else: uid = callgraph.uid graph_html = self.render_graph(callgraph) - if graph_html == '': - rv = "" - else: - rv = ('<div style="display:none" id="%%s-div"><center>\n' - '<table border="0" cellpadding="0" cellspacing="0">\n' - ' <tr><td>%s</td></tr>\n' - ' <tr><th>Call Graph</th></tr>\n' - '</table><br />\n</center></div>\n' % graph_html) + self._callgraph_cache[uid] = graph_html - # Store in the cache the complete HTML chunk without the - # div id, which may be made unambiguous by the token - self._callgraph_cache[uid] = rv + if graph_html: + return ('<div style="display:none" id="%s-div"><center>\n' + '<table border="0" cellpadding="0" cellspacing="0">\n' + ' <tr><td>%s</td></tr>\n' + ' <tr><th>Call Graph</th></tr>\n' + '</table><br />\n</center></div>\n' % + (uid+token, graph_html)) + else: + return '' - # Mangle with the graph - if rv: rv = rv % (uid + token) - return rv - def callgraph_link(self, callgraph, token=""): """Render the HTML chunk of a callgraph link. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-08-21 11:46:04
|
Revision: 1272 Author: edloper Date: 2006-08-21 04:45:59 -0700 (Mon, 21 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1272&view=rev Log Message: ----------- - Fixed bug in display of exceptions, where it would raise an exception if docindex.find() couldn't find it. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-21 11:34:36 UTC (rev 1271) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-21 11:45:59 UTC (rev 1272) @@ -2038,8 +2038,10 @@ <dl><dt>Raises:</dt></dl> <ul class="nomargin"> >>> for name, descr in func_doc.exception_descrs: - >>> name = self.href(self.docindex.find(name, func_doc), - >>> label=str(name)) + >>> exc_name = self.docindex.find(name, func_doc) + >>> if exc_name is not None: + >>> name = self.href(exc_name, label=str(name)) + >>> #endif $self.labelled_list_item( "<code><strong class=\'fraise\'>" + name + "</strong></code>", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-08-21 13:25:19
|
Revision: 1277 Author: edloper Date: 2006-08-21 06:25:16 -0700 (Mon, 21 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1277&view=rev Log Message: ----------- - Treat any modules that begin with '_' as private. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-21 13:09:34 UTC (rev 1276) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-21 13:25:16 UTC (rev 1277) @@ -3005,9 +3005,15 @@ def _doc_or_ancestor_is_private(self, api_doc): name = api_doc.canonical_name for i in range(len(name), 0, -1): + # Is it (or an ancestor) a private var? var_doc = self.docindex.get_vardoc(name[:i]) if var_doc is not None and var_doc.is_public == False: return True + # Is it (or an ancestor) a private module? + val_doc = self.docindex.get_valdoc(name[:i]) + if (val_doc is not None and isinstance(val_doc, ModuleDoc) and + val_doc.canonical_name[-1].startswith('_')): + return True return False class _HTMLDocstringLinker(epydoc.markup.DocstringLinker): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-08-22 05:43:23
|
Revision: 1286 Author: edloper Date: 2006-08-21 22:43:19 -0700 (Mon, 21 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1286&view=rev Log Message: ----------- - Replaced the previous linewrap marker (a colored backslash) with an image (crarr.png). The image is written by the write_images() method. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-22 01:44:36 UTC (rev 1285) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-22 05:43:19 UTC (rev 1286) @@ -12,7 +12,7 @@ """ __docformat__ = 'epytext en' -import re, os, sys, codecs, sre_constants, pprint +import re, os, sys, codecs, sre_constants, pprint, base64 import urllib from epydoc.apidoc import * import epydoc.docstringparser @@ -188,6 +188,8 @@ # 2.7. Homepage (index.html) # 2.8. CSS Stylesheet # 2.9. Javascript file + # 2.10. Graphs + # 2.11. Images # # 3. Page Element Generation -- write pieces of a web page file # 3.1. Page Header @@ -505,6 +507,9 @@ log.progress(self._files_written/self._num_files, 'epydoc.js') self.write_javascript(directory) + # Write images. + self.write_images(directory) + # Write the term & identifier indices indices = {'ident': self.build_identifier_index(), 'term': self.build_term_index(), @@ -1448,6 +1453,28 @@ 'call graph</a></span> ' % callgraph.uid) #//////////////////////////////////////////////////////////// + #{ 2.11. Images + #//////////////////////////////////////////////////////////// + + IMAGES = {'crarr.png': # Carriage-return arrow, used for LINEWRAP. + 'iVBORw0KGgoAAAANSUhEUgAAABEAAAAKCAMAAABlokWQAAAALHRFWHRD' + 'cmVhdGlvbiBUaW1lAFR1\nZSAyMiBBdWcgMjAwNiAwMDo0MzoxMCAtMD' + 'UwMGAMEFgAAAAHdElNRQfWCBYFASkQ033WAAAACXBI\nWXMAAB7CAAAe' + 'wgFu0HU+AAAABGdBTUEAALGPC/xhBQAAAEVQTFRF////zcOw18/AgGY0' + 'c1cg4dvQ\ninJEYEAAYkME3NXI6eTcloFYe2Asr5+AbE4Uh29A9fPwqp' + 'l4ZEUI8O3onopk0Ma0lH5U1nfFdgAA\nAAF0Uk5TAEDm2GYAAABNSURB' + 'VHjaY2BAAbzsvDAmK5oIlxgfioiwCAe7KJKIgKAQOzsLLwTwA0VY\n+d' + 'iRAT8T0AxuIIMHqoaXCWIPGzsHJ6orGJiYWRjQASOcBQAocgMSPKMTIg' + 'AAAABJRU5ErkJggg==\n', + } + + def write_images(self, directory): + for (name, data) in self.IMAGES.items(): + f = open(os.path.join(directory, name), 'w') + f.write(base64.decodestring(data)) + f.close() + + #//////////////////////////////////////////////////////////// #{ 3.1. Page Header #//////////////////////////////////////////////////////////// @@ -2273,7 +2300,8 @@ function treats HTML entities (e.g., C{&}) as single characters; and ignores HTML tags (e.g., C{<p>}). """ - LINEWRAP_MARKER = r'<span class="variable-linewrap">\</span>' + LINEWRAP_MARKER = (r'<span class="variable-linewrap">' + '<img src="crarr.png" alt="\" /></span>') ELLIPSIS_MARKER = r'<span class="variable-ellipsis">...</span>' open_elements = [] # tag stack This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-08-22 06:36:57
|
Revision: 1290 Author: edloper Date: 2006-08-21 23:36:54 -0700 (Mon, 21 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1290&view=rev Log Message: ----------- - Added index for @change (Change Log). - Fixed bug in metadata indices where variables were listed with their short names, instead of their full canonical names. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-22 06:28:21 UTC (rev 1289) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-22 06:36:54 UTC (rev 1290) @@ -412,7 +412,7 @@ for doc in self.module_list: if isinstance(doc, ModuleDoc) and is_src_filename(doc.filename): self.modules_with_sourcecode.add(doc) - self._num_files = len(self.class_list) + 2*len(self.module_list) + 13 + self._num_files = len(self.class_list) + 2*len(self.module_list) + 14 if self._incl_sourcecode: self._num_files += len(self.modules_with_sourcecode) @@ -514,7 +514,8 @@ indices = {'ident': self.build_identifier_index(), 'term': self.build_term_index(), 'bug': self.build_metadata_index('bug'), - 'todo': self.build_metadata_index('todo')} + 'todo': self.build_metadata_index('todo'), + 'change': self.build_metadata_index('change')} self._write(self.write_link_index, directory, 'identifier-index.html', indices, 'Identifier Index', 'identifier-index.html', 'ident') @@ -534,6 +535,11 @@ 'todo-index.html', indices, 'todo', 'To Do List') else: self._files_written += 1 # (skipped) + if indices['change']: + self._write(self.write_metadata_index, directory, + 'change-index.html', indices, 'change', 'Change Log') + else: + self._files_written += 1 # (skipped) # Write the trees file (package & class hierarchies) if self.module_list: @@ -967,7 +973,7 @@ out('<div>\n') out('<table width="100%" class="metadata-index" ' 'bgcolor="#e0e0e0"><tr><td class="metadata-index">') - out('<b>In %s</b>' % self.href(doc)) + out('<b>In %s</b>' % self.href(doc, label=doc.canonical_name)) out(' <ul class="nomargin">\n') for descr in descrs: out(' <li>%s</li>\n' % @@ -991,7 +997,8 @@ self.write_navbar(out, 'indices') self.write_breadcrumbs(out, 'indices', url) - if indices['term'] or indices['bug'] or indices['todo']: + if (indices['term'] or indices['bug'] or + indices['todo'] or indices['change']): out('<center><b>[\n') out(' <a href="identifier-index.html">Identifier Index</a>\n') if indices['term']: @@ -1000,6 +1007,8 @@ out('| <a href="bug-index.html">Bug List</a>\n') if indices['todo']: out('| <a href="todo-index.html">To Do List</a>\n') + if indices['change']: + out('| <a href="change-index.html">Change Log</a>\n') out(']</b></center><br />\n') def write_index_section(self, out, items, add_blankline=False): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-08-29 21:37:52
|
Revision: 1331 Author: edloper Date: 2006-08-29 14:37:46 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1331&view=rev Log Message: ----------- - Fixed SF bug [ 1546402 ] Latin 1 characters not recognized, by modifying pprint_pyval() to use decode_with_backslashreplace() when necessary to convert str repr's to unicode. - Changed pprint_pyval() to add color to quotes of unicode strings (not just str strings) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-29 21:18:53 UTC (rev 1330) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-08-29 21:37:46 UTC (rev 1331) @@ -144,6 +144,7 @@ pysrc_lines.append(' raise') pysrc = '\n'.join(pysrc_lines)+'\n' + #log.debug(pysrc) if debug: localdict = {'__debug': (pysrc_lines, func_name)} else: localdict = {} try: exec pysrc in globals(), localdict @@ -2296,18 +2297,22 @@ # For strings, use repr. Use tripple-quoted-strings where # appropriate. - elif type(pyval) is types.StringType: + elif isinstance(pyval, basestring): vstr = repr(pyval) + # Find the left quote. + lquote = vstr.find(vstr[-1]) + # Use tripple quotes if the string is multi-line: if vstr.find(r'\n') >= 0: - body = vstr[1:-1].replace(r'\n', '\n') - vstr = ('<span class="variable-quote">'+vstr[0]*3+'</span>'+ + body = vstr[lquote+1:-1].replace(r'\n', '\n') + vstr = ('<span class="variable-quote">'+vstr[:lquote]+ + vstr[lquote]*3+'</span>'+ plaintext_to_html(body) + - '<span class="variable-quote">'+vstr[0]*3+'</span>') - + '<span class="variable-quote">'+vstr[-1]*3+'</span>') + # Use single quotes if the string is single-line: else: - vstr = ('<span class="variable-quote">'+vstr[0]+'</span>'+ - plaintext_to_html(vstr[1:-1])+ - '<span class="variable-quote">'+vstr[0]+'</span>') + vstr = ('<span class="variable-quote">'+vstr[:lquote+1]+ + '</span>'+ plaintext_to_html(vstr[lquote+1:-1])+ + '<span class="variable-quote">'+vstr[-1:]+'</span>') # For lists, tuples, and dicts, use pprint. When possible, # restrict the amount of stuff that pprint needs to look at, @@ -2343,6 +2348,10 @@ try: vstr = plaintext_to_html(repr(pyval)) except: vstr = '...' + # Encode vstr, if necessary. + if isinstance(vstr, str): + vstr = decode_with_backslashreplace(vstr) + # Do line-wrapping. return self._linewrap_html(vstr, self._variable_linelen, self._variable_maxlines) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2006-09-10 14:29:37
|
Revision: 1377 http://svn.sourceforge.net/epydoc/?rev=1377&view=rev Author: edloper Date: 2006-09-10 07:29:31 -0700 (Sun, 10 Sep 2006) Log Message: ----------- - Fixed bug where base tree generation would fail if the context was UNKNOWN (e.g., if we can't determine what the containing module is.) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-08 20:53:48 UTC (rev 1376) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-10 14:29:31 UTC (rev 1377) @@ -2498,8 +2498,11 @@ else: return '??' else: - context_name = context.canonical_name - return str(doc.canonical_name.contextualize(context_name)) + if context is UNKNOWN: + return str(doc.canonical_name) + else: + context_name = context.canonical_name + return str(doc.canonical_name.contextualize(context_name)) #//////////////////////////////////////////////////////////// #{ Function Signatures This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2006-09-17 18:21:11
|
Revision: 1402 http://svn.sourceforge.net/epydoc/?rev=1402&view=rev Author: dvarrazzo Date: 2006-09-17 11:21:05 -0700 (Sun, 17 Sep 2006) Log Message: ----------- - Property access functions are not shown (as ``None``) when they are None. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-17 17:54:47 UTC (rev 1401) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-17 18:21:05 UTC (rev 1402) @@ -2012,7 +2012,9 @@ self.summary(val_doc)) for (name, val_doc) in [('Get', prop_doc.fget), ('Set', prop_doc.fset), ('Delete', prop_doc.fdel)] - if val_doc is not UNKNOWN ] + if val_doc not in (None, UNKNOWN) + and val_doc.pyval is not None ] + self.write_property_details_entry(out, var_doc, descr, accessors, div_class) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2006-09-17 23:50:41
|
Revision: 1404 http://svn.sourceforge.net/epydoc/?rev=1404&view=rev Author: dvarrazzo Date: 2006-09-17 16:50:35 -0700 (Sun, 17 Sep 2006) Log Message: ----------- - Types in HTML output are treated consistently: not always in monotype font, but respecting user markup. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-17 20:02:33 UTC (rev 1403) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2006-09-17 23:50:35 UTC (rev 1404) @@ -1939,7 +1939,7 @@ ''' <tr$tr_class$> <td width="15%" align="right" valign="top" class="summary"> - <code class="summary-type">$typ or " "$</code> + <span class="summary-type">$typ or " "$</span> </td><td class="summary"> $description$ </td> @@ -2058,7 +2058,7 @@ if arg_name in func_doc.arg_types: typ = func_doc.arg_types[arg_name] typ_html = self.docstring_to_html(typ, func_doc, 10) - s += " (<code>%s</code>)" % typ_html + s += " (%s)" % typ_html return s write_function_details_entry = compile_template( @@ -2104,13 +2104,13 @@ >>> #endif >>> # === return type === >>> if rdescr and rtype: - <dl><dt>Returns: <code>$rtype$</code></dt> + <dl><dt>Returns: $rtype$</dt> <dd>$rdescr$</dd></dl> >>> elif rdescr: <dl><dt>Returns:</dt> <dd>$rdescr$</dd></dl> >>> elif rtype: - <dl><dt>Returns: <code>$rtype$</code></dt></dl> + <dl><dt>Returns: $rtype$</dt></dl> >>> #endif >>> # === decorators === >>> if func_doc.decorators not in (None, UNKNOWN): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-13 20:26:14
|
Revision: 1476 http://svn.sourceforge.net/epydoc/?rev=1476&view=rev Author: edloper Date: 2007-02-13 12:26:12 -0800 (Tue, 13 Feb 2007) Log Message: ----------- - Removed unused import Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-02-13 20:22:12 UTC (rev 1475) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-02-13 20:26:12 UTC (rev 1476) @@ -20,7 +20,6 @@ from epydoc.apidoc import * import epydoc.docstringparser import time, epydoc, epydoc.markup, epydoc.markup.epytext -from epydoc.docwriter.html_colorize import colorize_re from epydoc.docwriter.html_colorize import PythonSourceColorizer from epydoc.docwriter import html_colorize from epydoc.docwriter.html_css import STYLESHEETS This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-02-15 19:42:33
|
Revision: 1507 http://svn.sourceforge.net/epydoc/?rev=1507&view=rev Author: dvarrazzo Date: 2007-02-15 11:42:28 -0800 (Thu, 15 Feb 2007) Log Message: ----------- - Dropped double anchors definitions. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-02-14 17:00:36 UTC (rev 1506) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-02-15 19:42:28 UTC (rev 1507) @@ -2040,11 +2040,16 @@ if var_doc.is_public: tr_class = '' else: tr_class = ' class="private"' + # Decide an anchor or a link is to be generated. + link_name = var_doc.is_detailed() + anchor = not link_name + # Construct the HTML code for the type (cell 1) & description # (cell 2). if isinstance(var_doc.value, RoutineDoc): typ = self.return_type(var_doc, indent=6) - description = self.function_signature(var_doc, True, True) + description = self.function_signature(var_doc, is_summary=True, + link_name=link_name, anchor=anchor) pysrc_link = self.pysrc_link(var_doc.value) # Perpare the call-graph, if requested @@ -2059,7 +2064,8 @@ callgraph = None else: typ = self.type_descr(var_doc, indent=6) - description = self.summary_name(var_doc, link_name=True) + description = self.summary_name(var_doc, + link_name=link_name, anchor=anchor) if isinstance(var_doc.value, GenericValueDoc): # The summary max length has been chosen setting # L{ValueDoc.SUMMARY_REPR_LINELEN} in the constructor @@ -2194,7 +2200,8 @@ def property_accessor_to_html(self, val_doc): if val_doc not in (None, UNKNOWN): if isinstance(val_doc, RoutineDoc): - return self.function_signature(val_doc, True, True) + return self.function_signature(val_doc, is_summary=True, + link_name=True) elif isinstance(val_doc, GenericValueDoc): return self.pprint_value(val_doc) else: @@ -2510,7 +2517,22 @@ #//////////////////////////////////////////////////////////// def function_signature(self, api_doc, is_summary=False, - link_name=False): + link_name=False, anchor=False): + """Render a function signature in HTML. + + @param api_doc: The object whose name is to be rendered. If a + C{VariableDoc}, its C{value} should be a C{RoutineDoc} + @type api_doc: L{VariableDoc} or L{RoutineDoc} + @param is_summary: True if the fuction is to be rendered in the summary. + type css_class: C{bool} + @param link_name: If True, the name is a link to the object anchor. + @type link_name: C{bool} + @param anchor: If True, the name is the object anchor. + @type anchor: C{bool} + + @return: The HTML code for the object. + @rtype: C{str} + """ if is_summary: css_class = 'summary-sig' else: css_class = 'sig' @@ -2524,7 +2546,7 @@ (css_class, css_class, api_doc.name)) # Get the function's name. name = self.summary_name(api_doc, css_class=css_class+'-name', - link_name=link_name) + link_name=link_name, anchor=anchor) else: func_doc = api_doc name = self.href(api_doc, css_class=css_class+'-name') @@ -2547,13 +2569,34 @@ return ('<span class="%s">%s(%s)</span>' % (css_class, name, ',\n '.join(args))) - def summary_name(self, api_doc, css_class='summary-name', link_name=False): - if link_name and api_doc.is_detailed(): - return self.href(api_doc, css_class=css_class) + def summary_name(self, api_doc, css_class='summary-name', + link_name=False, anchor=False): + """Render an object name in HTML. + + @param api_doc: The object whose name is to be rendered + @type api_doc: L{APIDoc} + @param css_class: The CSS class to assign to the rendered name + type css_class: C{str} + @param link_name: If True, the name is a link to the object anchor. + @type link_name: C{bool} + @param anchor: If True, the name is the object anchor. + @type anchor: C{bool} + + @return: The HTML code for the object. + @rtype: C{str} + """ + if anchor: + rv = '<a name="%s"></a>' % api_doc.name else: - return '<a name="%s" /><span class="%s">%s</span>' % \ - (api_doc.name, css_class, api_doc.name) + rv = '' + if link_name: + rv += self.href(api_doc, css_class=css_class) + else: + rv += '<span class="%s">%s</span>' % (css_class, api_doc.name) + + return rv + # [xx] tuple args??? def func_arg(self, name, default, css_class): name = self._arg_name(name) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-03-10 02:32:37
|
Revision: 1579 http://svn.sourceforge.net/epydoc/?rev=1579&view=rev Author: dvarrazzo Date: 2007-03-09 18:32:35 -0800 (Fri, 09 Mar 2007) Log Message: ----------- - Property accessor names contextualized. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-03-10 00:10:33 UTC (rev 1578) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-03-10 02:32:35 UTC (rev 1579) @@ -2178,10 +2178,12 @@ # Properties elif isinstance(var_doc.value, PropertyDoc): prop_doc = var_doc.value - accessors = [(name, self.property_accessor_to_html(val_doc), - self.summary(val_doc)) for (name, val_doc) in - [('Get', prop_doc.fget), ('Set', prop_doc.fset), - ('Delete', prop_doc.fdel)] + accessors = [ (name, + self.property_accessor_to_html(val_doc, prop_doc), + self.summary(val_doc)) + for (name, val_doc) in + [('Get', prop_doc.fget), ('Set', prop_doc.fset), + ('Delete', prop_doc.fdel)] if val_doc not in (None, UNKNOWN) and val_doc.pyval is not None ] @@ -2203,15 +2205,15 @@ return '<li>%s - %s</li>' % (lhs, rhs) - def property_accessor_to_html(self, val_doc): + def property_accessor_to_html(self, val_doc, context=None): if val_doc not in (None, UNKNOWN): if isinstance(val_doc, RoutineDoc): return self.function_signature(val_doc, is_summary=True, - link_name=True) + link_name=True, context=context) elif isinstance(val_doc, GenericValueDoc): return self.pprint_value(val_doc) else: - return self.href(val_doc) + return self.href(val_doc, context=context) else: return '??' @@ -2524,7 +2526,7 @@ #//////////////////////////////////////////////////////////// def function_signature(self, api_doc, is_summary=False, - link_name=False, anchor=False): + link_name=False, anchor=False, context=None): """Render a function signature in HTML. @param api_doc: The object whose name is to be rendered. If a @@ -2536,6 +2538,9 @@ @type link_name: C{bool} @param anchor: If True, the name is the object anchor. @type anchor: C{bool} + @param context: If set, represent the function name from this context. + Only useful when C{api_doc} is a L{RoutineDoc}. + @type context: L{DottedName} @return: The HTML code for the object. @rtype: C{str} @@ -2556,7 +2561,8 @@ link_name=link_name, anchor=anchor) else: func_doc = api_doc - name = self.href(api_doc, css_class=css_class+'-name') + name = self.href(api_doc, css_class=css_class+'-name', + context=context) if func_doc.posargs == UNKNOWN: args = ['...'] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-03-10 17:56:32
|
Revision: 1581 http://svn.sourceforge.net/epydoc/?rev=1581&view=rev Author: dvarrazzo Date: 2007-03-10 09:56:29 -0800 (Sat, 10 Mar 2007) Log Message: ----------- - Ordering of classes in classes tree stabilized. The base classes used to be sorted by canonical name, but no order was set for subclasses. Now sorting both base classes and subclasses by class name (which is probably more meaningful than canonical name for people looking for a class regardless from the module it is exposed from) Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-03-10 16:01:52 UTC (rev 1580) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-03-10 17:56:29 UTC (rev 1581) @@ -959,7 +959,7 @@ #class_set.add(base) out('<ul class="nomargin-top">\n') - for doc in sorted(class_set): + for doc in sorted(class_set, key=lambda c:c.canonical_name[-1]): if doc.bases != UNKNOWN and len(doc.bases)==0: self.write_class_tree_item(out, doc, class_set) out('</ul>\n') @@ -2714,7 +2714,7 @@ >>> # endif >>> if doc.subclasses: <ul> - >>> for subclass in set(doc.subclasses): + >>> for subclass in sorted(set(doc.subclasses), key=lambda c:c.canonical_name[-1]): >>> if subclass in class_set: >>> self.write_class_tree_item(out, subclass, class_set) >>> #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-09-23 19:44:10
|
Revision: 1625 http://epydoc.svn.sourceforge.net/epydoc/?rev=1625&view=rev Author: edloper Date: 2007-09-23 12:44:06 -0700 (Sun, 23 Sep 2007) Log Message: ----------- - applied sf patch [ 1673945 ] html.py / crarr.png is broken -- use 'wb' when writing .png files. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/html.py Modified: trunk/epydoc/src/epydoc/docwriter/html.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 19:39:01 UTC (rev 1624) +++ trunk/epydoc/src/epydoc/docwriter/html.py 2007-09-23 19:44:06 UTC (rev 1625) @@ -1674,7 +1674,7 @@ def write_images(self, directory): for (name, data) in self.IMAGES.items(): - f = open(os.path.join(directory, name), 'w') + f = open(os.path.join(directory, name), 'wb') f.write(base64.decodestring(data)) f.close() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |