Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-07-03 07:47:49 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-07-03 07:55:02 +0300
commit8c15d612a5cdfe39233c7f2b7556742091c82558 (patch)
tree248e7611f9245c1796515baef2ace410bf896c9d /doc
parentb66aa0b0a6b123e833d4038a77a5d3f04c37a9a0 (diff)
Cleanup: pep8
Diffstat (limited to 'doc')
-rwxr-xr-xdoc/blender_file_format/BlendFileDnaExporter_25.py168
-rw-r--r--doc/blender_file_format/BlendFileReader.py126
-rwxr-xr-xdoc/manpage/blender.1.py1
-rw-r--r--doc/python_api/sphinx_doc_gen.py7
4 files changed, 154 insertions, 148 deletions
diff --git a/doc/blender_file_format/BlendFileDnaExporter_25.py b/doc/blender_file_format/BlendFileDnaExporter_25.py
index 64c92c7cf80..a9da79f04d8 100755
--- a/doc/blender_file_format/BlendFileDnaExporter_25.py
+++ b/doc/blender_file_format/BlendFileDnaExporter_25.py
@@ -7,7 +7,7 @@
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
@@ -22,21 +22,21 @@
#
# Name:
# dna.py
-#
+#
# Description:
# Creates a browsable DNA output to HTML.
-#
+#
# Author:
# Jeroen Bakker
-#
+#
# Version:
# v0.1 (12-05-2009) - migration of original source code to python.
# Added code to support blender 2.5 branch
# v0.2 (25-05-2009) - integrated with BlendFileReader.py
-#
+#
# Input:
# blender build executable
-#
+#
# Output:
# dna.html
# dna.css (will only be created when not existing)
@@ -76,12 +76,12 @@ class DNACatalogHTML:
DNACatalog is a catalog of all information in the DNA1 file-block
'''
- def __init__(self, catalog, bpy_module = None):
+ def __init__(self, catalog, bpy_module=None):
self.Catalog = catalog
self.bpy = bpy_module
-
+
def WriteToHTML(self, handle):
-
+
dna_html_template = """
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd>
<html>
@@ -105,10 +105,10 @@ class DNACatalogHTML:
${structs_content}
</body>
</html>"""
-
+
header = self.Catalog.Header
bpy = self.bpy
-
+
# ${version} and ${revision}
if bpy:
version = '.'.join(map(str, bpy.app.version))
@@ -116,7 +116,7 @@ class DNACatalogHTML:
else:
version = str(header.Version)
revision = 'Unknown'
-
+
# ${bitness}
if header.PointerSize == 8:
bitness = '64 bit'
@@ -125,10 +125,10 @@ class DNACatalogHTML:
# ${endianness}
if header.LittleEndianness:
- endianess= 'Little endianness'
+ endianess = 'Little endianness'
else:
- endianess= 'Big endianness'
-
+ endianess = 'Big endianness'
+
# ${structs_list}
log.debug("Creating structs index")
structs_list = ''
@@ -136,7 +136,7 @@ class DNACatalogHTML:
structureIndex = 0
for structure in self.Catalog.Structs:
structs_list += list_item.format(structureIndex, structure.Type.Name)
- structureIndex+=1
+ structureIndex += 1
# ${structs_content}
log.debug("Creating structs content")
@@ -144,20 +144,20 @@ class DNACatalogHTML:
for structure in self.Catalog.Structs:
log.debug(structure.Type.Name)
structs_content += self.Structure(structure)
-
+
d = dict(
- version = version,
- revision = revision,
- bitness = bitness,
- endianness = endianess,
- structs_list = structs_list,
- structs_content = structs_content
+ version=version,
+ revision=revision,
+ bitness=bitness,
+ endianness=endianess,
+ structs_list=structs_list,
+ structs_content=structs_content
)
dna_html = Template(dna_html_template).substitute(d)
dna_html = self.format(dna_html)
handle.write(dna_html)
-
+
def Structure(self, structure):
struct_table_template = """
<table><a name="${struct_name}"></a>
@@ -178,23 +178,23 @@ class DNACatalogHTML:
</table>
<label>Total size: ${size} bytes</label><br/>
<label>(<a href="#top">top</a>)</label><br/>"""
-
+
d = dict(
- struct_name = structure.Type.Name,
- fields = self.StructureFields(structure, None, 0),
- size = str(structure.Type.Size)
+ struct_name=structure.Type.Name,
+ fields=self.StructureFields(structure, None, 0),
+ size=str(structure.Type.Size)
)
-
+
struct_table = Template(struct_table_template).substitute(d)
return struct_table
-
+
def StructureFields(self, structure, parentReference, offset):
fields = ''
for field in structure.Fields:
fields += self.StructureField(field, structure, parentReference, offset)
offset += field.Size(self.Catalog.Header)
return fields
-
+
def StructureField(self, field, structure, parentReference, offset):
structure_field_template = """
<tr>
@@ -205,7 +205,7 @@ class DNACatalogHTML:
<td>${offset}</td>
<td>${size}</td>
</tr>"""
-
+
if field.Type.Structure is None or field.Name.IsPointer():
# ${reference}
@@ -216,37 +216,37 @@ class DNACatalogHTML:
struct = '<a href="#{0}">{0}</a>'.format(structure.Type.Name)
else:
struct = structure.Type.Name
-
+
# ${type}
type = field.Type.Name
-
+
# ${name}
name = field.Name.Name
-
+
# ${offset}
# offset already set
-
+
# ${size}
size = field.Size(self.Catalog.Header)
-
+
d = dict(
- reference = reference,
- struct = struct,
- type = type,
- name = name,
- offset = offset,
- size = size
+ reference=reference,
+ struct=struct,
+ type=type,
+ name=name,
+ offset=offset,
+ size=size
)
-
+
structure_field = Template(structure_field_template).substitute(d)
-
+
elif field.Type.Structure is not None:
reference = field.Name.AsReference(parentReference)
- structure_field = self.StructureFields(field.Type.Structure, reference, offset)
+ structure_field = self.StructureFields(field.Type.Structure, reference, offset)
return structure_field
- def indent(self, input, dent, startswith = ''):
+ def indent(self, input, dent, startswith=''):
output = ''
if dent < 0:
for line in input.split('\n'):
@@ -257,19 +257,19 @@ class DNACatalogHTML:
output += line.lstrip() + '\n' # remove indentation completely
elif dent > 0:
for line in input.split('\n'):
- output += ' '* dent + line + '\n'
+ output += ' ' * dent + line + '\n'
return output
-
+
def format(self, input):
diff = {
- '\n<!DOCTYPE':'<!DOCTYPE',
- '\n</ul>' :'</ul>',
- '<a name' :'\n<a name',
- '<tr>\n' :'<tr>',
- '<tr>' :' <tr>',
- '</th>\n' :'</th>',
- '</td>\n' :'</td>',
- '<tbody>\n' :'<tbody>'
+ '\n<!DOCTYPE': '<!DOCTYPE',
+ '\n</ul>': '</ul>',
+ '<a name': '\n<a name',
+ '<tr>\n': '<tr>',
+ '<tr>': ' <tr>',
+ '</th>\n': '</th>',
+ '</td>\n': '</td>',
+ '<tbody>\n': '<tbody>'
}
output = self.indent(input, 0)
for key, value in diff.items():
@@ -283,17 +283,17 @@ class DNACatalogHTML:
'''
css = """
@CHARSET "ISO-8859-1";
-
+
body {
font-family: verdana;
font-size: small;
}
-
+
div.title {
font-size: large;
text-align: center;
}
-
+
h1 {
page-break-before: always;
}
@@ -304,7 +304,7 @@ class DNACatalogHTML:
margin-right: 3%;
padding-left: 40px;
}
-
+
h1:hover{
background-color: #EBEBEB;
}
@@ -312,7 +312,7 @@ class DNACatalogHTML:
h3 {
padding-left: 40px;
}
-
+
table {
border-width: 1px;
border-style: solid;
@@ -321,21 +321,21 @@ class DNACatalogHTML:
width: 94%;
margin: 20px 3% 10px;
}
-
+
caption {
margin-bottom: 5px;
}
-
+
th {
background-color: #000000;
color:#ffffff;
padding-left:5px;
padding-right:5px;
}
-
+
tr {
}
-
+
td {
border-width: 1px;
border-style: solid;
@@ -343,12 +343,12 @@ class DNACatalogHTML:
padding-left:5px;
padding-right:5px;
}
-
+
label {
float:right;
margin-right: 3%;
}
-
+
ul.multicolumn {
list-style:none;
float:left;
@@ -361,18 +361,18 @@ class DNACatalogHTML:
width:200px;
margin-right:0px;
}
-
+
a {
color:#a000a0;
text-decoration:none;
}
-
+
a:hover {
color:#a000a0;
text-decoration:underline;
}
"""
-
+
css = self.indent(css, 0)
handle.write(css)
@@ -389,13 +389,13 @@ def usage():
print("\tdefault: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py")
print("\twith options: % blender2.5 --background -noaudio --python BlendFileDnaExporter_25.py -- --dna-keep-blend --dna-debug\n")
-
+
######################################################
# Main
######################################################
def main():
-
+
import os, os.path
try:
@@ -408,37 +408,37 @@ def main():
else:
filename = 'dna'
dir = os.path.dirname(__file__)
- Path_Blend = os.path.join(dir, filename + '.blend') # temporary blend file
- Path_HTML = os.path.join(dir, filename + '.html') # output html file
- Path_CSS = os.path.join(dir, 'dna.css') # output css file
+ Path_Blend = os.path.join(dir, filename + '.blend') # temporary blend file
+ Path_HTML = os.path.join(dir, filename + '.html') # output html file
+ Path_CSS = os.path.join(dir, 'dna.css') # output css file
# create a blend file for dna parsing
if not os.path.exists(Path_Blend):
log.info("1: write temp blend file with SDNA info")
log.info(" saving to: " + Path_Blend)
try:
- bpy.ops.wm.save_as_mainfile(filepath = Path_Blend, copy = True, compress = False)
+ bpy.ops.wm.save_as_mainfile(filepath=Path_Blend, copy=True, compress=False)
except:
log.error("Filename {0} does not exist and can't be created... quitting".format(Path_Blend))
return
else:
log.info("1: found blend file with SDNA info")
log.info(" " + Path_Blend)
-
+
# read blend header from blend file
log.info("2: read file:")
-
+
if not dir in sys.path:
sys.path.append(dir)
import BlendFileReader
-
+
handle = BlendFileReader.openBlendFile(Path_Blend)
blendfile = BlendFileReader.BlendFile(handle)
catalog = DNACatalogHTML(blendfile.Catalog, bpy)
# close temp file
handle.close()
-
+
# deleting or not?
if '--dna-keep-blend' in sys.argv:
# keep the blend, useful for studying hexdumps
@@ -449,7 +449,7 @@ def main():
log.info("5: close and delete temp blend:")
log.info(" {0}".format(Path_Blend))
os.remove(Path_Blend)
-
+
# export dna to xhtml
log.info("6: export sdna to xhtml file: %r" % Path_HTML)
handleHTML = open(Path_HTML, "w")
@@ -466,12 +466,12 @@ def main():
if not bpy.app.background:
log.info("7: quit blender")
bpy.ops.wm.exit_blender()
-
+
except ImportError:
log.warning(" skipping, not running in Blender")
usage()
sys.exit(2)
-
+
if __name__ == '__main__':
main()
diff --git a/doc/blender_file_format/BlendFileReader.py b/doc/blender_file_format/BlendFileReader.py
index a4d2f494c5b..d4aed722578 100644
--- a/doc/blender_file_format/BlendFileReader.py
+++ b/doc/blender_file_format/BlendFileReader.py
@@ -7,7 +7,7 @@
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
@@ -34,6 +34,7 @@ log = logging.getLogger("BlendFileReader")
# module global routines
######################################################
+
def ReadString(handle, length):
'''
ReadString reads a String of given length or a zero terminating String
@@ -45,7 +46,7 @@ def ReadString(handle, length):
# length == 0 means we want a zero terminating string
result = ""
s = ReadString(handle, 1)
- while s!="\0":
+ while s != "\0":
result += s
s = ReadString(handle, 1)
return result
@@ -57,7 +58,7 @@ def Read(type, handle, fileheader):
'''
def unpacked_bytes(type_char, size):
return struct.unpack(fileheader.StructPre + type_char, handle.read(size))[0]
-
+
if type == 'ushort':
return unpacked_bytes("H", 2) # unsigned short
elif type == 'short':
@@ -94,10 +95,10 @@ def openBlendFile(filename):
log.debug("decompressing started")
fs = gzip.open(filename, "rb")
handle = tempfile.TemporaryFile()
- data = fs.read(1024*1024)
- while data:
- handle.write(data)
- data = fs.read(1024*1024)
+ data = fs.read(1024 * 1024)
+ while data:
+ handle.write(data)
+ data = fs.read(1024 * 1024)
log.debug("decompressing finished")
fs.close()
log.debug("resetting decompressed file")
@@ -112,7 +113,7 @@ def Align(handle):
offset = handle.tell()
trim = offset % 4
if trim != 0:
- handle.seek(4-trim, os.SEEK_CUR)
+ handle.seek(4 - trim, os.SEEK_CUR)
######################################################
@@ -121,14 +122,14 @@ def Align(handle):
class BlendFile:
'''
- Reads a blendfile and store the header, all the fileblocks, and catalogue
+ Reads a blendfile and store the header, all the fileblocks, and catalogue
structs foound in the DNA fileblock
-
+
- BlendFile.Header (BlendFileHeader instance)
- BlendFile.Blocks (list of BlendFileBlock instances)
- BlendFile.Catalog (DNACatalog instance)
'''
-
+
def __init__(self, handle):
log.debug("initializing reading blend-file")
self.Header = BlendFileHeader(handle)
@@ -141,13 +142,13 @@ class BlendFile:
found_dna_block = True
else:
fileblock.Header.skip(handle)
-
+
self.Blocks.append(fileblock)
fileblock = BlendFileBlock(handle, self)
-
+
# appending last fileblock, "ENDB"
self.Blocks.append(fileblock)
-
+
# seems unused?
"""
def FindBlendFileBlocksWithCode(self, code):
@@ -164,27 +165,27 @@ class BlendFileHeader:
BlendFileHeader allocates the first 12 bytes of a blend file.
It contains information about the hardware architecture.
Header example: BLENDER_v254
-
+
BlendFileHeader.Magic (str)
BlendFileHeader.PointerSize (int)
BlendFileHeader.LittleEndianness (bool)
BlendFileHeader.StructPre (str) see http://docs.python.org/py3k/library/struct.html#byte-order-size-and-alignment
BlendFileHeader.Version (int)
'''
-
+
def __init__(self, handle):
log.debug("reading blend-file-header")
-
+
self.Magic = ReadString(handle, 7)
log.debug(self.Magic)
-
+
pointersize = ReadString(handle, 1)
log.debug(pointersize)
if pointersize == "-":
self.PointerSize = 8
if pointersize == "_":
self.PointerSize = 4
-
+
endianness = ReadString(handle, 1)
log.debug(endianness)
if endianness == "v":
@@ -193,11 +194,11 @@ class BlendFileHeader:
if endianness == "V":
self.LittleEndianness = False
self.StructPre = ">"
-
+
version = ReadString(handle, 3)
log.debug(version)
self.Version = int(version)
-
+
log.debug("{0} {1} {2} {3}".format(self.Magic, self.PointerSize, self.LittleEndianness, version))
@@ -206,11 +207,11 @@ class BlendFileBlock:
BlendFileBlock.File (BlendFile)
BlendFileBlock.Header (FileBlockHeader)
'''
-
+
def __init__(self, handle, blendfile):
self.File = blendfile
self.Header = FileBlockHeader(handle, blendfile.Header)
-
+
def Get(self, handle, path):
log.debug("find dna structure")
dnaIndex = self.Header.SDNAIndex
@@ -232,7 +233,7 @@ class FileBlockHeader:
Count (int)
FileOffset (= file pointer of datablock)
'''
-
+
def __init__(self, handle, fileheader):
self.Code = ReadString(handle, 4).strip()
if self.Code != "ENDB":
@@ -257,28 +258,28 @@ class FileBlockHeader:
class DNACatalog:
'''
DNACatalog is a catalog of all information in the DNA1 file-block
-
+
Header = None
Names = None
Types = None
Structs = None
'''
-
+
def __init__(self, fileheader, handle):
log.debug("building DNA catalog")
- self.Names=[]
- self.Types=[]
- self.Structs=[]
+ self.Names = []
+ self.Types = []
+ self.Structs = []
self.Header = fileheader
-
+
SDNA = ReadString(handle, 4)
-
+
# names
NAME = ReadString(handle, 4)
numberOfNames = Read('uint', handle, fileheader)
log.debug("building #{0} names".format(numberOfNames))
for i in range(numberOfNames):
- name = ReadString(handle,0)
+ name = ReadString(handle, 0)
self.Names.append(DNAName(name))
Align(handle)
@@ -287,7 +288,7 @@ class DNACatalog:
numberOfTypes = Read('uint', handle, fileheader)
log.debug("building #{0} types".format(numberOfTypes))
for i in range(numberOfTypes):
- type = ReadString(handle,0)
+ type = ReadString(handle, 0)
self.Types.append(DNAType(type))
Align(handle)
@@ -321,24 +322,24 @@ class DNACatalog:
class DNAName:
'''
DNAName is a C-type name stored in the DNA.
-
+
Name = str
'''
-
+
def __init__(self, name):
self.Name = name
-
+
def AsReference(self, parent):
if parent is None:
result = ""
else:
- result = parent+"."
-
+ result = parent + "."
+
result = result + self.ShortName()
return result
def ShortName(self):
- result = self.Name;
+ result = self.Name
result = result.replace("*", "")
result = result.replace("(", "")
result = result.replace(")", "")
@@ -346,12 +347,12 @@ class DNAName:
if Index != -1:
result = result[0:Index]
return result
-
+
def IsPointer(self):
- return self.Name.find("*")>-1
+ return self.Name.find("*") > -1
def IsMethodPointer(self):
- return self.Name.find("(*")>-1
+ return self.Name.find("(*") > -1
def ArraySize(self):
result = 1
@@ -360,10 +361,10 @@ class DNAName:
while Index != -1:
Index2 = Temp.find("]")
- result*=int(Temp[Index+1:Index2])
- Temp = Temp[Index2+1:]
+ result *= int(Temp[Index + 1:Index2])
+ Temp = Temp[Index2 + 1:]
Index = Temp.find("[")
-
+
return result
@@ -375,46 +376,46 @@ class DNAType:
Size = int
Structure = DNAStructure
'''
-
+
def __init__(self, aName):
self.Name = aName
- self.Structure=None
+ self.Structure = None
class DNAStructure:
'''
DNAType is a C-type structure stored in the DNA
-
+
Type = DNAType
Fields = [DNAField]
'''
-
+
def __init__(self, aType):
self.Type = aType
self.Type.Structure = self
- self.Fields=[]
-
+ self.Fields = []
+
def GetField(self, header, handle, path):
splitted = path.partition(".")
name = splitted[0]
rest = splitted[2]
- offset = 0;
+ offset = 0
for field in self.Fields:
if field.Name.ShortName() == name:
- log.debug("found "+name+"@"+str(offset))
+ log.debug("found " + name + "@" + str(offset))
handle.seek(offset, os.SEEK_CUR)
return field.DecodeField(header, handle, rest)
else:
offset += field.Size(header)
- log.debug("error did not find "+path)
+ log.debug("error did not find " + path)
return None
class DNAField:
'''
DNAField is a coupled DNAType and DNAName.
-
+
Type = DNAType
Name = DNAName
'''
@@ -422,25 +423,24 @@ class DNAField:
def __init__(self, aType, aName):
self.Type = aType
self.Name = aName
-
+
def Size(self, header):
if self.Name.IsPointer() or self.Name.IsMethodPointer():
- return header.PointerSize*self.Name.ArraySize()
+ return header.PointerSize * self.Name.ArraySize()
else:
- return self.Type.Size*self.Name.ArraySize()
+ return self.Type.Size * self.Name.ArraySize()
def DecodeField(self, header, handle, path):
if path == "":
if self.Name.IsPointer():
return Read('pointer', handle, header)
- if self.Type.Name=="int":
+ if self.Type.Name == "int":
return Read('int', handle, header)
- if self.Type.Name=="short":
+ if self.Type.Name == "short":
return Read('short', handle, header)
- if self.Type.Name=="float":
+ if self.Type.Name == "float":
return Read('float', handle, header)
- if self.Type.Name=="char":
+ if self.Type.Name == "char":
return ReadString(handle, self.Name.ArraySize())
else:
return self.Type.Structure.GetField(header, handle, path)
-
diff --git a/doc/manpage/blender.1.py b/doc/manpage/blender.1.py
index 52856717b4a..0890547906a 100755
--- a/doc/manpage/blender.1.py
+++ b/doc/manpage/blender.1.py
@@ -42,6 +42,7 @@ def man_format(data):
data = data.replace("\t", " ")
return data
+
if len(sys.argv) != 3:
import getopt
raise getopt.GetoptError("Usage: %s <path-to-blender> <output-filename>" % sys.argv[0])
diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py
index 50b07cabff4..93ffad12bd6 100644
--- a/doc/python_api/sphinx_doc_gen.py
+++ b/doc/python_api/sphinx_doc_gen.py
@@ -73,6 +73,8 @@ def rna_info_BuildRNAInfo_cache():
if rna_info_BuildRNAInfo_cache.ret is None:
rna_info_BuildRNAInfo_cache.ret = rna_info.BuildRNAInfo()
return rna_info_BuildRNAInfo_cache.ret
+
+
rna_info_BuildRNAInfo_cache.ret = None
# --- end rna_info cache
@@ -431,7 +433,7 @@ else:
BLENDER_VERSION_DOTS = ".".join(blender_version_strings)
if BLENDER_REVISION != "Unknown":
# '2.62a SHA1' (release) or '2.62.1 SHA1' (non-release)
- BLENDER_VERSION_DOTS += " " + BLENDER_REVISION
+ BLENDER_VERSION_DOTS += " " + BLENDER_REVISION
if is_release:
# '2_62a_release'
@@ -513,6 +515,8 @@ def escape_rst(text):
""" Escape plain text which may contain characters used by RST.
"""
return text.translate(escape_rst.trans)
+
+
escape_rst.trans = str.maketrans({
"`": "\\`",
"|": "\\|",
@@ -1015,6 +1019,7 @@ def pymodule2sphinx(basepath, module_name, module, title):
file.close()
+
# Changes in Blender will force errors here
context_type_map = {
"active_base": ("ObjectBase", False),