BOM python plugins: fix some issues related to python2/3 and utf-8 chars.
This commit is contained in:
parent
3100cd3599
commit
35f9cd2634
|
@ -24,6 +24,14 @@ import kicad_netlist_reader
|
||||||
import csv
|
import csv
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# A helper function to convert a UTF8/Unicode/locale string read in netlist
|
||||||
|
# for python2 or python3
|
||||||
|
def fromNetlistText( aText ):
|
||||||
|
try:
|
||||||
|
return aText.encode('utf-8').decode('cp1252')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
return aText
|
||||||
|
|
||||||
def myEqu(self, other):
|
def myEqu(self, other):
|
||||||
"""myEqu is a more advanced equivalence function for components which is
|
"""myEqu is a more advanced equivalence function for components which is
|
||||||
used by component grouping. Normal operation is to group components based
|
used by component grouping. Normal operation is to group components based
|
||||||
|
@ -87,7 +95,7 @@ out = csv.writer( f, lineterminator='\n', delimiter=',', quotechar='\"', quoting
|
||||||
def writerow( acsvwriter, columns ):
|
def writerow( acsvwriter, columns ):
|
||||||
utf8row = []
|
utf8row = []
|
||||||
for col in columns:
|
for col in columns:
|
||||||
utf8row.append( str(col) ) # currently, no change
|
utf8row.append( fromNetlistText( str(col) ) )
|
||||||
acsvwriter.writerow( utf8row )
|
acsvwriter.writerow( utf8row )
|
||||||
|
|
||||||
# Output a set of rows as a header providing general information
|
# Output a set of rows as a header providing general information
|
||||||
|
|
|
@ -20,6 +20,14 @@ import kicad_netlist_reader
|
||||||
import csv
|
import csv
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# A helper function to convert a UTF8/Unicode/locale string read in netlist
|
||||||
|
# for python2 or python3
|
||||||
|
def fromNetlistText( aText ):
|
||||||
|
try:
|
||||||
|
return aText.encode('utf-8').decode('cp1252')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
return aText
|
||||||
|
|
||||||
# Generate an instance of a generic netlist, and load the netlist tree from
|
# Generate an instance of a generic netlist, and load the netlist tree from
|
||||||
# the command line option. If the file doesn't exist, execution will stop
|
# the command line option. If the file doesn't exist, execution will stop
|
||||||
net = kicad_netlist_reader.netlist(sys.argv[1])
|
net = kicad_netlist_reader.netlist(sys.argv[1])
|
||||||
|
@ -34,7 +42,7 @@ except IOError:
|
||||||
f = sys.stdout
|
f = sys.stdout
|
||||||
|
|
||||||
# Create a new csv writer object to use as the output formatter
|
# Create a new csv writer object to use as the output formatter
|
||||||
out = csv.writer(f, lineterminator='\n', delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL)
|
out = csv.writer(f, delimiter=',', quotechar='\"', quoting=csv.QUOTE_ALL)
|
||||||
|
|
||||||
# Output a set of rows for a header providing general information
|
# Output a set of rows for a header providing general information
|
||||||
out.writerow(['Source:', net.getSource()])
|
out.writerow(['Source:', net.getSource()])
|
||||||
|
@ -44,6 +52,7 @@ out.writerow( ['Generator:', sys.argv[0]] )
|
||||||
out.writerow(['Component Count:', len(net.components)])
|
out.writerow(['Component Count:', len(net.components)])
|
||||||
out.writerow(['Ref', 'Qnty', 'Value', 'Cmp name', 'Footprint', 'Description', 'Vendor'])
|
out.writerow(['Ref', 'Qnty', 'Value', 'Cmp name', 'Footprint', 'Description', 'Vendor'])
|
||||||
|
|
||||||
|
|
||||||
# Get all of the components in groups of matching parts + values
|
# Get all of the components in groups of matching parts + values
|
||||||
# (see ky_generic_netlist_reader.py)
|
# (see ky_generic_netlist_reader.py)
|
||||||
grouped = net.groupComponents()
|
grouped = net.groupComponents()
|
||||||
|
@ -55,11 +64,15 @@ for group in grouped:
|
||||||
# Add the reference of every component in the group and keep a reference
|
# Add the reference of every component in the group and keep a reference
|
||||||
# to the component so that the other data can be filled in once per group
|
# to the component so that the other data can be filled in once per group
|
||||||
for component in group:
|
for component in group:
|
||||||
refs += component.getRef() + ", "
|
refs += fromNetlistText( component.getRef() ) + ", "
|
||||||
c = component
|
c = component
|
||||||
|
|
||||||
# Fill in the component groups common data
|
# Fill in the component groups common data
|
||||||
out.writerow([refs, len(group), c.getValue(), c.getPartName(), c.getFootprint(),
|
out.writerow([refs, len(group),
|
||||||
c.getDescription(), c.getField("Vendor")])
|
fromNetlistText( c.getValue() ),
|
||||||
|
fromNetlistText( c.getPartName() ),
|
||||||
|
fromNetlistText( c.getFootprint() ),
|
||||||
|
fromNetlistText( c.getDescription() ),
|
||||||
|
fromNetlistText( c.getField("Vendor") )])
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,14 @@ import kicad_netlist_reader
|
||||||
import csv
|
import csv
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
# A helper function to convert a UTF8/Unicode/locale string read in netlist
|
||||||
|
# for python2 or python3
|
||||||
|
def fromNetlistText( aText ):
|
||||||
|
try:
|
||||||
|
return aText.encode('utf-8').decode('cp1252')
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
return aText
|
||||||
|
|
||||||
# Generate an instance of a generic netlist, and load the netlist tree from
|
# Generate an instance of a generic netlist, and load the netlist tree from
|
||||||
# the command line option. If the file doesn't exist, execution will stop
|
# the command line option. If the file doesn't exist, execution will stop
|
||||||
net = kicad_netlist_reader.netlist(sys.argv[1])
|
net = kicad_netlist_reader.netlist(sys.argv[1])
|
||||||
|
@ -42,7 +50,7 @@ out = csv.writer(f, lineterminator='\n', delimiter=',', quotechar="\"", quoting=
|
||||||
def writerow( acsvwriter, columns ):
|
def writerow( acsvwriter, columns ):
|
||||||
utf8row = []
|
utf8row = []
|
||||||
for col in columns:
|
for col in columns:
|
||||||
utf8row.append( str(col) )
|
utf8row.append( fromNetlistText( str(col) ) )
|
||||||
acsvwriter.writerow( utf8row )
|
acsvwriter.writerow( utf8row )
|
||||||
|
|
||||||
components = net.getInterestingComponents()
|
components = net.getInterestingComponents()
|
||||||
|
|
|
@ -63,7 +63,8 @@ html = html.replace('<!--TOOL-->', net.getTool())
|
||||||
html = html.replace('<!--COMPCOUNT-->', "<b>Component Count:</b>" + \
|
html = html.replace('<!--COMPCOUNT-->', "<b>Component Count:</b>" + \
|
||||||
str(len(components)))
|
str(len(components)))
|
||||||
|
|
||||||
row = "<tr><th style='width:640px'>Ref</th>"
|
row =""
|
||||||
|
row += "<tr><th>Ref</th>"
|
||||||
row += "<th>Qnty</th>"
|
row += "<th>Qnty</th>"
|
||||||
row += "<th>Value</th>" + "<th>Part</th>" + "<th>Datasheet</th>"
|
row += "<th>Value</th>" + "<th>Part</th>" + "<th>Datasheet</th>"
|
||||||
row += "<th>Description</th>" + "<th>Vendor</th></tr>"
|
row += "<th>Description</th>" + "<th>Vendor</th></tr>"
|
||||||
|
@ -92,8 +93,12 @@ for group in grouped:
|
||||||
row += "</td><td>" + c.getDatasheet()
|
row += "</td><td>" + c.getDatasheet()
|
||||||
row += "</td><td>" + c.getDescription()
|
row += "</td><td>" + c.getDescription()
|
||||||
row += "</td><td>" + c.getField("Vendor")+ "</td></tr>"
|
row += "</td><td>" + c.getField("Vendor")+ "</td></tr>"
|
||||||
|
row += "\n"
|
||||||
|
|
||||||
html = html.replace('<!--TABLEROW-->', row + "<!--TABLEROW-->")
|
html = html.replace('<!--TABLEROW-->', row + "<!--TABLEROW-->")
|
||||||
|
|
||||||
# Print the formatted html to the file
|
# Print the formatted html to the file
|
||||||
print(html, file=f)
|
try:
|
||||||
|
print(html.encode('utf-8').decode('cp1252'), file=f)
|
||||||
|
except:
|
||||||
|
print(html, file=f)
|
||||||
|
|
|
@ -128,4 +128,7 @@ for group in grouped:
|
||||||
html = html.replace('<!--TABLEROW-->', row + "<!--TABLEROW-->")
|
html = html.replace('<!--TABLEROW-->', row + "<!--TABLEROW-->")
|
||||||
|
|
||||||
# Print the formatted html to output file
|
# Print the formatted html to output file
|
||||||
print(html, file=f)
|
try:
|
||||||
|
print(html.encode('utf-8').decode('cp1252'), file=f)
|
||||||
|
except:
|
||||||
|
print(html, file=f)
|
||||||
|
|
Loading…
Reference in New Issue