Skip to content

Commit

Permalink
Merge 238ef84 into 8bc280f
Browse files Browse the repository at this point in the history
  • Loading branch information
chrizzFTD committed Mar 20, 2021
2 parents 8bc280f + 238ef84 commit 8bad467
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 12 deletions.
42 changes: 30 additions & 12 deletions grill/names/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def _table_from_id(id_mapping):


class DefaultName(naming.Name):
""" Inherited by: :class:`grill.names.CGAsset` :class:`grill.names.DateTimeFile`
""" Inherited by: :class:`grill.names.CGAsset`
Base class for any Name object that wishes to provide `default` functionality via
the `get_default` method.
Expand All @@ -56,7 +56,25 @@ def get_default(cls, **kwargs) -> DefaultName:
return name


class DateTimeFile(naming.File, DefaultName):
class DefaultFile(DefaultName, naming.File):
""" Inherited by: :class:`grill.names.DateTimeFile`
Similar to :class:`grill.names.DefaultName`, provides File Name objects default
creation via the `get_default` method.
Adds an extra `DEFAULT_SUFFIX='ext'` member that will be used when creating objects.
"""

DEFAULT_SUFFIX = 'ext'

@property
def _defaults(self):
result = super()._defaults
result['suffix'] = type(self).DEFAULT_SUFFIX
return result


class DateTimeFile(DefaultFile):
"""Time based file names respecting iso standard.
============= ================
Expand Down Expand Up @@ -110,19 +128,18 @@ class DateTimeFile(naming.File, DefaultName):

@property
def _defaults(self):
result = super()._defaults
time_field = {'year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond'}
now = datetime.now()
return dict(
{f: getattr(now, f) for f in time_field},
suffix='ext',
)
result.update({f: getattr(now, f) for f in time_field})
return result

def get_pattern_list(self) -> typing.List[str]:
"""Fields / properties names (sorted) to be used when building names.
Defaults to [`date`, `time`] + keys of this name's config
"""
return ["date", "time"] + list(self.config)
return ["date", "time"] + super().get_pattern_list()

@property
def name(self) -> str:
Expand Down Expand Up @@ -171,10 +188,12 @@ def __init__(self, *args, sep='-', **kwargs):

@property
def _defaults(self):
return {k: v['default'] for k, v in ids.CGAsset.items()}
result = super()._defaults
result.update({k: v['default'] for k, v in ids.CGAsset.items()})
return result


class CGAssetFile(CGAsset, naming.PipeFile):
class CGAssetFile(CGAsset, DefaultFile, naming.PipeFile):
"""Versioned files in the pipeline for a CGAsset.
Example:
Expand All @@ -189,7 +208,7 @@ class CGAssetFile(CGAsset, naming.PipeFile):
@property
def _defaults(self):
result = super()._defaults
result.update(version=1, suffix='ext')
result.update(version=1)
return result

def get_path_pattern_list(self) -> typing.List[str]:
Expand All @@ -199,9 +218,8 @@ def get_path_pattern_list(self) -> typing.List[str]:


class LifeTR(naming.Name):
"""Taxonomic Rank used for biological classification.
"""Taxonomic Rank used for biological classification."""

"""
config = {k: v['pattern'] for k, v in ids.LifeTR.items()}
__doc__ += '\n' + _table_from_id(ids.LifeTR) + '\n'

Expand Down
15 changes: 15 additions & 0 deletions tests/test_names.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,18 @@ class SubTime(DateTimeFile):

tf = SubTime("1999-10-28 1-1-1-1 subclassed.txt")
self.assertEqual("subclassed", tf.extra)

def test_default_suffix(self):
suf1 = 'abc'
class TimedAssetFile(DateTimeFile, CGAssetFile):
DEFAULT_SUFFIX = suf1

ta = TimedAssetFile.get_default(area='test')
self.assertEqual(ta.suffix, suf1)

suf2 = 'xyz'
class TimedAssetFile2(CGAssetFile):
DEFAULT_SUFFIX = suf2

ta = TimedAssetFile2.get_default(area='test')
self.assertEqual(ta.suffix, suf2)

0 comments on commit 8bad467

Please sign in to comment.