def test_abspath(crumb): crumb2 = crumb.abspath(first_is_basedir=False) assert crumb2._path == os.path.join(os.path.abspath(os.path.curdir), crumb._path) assert crumb is not crumb2 assert crumb2.isabs() assert crumb != crumb2 assert 'base_dir' in set(_arg_names(crumb2.path)) crumb3 = crumb.abspath(first_is_basedir=True) assert crumb3._path == os.path.join(os.path.abspath(os.path.curdir), crumb._path.replace('{base_dir}/', '')) assert crumb is not crumb3 assert crumb3.isabs() assert crumb3 != crumb2 home_crumb = Crumb(os.path.expanduser('~'), ignore_list=['a*']) assert home_crumb._abspath() == os.path.expanduser('~') abs_home_crumb = home_crumb.abspath() assert abs_home_crumb._ignore == ['a*'] assert abs_home_crumb._ignore == home_crumb._ignore abs_home_crumb = home_crumb.abspath() assert abs_home_crumb._ignore == ['a*'] assert abs_home_crumb._ignore == home_crumb._ignore base_dir = BASE_DIR crumb2 = crumb.replace(base_dir=base_dir) crumbc = crumb2.abspath(first_is_basedir=False) assert crumbc == crumb2 assert crumbc is not crumb2
def test_abspath(crumb): crumb2 = crumb.abspath(first_is_basedir=False) assert crumb2._path == op.join(op.abspath(op.curdir), crumb._path) assert crumb is not crumb2 assert crumb2.isabs() assert crumb != crumb2 assert 'base_dir' in set(_arg_names(crumb2.path)) crumb3 = crumb.abspath(first_is_basedir=True) assert crumb3._path == op.join(op.abspath(op.curdir), crumb._path.replace('{base_dir}/', '')) assert crumb is not crumb3 assert crumb3.isabs() assert crumb3 != crumb2 home_crumb = Crumb(op.expanduser('~'), ignore_list=['a*']) assert home_crumb._abspath() == op.expanduser('~') abs_home_crumb = home_crumb.abspath() assert abs_home_crumb._ignore == ['a*'] assert abs_home_crumb._ignore == home_crumb._ignore abs_home_crumb = home_crumb.abspath() assert abs_home_crumb._ignore == ['a*'] assert abs_home_crumb._ignore == home_crumb._ignore base_dir = BASE_DIR crumb2 = crumb.replace(base_dir=base_dir) crumbc = crumb2.abspath(first_is_basedir=False) assert crumbc == crumb2 assert crumbc is not crumb2
def all_args(self) -> Iterator[str]: """ Return an iterator to all the crumb argument names in `self`, first the open ones and then the replaced ones. Returns ------- crumb_args: set of str """ yield from _arg_names(self._path)
def test_replace_and_setitem(crumb): # crumb = Crumb("{base_dir}/raw/{subject_id}/{session_id}/{modality}/{image}") args = list(_arg_names(crumb.path)) assert list(crumb.open_args()) == args assert list(crumb.all_args()) == args base_dir = BASE_DIR crumb.path = os.path.join(crumb.path, '{hansel}', '{gretel}') args.extend(['hansel', 'gretel']) assert not crumb.has_set('base_dir') # use replace crumb2 = crumb.replace(base_dir=base_dir) assert list(crumb2.open_args()) == args[1:] args.pop(0) assert list(crumb2.open_args()) == args assert list(crumb2.all_args()) != args assert crumb2.path == os.path.join(base_dir, crumb._path.replace('{base_dir}/', '')) assert 'base_dir' not in crumb2.open_args() assert 'base_dir' in crumb2.all_args() assert 'base_dir' in crumb2._argval assert crumb2['base_dir'][0] == base_dir assert crumb2.has_set('base_dir') # use setitem crumb3 = crumb.copy(crumb) crumb3['base_dir'] = base_dir assert crumb3.replace(**dict()).path == crumb3.path # assert crumb3._replace1(**dict()) == crumb3._path # assert crumb3._replace2(**dict()) == crumb3._path assert crumb3 is not crumb2 assert crumb3 == crumb2 assert crumb3.path == crumb2.path assert crumb3.has_set('base_dir') assert crumb3.replace(**{}).path == crumb3.path pytest.raises(KeyError, crumb2.replace, grimm='brothers') pytest.raises(KeyError, crumb2.__setitem__, 'grimm', 'brothers') pytest.raises(ValueError, crumb2.replace, subject_id=[])
def test_replace_and_setitem(crumb): # crumb = Crumb("{base_dir}/raw/{subject_id}/{session_id}/{modality}/{image}") args = list(_arg_names(crumb.path)) assert list(crumb.open_args()) == args assert list(crumb.all_args ()) == args base_dir = BASE_DIR crumb.path = op.join(crumb.path, '{hansel}', '{gretel}') args.extend(['hansel', 'gretel']) assert not crumb.has_set('base_dir') # use replace crumb2 = crumb.replace(base_dir=base_dir) assert list(crumb2.open_args()) == args[1:] args.pop(0) assert list(crumb2.open_args()) == args assert list(crumb2.all_args ()) != args assert crumb2.path == op.join(base_dir, crumb._path.replace('{base_dir}/', '')) assert 'base_dir' not in crumb2.open_args() assert 'base_dir' in crumb2.all_args() assert 'base_dir' in crumb2._argval assert crumb2['base_dir'][0] == base_dir assert crumb2.has_set('base_dir') # use setitem crumb3 = crumb.copy(crumb) crumb3['base_dir'] = base_dir assert crumb3.replace(**dict()).path == crumb3.path #assert crumb3._replace1(**dict()) == crumb3._path #assert crumb3._replace2(**dict()) == crumb3._path assert crumb3 is not crumb2 assert crumb3 == crumb2 assert crumb3.path == crumb2.path assert crumb3.has_set('base_dir') assert crumb3.replace(**{}).path == crumb3.path pytest.raises(KeyError, crumb2.replace, grimm='brothers') pytest.raises(KeyError, crumb2.__setitem__, 'grimm', 'brothers') pytest.raises(ValueError, crumb2.replace, subject_id=[])
def test_argnames_order(crumb): base_dir = BASE_DIR crumb2 = crumb.replace(base_dir=base_dir) assert sorted(list(_depth_names(crumb.path))) == list(_depth_names(crumb.path)) assert sorted(list(_depth_names(crumb2.path))) == list(_depth_names(crumb2.path)) assert [arg_name for depth, arg_name in sorted(list(_depth_names(crumb2.path)))] == list(_arg_names(crumb2.path))
def test_argnames_order(crumb): base_dir = BASE_DIR crumb2 = crumb.replace(base_dir=base_dir) assert sorted(list(_depth_names(crumb .path))) == list(_depth_names(crumb .path)) assert sorted(list(_depth_names(crumb2.path))) == list(_depth_names(crumb2.path)) assert [arg_name for depth, arg_name in sorted(list(_depth_names(crumb2.path)))] == list(_arg_names(crumb2.path))