File: deterministic-sort-2.patch

package info (click to toggle)
epydoc 3.0.1%2Bdfsg-14
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 17,540 kB
  • ctags: 30,686
  • sloc: python: 14,373; sh: 97; makefile: 59
file content (38 lines) | stat: -rw-r--r-- 1,736 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Description: make subclass traversal and input file handling deterministic
Author: Sascha Steinbiss <sascha@steinbiss.name>
Bug: https://sourceforge.net/p/epydoc/bugs/370/
Bug-Debian: http://bugs.debian.org/825968
Forwarded: https://sourceforge.net/p/epydoc/bugs/370/
Last-Update: 2016-06-13
--- a/epydoc/docbuilder.py
+++ b/epydoc/docbuilder.py
@@ -574,7 +574,7 @@
     subpackage_dirs = set()
     for subdir in pkg_path:
         if os.path.isdir(subdir):
-            for name in os.listdir(subdir):
+            for name in sorted(os.listdir(subdir)):
                 filename = os.path.join(subdir, name)
                 # Is it a valid module filename?
                 if is_module_file(filename):
@@ -660,7 +660,7 @@
         num_items = 0
         
         if is_package_dir(package_dir):
-            for name in os.listdir(package_dir):
+            for name in sorted(os.listdir(package_dir)):
                 filename = os.path.join(package_dir, name)
                 if is_module_file(filename):
                     num_items += 1
--- a/epydoc/docwriter/html.py
+++ b/epydoc/docwriter/html.py
@@ -879,7 +879,8 @@
                     len(doc.subclasses) > 0):
                     out('<dl><dt>Known Subclasses:</dt>\n<dd>\n    ')
                     out('  <ul class="subclass-list">\n')
-                    for i, subclass in enumerate(doc.subclasses):
+                    sort_key = lambda c:tuple(reversed(c.canonical_name))
+                    for i, subclass in enumerate(sorted(set(doc.subclasses), key=sort_key)):
                         href = self.href(subclass, context=doc)
                         if self._val_is_public(subclass): css = ''
                         else: css = ' class="private"'