Template refactor (#385)
* Initial implementation of new textx parser for template * Implemented parser as singleton * Moved grammar to .tx file * Added filter templates * Added filter templates * Added tests for nested templates * Added tests for filter+path_sep * Added tests for filter+path_sep * Added punctuation templates * Added hook for --replace-keywords * Updated docs for phototemplate * Updated docs for phototemplate * Updated tests data * Updated tests data * Updated docs for phototemplate * Version bump * Updated CLI help * Fixed template processing for boolean, default
This commit is contained in:
48
tests/photoinfo_mock.py
Normal file
48
tests/photoinfo_mock.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""Selectively mock a PhotoInfo object"""
|
||||
|
||||
from osxphotos import PhotoInfo
|
||||
|
||||
|
||||
class PhotoInfoMock(PhotoInfo):
|
||||
def __init__(self, photo, **kwargs):
|
||||
self._photo = photo
|
||||
self._db = photo._db
|
||||
self._info = photo._info
|
||||
|
||||
for kw in kwargs:
|
||||
if hasattr(photo, kw):
|
||||
setattr(self, f"_mock_{kw}", kwargs[kw])
|
||||
else:
|
||||
raise ValueError(f"Not a PhotoInfo attribute: {kw}")
|
||||
|
||||
@property
|
||||
def hdr(self):
|
||||
return (
|
||||
self._mock_hdr
|
||||
if getattr(self, "_mock_hdr", None) is not None
|
||||
else self._photo.hdr
|
||||
)
|
||||
|
||||
@property
|
||||
def hasadjustments(self):
|
||||
return (
|
||||
self._mock_hasadjustments
|
||||
if getattr(self, "_mock_hasadjustments", None) is not None
|
||||
else self._photo.hasadjustments
|
||||
)
|
||||
|
||||
@property
|
||||
def keywords(self):
|
||||
return (
|
||||
self._mock_keywords
|
||||
if getattr(self, "_mock_keywords", None) is not None
|
||||
else self._photo.keywords
|
||||
)
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
return (
|
||||
self._mock_title
|
||||
if getattr(self, "_mock_title", None) is not None
|
||||
else self._photo.title
|
||||
)
|
||||
Reference in New Issue
Block a user