From c4bbc8d7dc0992b37855e1e7173bab16b32a752d Mon Sep 17 00:00:00 2001
From: Benjamin Peterson
Date: Fri, 30 Jan 2009 03:39:35 +0000
Subject: Merged revisions 68884,68973,68978,69003,69083,69112-69113 via
svnmerge from 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 | 18 ++++++--
Doc/tools/sphinxext/download.html | 2 +-
Lib/colorsys.py | 87 ++++++++++++++++++++++++++-------------
Lib/posixpath.py | 4 +-
Lib/test/test_tcl.py | 11 ++++-
Modules/_tkinter.c | 4 +-
6 files changed, 89 insertions(+), 37 deletions(-)
diff --git a/Doc/documenting/markup.rst b/Doc/documenting/markup.rst
index a919468..9bb5193 100644
--- a/Doc/documenting/markup.rst
+++ b/Doc/documenting/markup.rst
@@ -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 ``` 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:
diff --git a/Doc/tools/sphinxext/download.html b/Doc/tools/sphinxext/download.html
index 5f62562..0de9c2a 100644
--- a/Doc/tools/sphinxext/download.html
+++ b/Doc/tools/sphinxext/download.html
@@ -31,7 +31,7 @@ in the table are the size of the download files in megabytes.
diff --git a/Lib/colorsys.py b/Lib/colorsys.py
index 851417b..a6c0cf6 100644
--- a/Lib/colorsys.py
+++ b/Lib/colorsys.py
@@ -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
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 745c920..37a2a02 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -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):
diff --git a/Lib/test/test_tcl.py b/Lib/test/test_tcl.py
index 2593188..fa1727c 100644
--- a/Lib/test/test_tcl.py
+++ b/Lib/test/test_tcl.py
@@ -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(