'stud6a.dat',
'stud10.dat',
'stud15.dat',
+ # mini-figs
'hipstud.dat',
's/973s01.dat'
}
LdrawRefsTree = tuple[Path, '_SubRefs']
_SubRefs = dict[str, LdrawRefsTree]
+_N_TOKS_PER_REFLINE = 15
-_N_TOKS_PER_REFLINE = 15
+class LdrawPathFailure(Exception):
+ 'For when no proper .dat file found to filename.'
+ pass
class LdrawDb:
path = self._root.joinpath(prefix, filename)
if path.exists():
return path
- raise Exception(f'invalid ldraw reference: {filename}')
+ raise LdrawPathFailure(f'invalid ldraw reference: {filename}')
def _walk_tree(
self,
from typing import Callable, Optional, Self
# ourselves
from bricksplom.constants import CHAR_NEWLINE
-from bricksplom.ldraw import LdrawDb, LdrawRefsTree
+from bricksplom.ldraw import LdrawDb, LdrawPathFailure, LdrawRefsTree
CHAR_SEP_TOKEN = ' '
CHAR_COMMENT = '#'
a_key, a_val_str = attr.split(CHAR_ATTR_EQ, maxsplit=1)
assert a_key in annos
if annos[a_key] is int:
- assert a_val_str.isdigit()
+ assert a_val_str.isdigit(), a_val_str
setattr(attrs, a_key, int(a_val_str))
else:
setattr(attrs, a_key, a_val_str)
for design in [design for design in self.designs.values()
if not (design.alternate_to or design.ldraw)]:
filename = f'{design.id_}.dat'
- if self.ldraw.path(filename).exists():
+ exists = False
+ try:
+ exists = self.ldraw.path(filename).exists()
+ except LdrawPathFailure:
+ pass
+ if exists:
assert design.direct_attrs is not None
design.direct_attrs.ldraw = filename
self._check_consistencies()