Convert many arguments to keyword-only
This commit is contained in:
parent
693fce0d34
commit
7e9c78bb19
1 changed files with 37 additions and 26 deletions
|
@ -457,11 +457,12 @@ class PDBAlbumMixin:
|
||||||
|
|
||||||
def new_album(
|
def new_album(
|
||||||
self,
|
self,
|
||||||
|
title=None,
|
||||||
|
description=None,
|
||||||
|
*,
|
||||||
associated_directory=None,
|
associated_directory=None,
|
||||||
commit=True,
|
commit=True,
|
||||||
description=None,
|
|
||||||
photos=None,
|
photos=None,
|
||||||
title=None,
|
|
||||||
):
|
):
|
||||||
'''
|
'''
|
||||||
Create a new album. Photos can be added now or later.
|
Create a new album. Photos can be added now or later.
|
||||||
|
@ -558,6 +559,7 @@ class PDBPhotoMixin:
|
||||||
def new_photo(
|
def new_photo(
|
||||||
self,
|
self,
|
||||||
filename,
|
filename,
|
||||||
|
*,
|
||||||
allow_duplicates=False,
|
allow_duplicates=False,
|
||||||
commit=True,
|
commit=True,
|
||||||
do_metadata=True,
|
do_metadata=True,
|
||||||
|
@ -629,6 +631,7 @@ class PDBPhotoMixin:
|
||||||
|
|
||||||
def search(
|
def search(
|
||||||
self,
|
self,
|
||||||
|
*,
|
||||||
area=None,
|
area=None,
|
||||||
width=None,
|
width=None,
|
||||||
height=None,
|
height=None,
|
||||||
|
@ -885,9 +888,9 @@ class PDBTagMixin:
|
||||||
def get_tags(self):
|
def get_tags(self):
|
||||||
yield from self.get_things(thing_type='tag')
|
yield from self.get_things(thing_type='tag')
|
||||||
|
|
||||||
def new_tag(self, tagname, commit=True):
|
def new_tag(self, tagname, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Register a new tag in and return the Tag object.
|
Register a new tag and return the Tag object.
|
||||||
'''
|
'''
|
||||||
tagname = normalize_tagname(tagname)
|
tagname = normalize_tagname(tagname)
|
||||||
try:
|
try:
|
||||||
|
@ -947,6 +950,7 @@ class PhotoDB(PDBAlbumMixin, PDBPhotoMixin, PDBTagMixin):
|
||||||
self,
|
self,
|
||||||
databasename=None,
|
databasename=None,
|
||||||
data_directory=None,
|
data_directory=None,
|
||||||
|
*,
|
||||||
id_length=None,
|
id_length=None,
|
||||||
):
|
):
|
||||||
if databasename is None:
|
if databasename is None:
|
||||||
|
@ -1000,7 +1004,14 @@ class PhotoDB(PDBAlbumMixin, PDBPhotoMixin, PDBTagMixin):
|
||||||
task['action'](*args, **kwargs)
|
task['action'](*args, **kwargs)
|
||||||
self.sql.commit()
|
self.sql.commit()
|
||||||
|
|
||||||
def digest_directory(self, directory, exclude_directories=None, exclude_filenames=None, commit=True):
|
def digest_directory(
|
||||||
|
self,
|
||||||
|
directory,
|
||||||
|
*,
|
||||||
|
exclude_directories=None,
|
||||||
|
exclude_filenames=None,
|
||||||
|
commit=True,
|
||||||
|
):
|
||||||
'''
|
'''
|
||||||
Create an album, and add the directory's contents to it recursively.
|
Create an album, and add the directory's contents to it recursively.
|
||||||
|
|
||||||
|
@ -1277,7 +1288,7 @@ class ObjectBase:
|
||||||
|
|
||||||
|
|
||||||
class GroupableMixin:
|
class GroupableMixin:
|
||||||
def add(self, member, commit=True):
|
def add(self, member, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Add a child object to this group.
|
Add a child object to this group.
|
||||||
Child must be of the same type as the calling object.
|
Child must be of the same type as the calling object.
|
||||||
|
@ -1317,7 +1328,7 @@ class GroupableMixin:
|
||||||
results.sort(key=lambda x: x.id)
|
results.sort(key=lambda x: x.id)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def delete(self, delete_children=False, commit=True):
|
def delete(self, *, delete_children=False, commit=True):
|
||||||
'''
|
'''
|
||||||
Delete this object's relationships to other groupables.
|
Delete this object's relationships to other groupables.
|
||||||
Any unique / specific deletion methods should be written within the
|
Any unique / specific deletion methods should be written within the
|
||||||
|
@ -1365,7 +1376,7 @@ class GroupableMixin:
|
||||||
parentid = fetch[SQL_TAGGROUP['parentid']]
|
parentid = fetch[SQL_TAGGROUP['parentid']]
|
||||||
return self.group_getter(id=parentid)
|
return self.group_getter(id=parentid)
|
||||||
|
|
||||||
def join_group(self, group, commit=True):
|
def join_group(self, group, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Leave the current group, then call `group.add(self)`.
|
Leave the current group, then call `group.add(self)`.
|
||||||
'''
|
'''
|
||||||
|
@ -1380,7 +1391,7 @@ class GroupableMixin:
|
||||||
self.leave_group(commit=commit)
|
self.leave_group(commit=commit)
|
||||||
group.add(self, commit=commit)
|
group.add(self, commit=commit)
|
||||||
|
|
||||||
def leave_group(self, commit=True):
|
def leave_group(self, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Leave the current group and become independent.
|
Leave the current group and become independent.
|
||||||
'''
|
'''
|
||||||
|
@ -1416,7 +1427,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return 'Album:{id}'.format(id=self.id)
|
return 'Album:{id}'.format(id=self.id)
|
||||||
|
|
||||||
def add_photo(self, photo, commit=True):
|
def add_photo(self, photo, *, commit=True):
|
||||||
if self.photodb != photo.photodb:
|
if self.photodb != photo.photodb:
|
||||||
raise ValueError('Not the same PhotoDB')
|
raise ValueError('Not the same PhotoDB')
|
||||||
if self.has_photo(photo):
|
if self.has_photo(photo):
|
||||||
|
@ -1426,7 +1437,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - add photo to album')
|
log.debug('Committing - add photo to album')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def add_tag_to_all(self, tag, nested_children=True, commit=True):
|
def add_tag_to_all(self, tag, *, nested_children=True, commit=True):
|
||||||
tag = self.photodb.get_tag(tag)
|
tag = self.photodb.get_tag(tag)
|
||||||
if nested_children:
|
if nested_children:
|
||||||
photos = self.walk_photos()
|
photos = self.walk_photos()
|
||||||
|
@ -1439,7 +1450,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - add tag to all')
|
log.debug('Committing - add tag to all')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def delete(self, delete_children=False, commit=True):
|
def delete(self, *, delete_children=False, commit=True):
|
||||||
log.debug('Deleting album {album:r}'.format(album=self))
|
log.debug('Deleting album {album:r}'.format(album=self))
|
||||||
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
|
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
|
||||||
self.photodb.cur.execute('DELETE FROM albums WHERE id == ?', [self.id])
|
self.photodb.cur.execute('DELETE FROM albums WHERE id == ?', [self.id])
|
||||||
|
@ -1448,7 +1459,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - delete album')
|
log.debug('Committing - delete album')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def edit(self, title=None, description=None, commit=True):
|
def edit(self, title=None, description=None, *, commit=True):
|
||||||
if title is None:
|
if title is None:
|
||||||
title = self.title
|
title = self.title
|
||||||
if description is None:
|
if description is None:
|
||||||
|
@ -1486,7 +1497,7 @@ class Album(ObjectBase, GroupableMixin):
|
||||||
photos.sort(key=lambda x: x.basename.lower())
|
photos.sort(key=lambda x: x.basename.lower())
|
||||||
return photos
|
return photos
|
||||||
|
|
||||||
def remove_photo(self, photo, commit=True):
|
def remove_photo(self, photo, *, commit=True):
|
||||||
if not self.has_photo(photo):
|
if not self.has_photo(photo):
|
||||||
return
|
return
|
||||||
self.photodb.cur.execute(
|
self.photodb.cur.execute(
|
||||||
|
@ -1544,7 +1555,7 @@ class Photo(ObjectBase):
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return 'Photo:{id}'.format(id=self.id)
|
return 'Photo:{id}'.format(id=self.id)
|
||||||
|
|
||||||
def add_tag(self, tag, commit=True):
|
def add_tag(self, tag, *, commit=True):
|
||||||
tag = self.photodb.get_tag(tag)
|
tag = self.photodb.get_tag(tag)
|
||||||
|
|
||||||
if self.has_tag(tag, check_children=False):
|
if self.has_tag(tag, check_children=False):
|
||||||
|
@ -1587,7 +1598,7 @@ class Photo(ObjectBase):
|
||||||
for tag in other_photo.tags():
|
for tag in other_photo.tags():
|
||||||
self.add_tag(tag)
|
self.add_tag(tag)
|
||||||
|
|
||||||
def delete(self, delete_file=False, commit=True):
|
def delete(self, *, delete_file=False, commit=True):
|
||||||
'''
|
'''
|
||||||
Delete the Photo and its relation to any tags and albums.
|
Delete the Photo and its relation to any tags and albums.
|
||||||
'''
|
'''
|
||||||
|
@ -1608,7 +1619,7 @@ class Photo(ObjectBase):
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
@decorators.time_me
|
@decorators.time_me
|
||||||
def generate_thumbnail(self, commit=True, **special):
|
def generate_thumbnail(self, *, commit=True, **special):
|
||||||
'''
|
'''
|
||||||
special:
|
special:
|
||||||
For videos, you can provide a `timestamp` to take the thumbnail from.
|
For videos, you can provide a `timestamp` to take the thumbnail from.
|
||||||
|
@ -1675,7 +1686,7 @@ class Photo(ObjectBase):
|
||||||
self.__reinit__()
|
self.__reinit__()
|
||||||
return self.thumbnail
|
return self.thumbnail
|
||||||
|
|
||||||
def has_tag(self, tag, check_children=True):
|
def has_tag(self, tag, *, check_children=True):
|
||||||
'''
|
'''
|
||||||
Return the Tag object if this photo contains that tag. Otherwise return False.
|
Return the Tag object if this photo contains that tag. Otherwise return False.
|
||||||
|
|
||||||
|
@ -1714,7 +1725,7 @@ class Photo(ObjectBase):
|
||||||
return helpers.get_mimetype(self.real_filepath)
|
return helpers.get_mimetype(self.real_filepath)
|
||||||
|
|
||||||
@decorators.time_me
|
@decorators.time_me
|
||||||
def reload_metadata(self, commit=True):
|
def reload_metadata(self, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Load the file's height, width, etc as appropriate for this type of file.
|
Load the file's height, width, etc as appropriate for this type of file.
|
||||||
'''
|
'''
|
||||||
|
@ -1766,7 +1777,7 @@ class Photo(ObjectBase):
|
||||||
log.debug('Committing - reload metadata')
|
log.debug('Committing - reload metadata')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def remove_tag(self, tag, commit=True):
|
def remove_tag(self, tag, *, commit=True):
|
||||||
tag = self.photodb.get_tag(tag)
|
tag = self.photodb.get_tag(tag)
|
||||||
|
|
||||||
log.debug('Removing tag {t} from photo {p}'.format(t=repr(tag), p=repr(self)))
|
log.debug('Removing tag {t} from photo {p}'.format(t=repr(tag), p=repr(self)))
|
||||||
|
@ -1782,7 +1793,7 @@ class Photo(ObjectBase):
|
||||||
log.debug('Committing - remove photo tag')
|
log.debug('Committing - remove photo tag')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def rename_file(self, new_filename, move=False, commit=True):
|
def rename_file(self, new_filename, *, move=False, commit=True):
|
||||||
'''
|
'''
|
||||||
Rename the file on the disk as well as in the database.
|
Rename the file on the disk as well as in the database.
|
||||||
If `move` is True, allow this operation to move the file.
|
If `move` is True, allow this operation to move the file.
|
||||||
|
@ -1886,7 +1897,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
rep = 'Tag:{name}'.format(name=self.name)
|
rep = 'Tag:{name}'.format(name=self.name)
|
||||||
return rep
|
return rep
|
||||||
|
|
||||||
def add_synonym(self, synname, commit=True):
|
def add_synonym(self, synname, *, commit=True):
|
||||||
synname = normalize_tagname(synname)
|
synname = normalize_tagname(synname)
|
||||||
|
|
||||||
if synname == self.name:
|
if synname == self.name:
|
||||||
|
@ -1906,7 +1917,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - add synonym')
|
log.debug('Committing - add synonym')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def convert_to_synonym(self, mastertag, commit=True):
|
def convert_to_synonym(self, mastertag, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Convert an independent tag into a synonym for a different independent tag.
|
Convert an independent tag into a synonym for a different independent tag.
|
||||||
All photos which possess the current tag will have it replaced
|
All photos which possess the current tag will have it replaced
|
||||||
|
@ -1943,7 +1954,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - convert to synonym')
|
log.debug('Committing - convert to synonym')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def delete(self, delete_children=False, commit=True):
|
def delete(self, *, delete_children=False, commit=True):
|
||||||
log.debug('Deleting tag {tag:r}'.format(tag=self))
|
log.debug('Deleting tag {tag:r}'.format(tag=self))
|
||||||
self.photodb._cached_frozen_children = None
|
self.photodb._cached_frozen_children = None
|
||||||
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
|
GroupableMixin.delete(self, delete_children=delete_children, commit=False)
|
||||||
|
@ -1966,7 +1977,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
self._cached_qualified_name = qualname
|
self._cached_qualified_name = qualname
|
||||||
return qualname
|
return qualname
|
||||||
|
|
||||||
def remove_synonym(self, synname, commit=True):
|
def remove_synonym(self, synname, *, commit=True):
|
||||||
'''
|
'''
|
||||||
Delete a synonym.
|
Delete a synonym.
|
||||||
This will have no effect on photos or other synonyms because
|
This will have no effect on photos or other synonyms because
|
||||||
|
@ -1984,7 +1995,7 @@ class Tag(ObjectBase, GroupableMixin):
|
||||||
log.debug('Committing - remove synonym')
|
log.debug('Committing - remove synonym')
|
||||||
self.photodb.commit()
|
self.photodb.commit()
|
||||||
|
|
||||||
def rename(self, new_name, apply_to_synonyms=True, commit=True):
|
def rename(self, new_name, *, apply_to_synonyms=True, commit=True):
|
||||||
'''
|
'''
|
||||||
Rename the tag. Does not affect its relation to Photos or tag groups.
|
Rename the tag. Does not affect its relation to Photos or tag groups.
|
||||||
'''
|
'''
|
||||||
|
|
Loading…
Reference in a new issue