diff --git a/build.py b/build.py index 04e35317..3037246e 100755 --- a/build.py +++ b/build.py @@ -231,16 +231,16 @@ def setPythonVersion(args): else: PYTHON = args[idx+1] del args[idx:idx+2] - PYVER = runcmd('"%s" -c "import sys; print(sys.version[:3])"' % PYTHON, + PYVER = runcmd([PYTHON, '-c', 'import sys; print(sys.version[:3])'], getOutput=True, echoCmd=False) PYSHORTVER = PYVER[0] + PYVER[2] break if havePyVer: if isWindows and os.environ.get('TOOLS'): - # Use $TOOLS to find the correct Python. It should be the install - # root of all Python's on the system, with the 64-bit ones in an - # amd64 subfolder, like this: + # Use $TOOLS to find the correct Python. If set then it should be + # the install root of all Python's on the system, with the 64-bit + # ones in an amd64 subfolder, like this: # # $TOOLS\Python27\python.exe # $TOOLS\Python33\python.exe @@ -282,11 +282,13 @@ def setPythonVersion(args): PYSHORTVER = PYVER[0] + PYVER[2] PYTHON = os.path.abspath(PYTHON) - msg('Build using: "%s"' % PYTHON) + msg('Will build using: "%s"' % PYTHON) - msg(runcmd('"%s" -c "import sys; print(sys.version)"' % PYTHON, True, False)) - PYTHON_ARCH = runcmd('"%s" -c "import platform; print(platform.architecture()[0])"' - % PYTHON, True, False) + msg(runcmd([PYTHON, '-c', 'import sys; print(sys.version)'], True, False)) + PYTHON_ARCH = runcmd( + [PYTHON, '-c', 'import platform; print(platform.architecture()[0])'], + True, False) + msg('Python\'s architecture is %s' % PYTHON_ARCH) os.environ['PYTHON'] = PYTHON diff --git a/buildtools/config.py b/buildtools/config.py index 4a1cd0c3..560eb607 100644 --- a/buildtools/config.py +++ b/buildtools/config.py @@ -781,6 +781,22 @@ def getVcsRev(): def runcmd(cmd, getOutput=False, echoCmd=True, fatal=True): + """ + Runs a give command-line command, optionally returning the output. + """ + if isinstance(cmd, list): + # add quotes to elements of the command that need it + cmd = cmd[:] + for idx, item in enumerate(cmd): + if ' ' in item or '\t' in item or ';' in item: + if item[0] not in ['"', "'"]: + if '"' in item: + item = item.replace('"', '\\"') + item = '"{}"'.format(item) + cmd[idx] = item + # convert the resulting command to a string + cmd = ' '.join(cmd) + if echoCmd: msg(cmd) diff --git a/sphinxtools/librarydescription.py b/sphinxtools/librarydescription.py index 5c4828a8..27271a55 100644 --- a/sphinxtools/librarydescription.py +++ b/sphinxtools/librarydescription.py @@ -941,7 +941,7 @@ class Property(ChildrenBase): def __init__(self, name, item): ChildrenBase.__init__(self, name, object_types.PROPERTY) - + self.getter = self.setter = self.deleter = '' try: @@ -972,19 +972,22 @@ class Property(ChildrenBase): if self.is_redundant: return - docs = '' - for item in [self.setter, self.getter, self.deleter]: - if item and 'lambda' not in item and not item.startswith('_'): - if docs: - docs += ', :meth:`~%s.%s` '%(class_name, item) - else: - docs += ':meth:`~%s.%s` '%(class_name, item) - + docs = self.docs + if not docs: + for item in [self.setter, self.getter, self.deleter]: + if item and 'lambda' not in item and not item.startswith('_'): + if docs: + docs += ', :meth:`~%s.%s` ' % (class_name, item) + else: + docs += ':meth:`~%s.%s` ' % (class_name, item) + + if docs: + docs = 'See %s' % docs + if docs: - docs = 'See %s'%docs - - stream.write(' .. attribute:: %s\n\n'%self.GetShortName()) - stream.write(' %s\n\n\n'%docs) + stream.write(' .. attribute:: %s\n\n' % self.GetShortName()) + docs = '\n '.join(docs.splitlines()) + stream.write(' %s\n\n\n' % docs) class Attribute(ChildrenBase): diff --git a/sphinxtools/modulehunter.py b/sphinxtools/modulehunter.py index f484ec1f..7fbd5a55 100644 --- a/sphinxtools/modulehunter.py +++ b/sphinxtools/modulehunter.py @@ -318,9 +318,6 @@ def describe_class(obj, module_class, module_name, constants): if class_name == 'object': return - if 'GenBitmapButton' in class_name: - print('GenBitmapButton') - class_name = module_class.name + '.' + class_name docs = getdoc(obj)