]> granicus.if.org Git - python/commitdiff
Merged revisions 68884,68973,68978,69003,69083,69112-69113 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Fri, 30 Jan 2009 03:39:35 +0000 (03:39 +0000)
committerBenjamin Peterson <benjamin@python.org>
Fri, 30 Jan 2009 03:39:35 +0000 (03:39 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r68884 | kristjan.jonsson | 2009-01-24 04:52:26 -0600 (Sat, 24 Jan 2009) | 1 line

  Add a test for UNC import paths, see issue 3677
........
  r68973 | georg.brandl | 2009-01-26 15:29:38 -0600 (Mon, 26 Jan 2009) | 2 lines

  Copy over docs on advanced role features from Sphinx docs.
........
  r68978 | mark.dickinson | 2009-01-26 15:51:56 -0600 (Mon, 26 Jan 2009) | 3 lines

  Issue #5073: Fix occasional failure of bsddb/test/test_lock.py.  Thanks
  Hirokazu Yamamoto for the patch.
........
  r69003 | benjamin.peterson | 2009-01-26 21:07:53 -0600 (Mon, 26 Jan 2009) | 1 line

  excellent place to use a set() #5069
........
  r69083 | benjamin.peterson | 2009-01-28 21:03:00 -0600 (Wed, 28 Jan 2009) | 1 line

  fix download url
........
  r69112 | benjamin.peterson | 2009-01-29 20:02:25 -0600 (Thu, 29 Jan 2009) | 1 line

  pep8tify conditionals
........
  r69113 | benjamin.peterson | 2009-01-29 20:24:39 -0600 (Thu, 29 Jan 2009) | 1 line

  make _tkinter._flatten check the result of PySequence_Size for errors #3880
........

Doc/documenting/markup.rst
Doc/tools/sphinxext/download.html
Lib/colorsys.py
Lib/posixpath.py
Lib/test/test_tcl.py
Modules/_tkinter.c

index a9194687976ddad17e813ec5d8c94f65e9acbb83..9bb51931ef0cfa9afd05751faf34f5de70ba6051 100644 (file)
@@ -290,10 +290,22 @@ they should be marked simply with ``*var*``.
 
 For all other roles, you have to write ``:rolename:`content```.
 
-.. note::
+There are some additional facilities that make cross-referencing roles more
+versatile:
+
+* You may supply an explicit title and reference target, like in reST direct
+  hyperlinks: ``:role:`title <target>``` will refer to *target*, but the link
+  text will be *title*.
+
+* If you prefix the content with ``!``, no reference/hyperlink will be created.
+
+* For the Python object roles, if you prefix the content with ``~``, the link
+  text will only be the last component of the target.  For example,
+  ``:meth:`~Queue.Queue.get``` will refer to ``Queue.Queue.get`` but only
+  display ``get`` as the link text.
 
-   For all cross-referencing roles, if you prefix the content with ``!``, no
-   reference/hyperlink will be created.
+  In HTML output, the link's ``title`` attribute (that is e.g. shown as a
+  tool-tip on mouse-hover) will always be the full target name.
 
 The following roles refer to objects in modules and are possibly hyperlinked if
 a matching identifier is found:
index 5f625620c1c6b7322d37e9d2c40fd634e88129dc..0de9c2a062746e9c9692b2d2ad45cb6a1280cf41 100644 (file)
@@ -31,7 +31,7 @@ in the table are the size of the download files in megabytes.</p>
     <td><a href="{{ dlbase }}/python-{{ release }}-docs-html.tar.bz2">Download</a> (ca. 4 MB)</td>
   </tr>
   <tr><td>Plain Text</td>
-    <td><a href="{{ dlbase }}/python-docs-text.zip">Download</a> (ca. 2 MB)</td>
+    <td><a href="{{ dlbase }}/python-{{ release }}-text.zip">Download</a> (ca. 2 MB)</td>
     <td><a href="{{ dlbase }}/python-{{ release }}-docs-text.tar.bz2">Download</a> (ca. 1.5 MB)</td>
   </tr>
 </table>
index 851417b5d5177b5d8ac894c82a9889b3b2bfaca1..a6c0cf6a4639e73e3aee9d66a52619d74dfb0d45 100644 (file)
@@ -44,12 +44,18 @@ def yiq_to_rgb(y, i, q):
     r = y + 0.948262*i + 0.624013*q
     g = y - 0.276066*i - 0.639810*q
     b = y - 1.105450*i + 1.729860*q
-    if r < 0.0: r = 0.0
-    if g < 0.0: g = 0.0
-    if b < 0.0: b = 0.0
-    if r > 1.0: r = 1.0
-    if g > 1.0: g = 1.0
-    if b > 1.0: b = 1.0
+    if r < 0.0:
+        r = 0.0
+    if g < 0.0:
+        g = 0.0
+    if b < 0.0:
+        b = 0.0
+    if r > 1.0:
+        r = 1.0
+    if g > 1.0:
+        g = 1.0
+    if b > 1.0:
+        b = 1.0
     return (r, g, b)
 
 
@@ -63,30 +69,42 @@ def rgb_to_hls(r, g, b):
     minc = min(r, g, b)
     # XXX Can optimize (maxc+minc) and (maxc-minc)
     l = (minc+maxc)/2.0
-    if minc == maxc: return 0.0, l, 0.0
-    if l <= 0.5: s = (maxc-minc) / (maxc+minc)
-    else: s = (maxc-minc) / (2.0-maxc-minc)
+    if minc == maxc:
+        return 0.0, l, 0.0
+    if l <= 0.5:
+        s = (maxc-minc) / (maxc+minc)
+    else:
+        s = (maxc-minc) / (2.0-maxc-minc)
     rc = (maxc-r) / (maxc-minc)
     gc = (maxc-g) / (maxc-minc)
     bc = (maxc-b) / (maxc-minc)
-    if r == maxc: h = bc-gc
-    elif g == maxc: h = 2.0+rc-bc
-    else: h = 4.0+gc-rc
+    if r == maxc:
+        h = bc-gc
+    elif g == maxc:
+        h = 2.0+rc-bc
+    else:
+        h = 4.0+gc-rc
     h = (h/6.0) % 1.0
     return h, l, s
 
 def hls_to_rgb(h, l, s):
-    if s == 0.0: return l, l, l
-    if l <= 0.5: m2 = l * (1.0+s)
-    else: m2 = l+s-(l*s)
+    if s == 0.0:
+        return l, l, l
+    if l <= 0.5:
+        m2 = l * (1.0+s)
+    else:
+        m2 = l+s-(l*s)
     m1 = 2.0*l - m2
     return (_v(m1, m2, h+ONE_THIRD), _v(m1, m2, h), _v(m1, m2, h-ONE_THIRD))
 
 def _v(m1, m2, hue):
     hue = hue % 1.0
-    if hue < ONE_SIXTH: return m1 + (m2-m1)*hue*6.0
-    if hue < 0.5: return m2
-    if hue < TWO_THIRD: return m1 + (m2-m1)*(TWO_THIRD-hue)*6.0
+    if hue < ONE_SIXTH:
+        return m1 + (m2-m1)*hue*6.0
+    if hue < 0.5:
+        return m2
+    if hue < TWO_THIRD:
+        return m1 + (m2-m1)*(TWO_THIRD-hue)*6.0
     return m1
 
 
@@ -99,29 +117,40 @@ def rgb_to_hsv(r, g, b):
     maxc = max(r, g, b)
     minc = min(r, g, b)
     v = maxc
-    if minc == maxc: return 0.0, 0.0, v
+    if minc == maxc:
+        return 0.0, 0.0, v
     s = (maxc-minc) / maxc
     rc = (maxc-r) / (maxc-minc)
     gc = (maxc-g) / (maxc-minc)
     bc = (maxc-b) / (maxc-minc)
-    if r == maxc: h = bc-gc
-    elif g == maxc: h = 2.0+rc-bc
-    else: h = 4.0+gc-rc
+    if r == maxc:
+        h = bc-gc
+    elif g == maxc:
+        h = 2.0+rc-bc
+    else:
+        h = 4.0+gc-rc
     h = (h/6.0) % 1.0
     return h, s, v
 
 def hsv_to_rgb(h, s, v):
-    if s == 0.0: return v, v, v
+    if s == 0.0:
+        return v, v, v
     i = int(h*6.0) # XXX assume int() truncates!
     f = (h*6.0) - i
     p = v*(1.0 - s)
     q = v*(1.0 - s*f)
     t = v*(1.0 - s*(1.0-f))
     i = i%6
-    if i == 0: return v, t, p
-    if i == 1: return q, v, p
-    if i == 2: return p, v, t
-    if i == 3: return p, q, v
-    if i == 4: return t, p, v
-    if i == 5: return v, p, q
+    if i == 0:
+        return v, t, p
+    if i == 1:
+        return q, v, p
+    if i == 2:
+        return p, v, t
+    if i == 3:
+        return p, q, v
+    if i == 4:
+        return t, p, v
+    if i == 5:
+        return v, p, q
     # Cannot get here
index 745c9204e11a07f70446985b1517541d2cdcba45..37a2a0216a9f1a9bdcc73f797d72a4957c2b39f5 100644 (file)
@@ -403,12 +403,12 @@ def _resolve_link(path):
     until we either arrive at something that isn't a symlink, or
     encounter a path we've seen before (meaning that there's a loop).
     """
-    paths_seen = []
+    paths_seen = set()
     while islink(path):
         if path in paths_seen:
             # Already seen this path, so we must have a symlink loop
             return None
-        paths_seen.append(path)
+        paths_seen.add(path)
         # Resolve where the link points to
         resolved = os.readlink(path)
         if not isabs(resolved):
index 25931880864e50bc859fd941af45bee0587b5d14..fa1727c81f2582d91fefd13da0bf89ff9339022f 100644 (file)
@@ -2,10 +2,19 @@
 
 import unittest
 import os
+import _tkinter
 from test import support
 from tkinter import Tcl
 from _tkinter import TclError
 
+
+class TkinterTest(unittest.TestCase):
+
+    def testFlattenLen(self):
+        # flatten(<object with no length>)
+        self.assertRaises(TypeError, _tkinter._flatten, True)
+
+
 class TclTest(unittest.TestCase):
 
     def setUp(self):
@@ -151,7 +160,7 @@ class TclTest(unittest.TestCase):
                 os.environ['DISPLAY'] = old_display
 
 def test_main():
-    support.run_unittest(TclTest)
+    support.run_unittest(TclTest, TkinterTest)
 
 if __name__ == "__main__":
     test_main()
index 50950600e2cbd22ed39cebe7b9c845a65a202acb..6e595cc02de109b35e97d405cd2a285bca0e2df4 100644 (file)
@@ -2750,7 +2750,9 @@ Tkinter_Flatten(PyObject* self, PyObject* args)
                return NULL;
 
        context.maxsize = PySequence_Size(item);
-       if (context.maxsize <= 0)
+       if (context.maxsize < 0)
+               return NULL;
+       if (context.maxsize == 0)
                return PyTuple_New(0);
 
        context.tuple = PyTuple_New(context.maxsize);