Skip to content

Commit af9d663

Browse files
committed
chore(generator_version): add attribute to symbol and footprint
Kicad v8 has this attribute defined to "8.0". So once reading/writing this kind of file the value shouldn't disappear. Keep it backport compatible with older version, where this attribute does not exist. Signed-off-by: Andrej Valek <andy@skyrain.eu>
1 parent ef2d6e3 commit af9d663

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/kiutils/footprint.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,9 @@ def libId(self, symbol_id: str):
716716
generator: Optional[str] = None
717717
"""The ``generator`` token attribute defines the program used to write the file"""
718718

719+
generator_version: Optional[str] = None
720+
"""The ``generator_version`` token attribute defines the kicad version used to write the file"""
721+
719722
locked: bool = False
720723
"""The optional ``locked`` token defines a flag to indicate the footprint cannot be edited"""
721724

@@ -864,6 +867,7 @@ def from_sexpr(cls, exp: list) -> Footprint:
864867
elif item == 'placed': object.placed = True
865868
elif item[0] == 'version': object.version = item[1]
866869
elif item[0] == 'generator': object.generator = item[1]
870+
elif item[0] == 'generator_version': object.generator_version = item[1]
867871
elif item[0] == 'layer': object.layer = item[1]
868872
elif item[0] == 'tedit': object.tedit = item[1]
869873
elif item[0] == 'tstamp': object.tstamp = item[1]
@@ -1021,9 +1025,10 @@ def to_sexpr(self, indent=0, newline=True, layerInFirstLine=False) -> str:
10211025
placed = ' placed' if self.placed else ''
10221026
version = f' (version {self.version})' if self.version is not None else ''
10231027
generator = f' (generator {self.generator})' if self.generator is not None else ''
1028+
generator_version = f' (generator_version {self.generator_version})' if self.generator_version is not None else ''
10241029
tstamp = f' (tstamp {self.tstamp})' if self.tstamp is not None else ''
10251030

1026-
expression = f'{indents}(footprint "{dequote(self.libId)}"{locked}{placed}{version}{generator}'
1031+
expression = f'{indents}(footprint "{dequote(self.libId)}"{locked}{placed}{version}{generator}{generator_version}'
10271032
if layerInFirstLine:
10281033
expression += f' (layer "{dequote(self.layer)}")\n'
10291034
else:

src/kiutils/symbol.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,9 @@ class SymbolLib():
492492
generator: Optional[str] = None
493493
"""The ``generator`` token attribute defines the program used to write the file"""
494494

495+
generator_version: Optional[str] = None
496+
"""The ``generator_version`` token attribute defines the kicad version used to write the file"""
497+
495498
symbols: List[Symbol] = field(default_factory=list)
496499
"""The ``symbols`` token defines a list of zero or more symbols that are part of the symbol library"""
497500

@@ -548,6 +551,7 @@ def from_sexpr(cls, exp: list) -> SymbolLib:
548551
for item in exp[1:]:
549552
if item[0] == 'version': object.version = item[1]
550553
elif item[0] == 'generator': object.generator = item[1]
554+
elif item[0] == 'generator_version': object.generator_version = item[1]
551555
elif item[0] == 'symbol': object.symbols.append(Symbol().from_sexpr(item))
552556
return object
553557

@@ -583,8 +587,10 @@ def to_sexpr(self, indent: int = 0, newline: bool = True) -> str:
583587
"""
584588
indents = ' '*indent
585589
endline = '\n' if newline else ''
590+
generator = f' (generator {self.generator})' if self.generator is not None else ''
591+
generator_version = f' (generator_version {self.generator_version})' if self.generator_version is not None else ''
586592

587-
expression = f'{indents}(kicad_symbol_lib (version {self.version}) (generator {self.generator})\n'
593+
expression = f'{indents}(kicad_symbol_lib (version {self.version}){generator}{generator_version}\n'
588594
for item in self.symbols:
589595
expression += f'{indents}{item.to_sexpr(indent+2)}'
590596
expression += f'{indents}){endline}'

0 commit comments

Comments
 (0)