Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
    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)
Esempio n. 4
0
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=[])
Esempio n. 5
0
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=[])
Esempio n. 6
0
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))
Esempio n. 7
0
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))