Example #1
0
def test_lt(tmp_crumb):
    tst1 = tmp_crumb < tmp_crumb
    tst2 = tmp_crumb.path < tmp_crumb.path
    assert (not tst1)
    assert tst1 == tst2

    tmp_crumb2 = Crumb.copy(tmp_crumb)
    tst1 = tmp_crumb2 < tmp_crumb2
    tst2 = tmp_crumb2.path < tmp_crumb2.path
    assert (not tst1)
    assert tst1 == tst2

    tmp_crumb2 = tmp_crumb2.joinpath('hansel')
    tst1 = tmp_crumb2 < tmp_crumb2
    tst2 = tmp_crumb2.path < tmp_crumb2.path
    assert (not tst1)
    assert tst1 == tst2

    tmp_crumb._path = os.path.sep + 'aaalex' + tmp_crumb2._path
    tst1 = tmp_crumb < tmp_crumb2
    tst2 = tmp_crumb._path < tmp_crumb2._path
    assert (tst1)
    assert tst1 == tst2

    tmp_crumb._path = os.path.sep + 'zealous' + tmp_crumb2._path
    tst1 = tmp_crumb < tmp_crumb2
    tst2 = tmp_crumb._path < tmp_crumb2._path
    assert (not tst1)
    assert tst1 == tst2

    assert tmp_crumb >= tmp_crumb2
    assert not tmp_crumb <= tmp_crumb2

    assert tmp_crumb > tmp_crumb2
    assert not tmp_crumb < tmp_crumb2
Example #2
0
def test_lt(tmp_crumb):
    tst1 = tmp_crumb < tmp_crumb
    tst2 = tmp_crumb.path < tmp_crumb.path
    assert(not tst1)
    assert tst1 == tst2

    tmp_crumb2 = Crumb.copy(tmp_crumb)
    tst1 = tmp_crumb2 < tmp_crumb2
    tst2 = tmp_crumb2.path < tmp_crumb2.path
    assert(not tst1)
    assert tst1 == tst2

    tmp_crumb2 = tmp_crumb2.joinpath('hansel')
    tst1 = tmp_crumb2 < tmp_crumb2
    tst2 = tmp_crumb2.path < tmp_crumb2.path
    assert(not tst1)
    assert tst1 == tst2

    tmp_crumb._path = op.sep + 'aaalex' + tmp_crumb2._path
    tst1 = tmp_crumb < tmp_crumb2
    tst2 = tmp_crumb._path < tmp_crumb2._path
    assert(tst1)
    assert tst1 == tst2

    tmp_crumb._path = op.sep + 'zealous' + tmp_crumb2._path
    tst1 = tmp_crumb < tmp_crumb2
    tst2 = tmp_crumb._path < tmp_crumb2._path
    assert(not tst1)
    assert tst1 == tst2

    assert     tmp_crumb >= tmp_crumb2
    assert not tmp_crumb <= tmp_crumb2

    assert     tmp_crumb > tmp_crumb2
    assert not tmp_crumb < tmp_crumb2
Example #3
0
def test_regex(tmp_crumb):
    assert not op.exists(tmp_crumb.path)

    values_dict = {'session_id': ['session_{:02}'.format(i) for i in range(  2)],
                   'subject_id': ['subj_{:03}'.format(i)    for i in range(100)],
                   'modality':   ['anat'],
                   'image':      ['mprage1.nii'],
                   }

    _ = mktree(tmp_crumb, list(ParameterGrid(values_dict)))

    crumb = Crumb(tmp_crumb.path.replace('{subject_id}', '{subject_id:^subj_02.*$}'),
                  regex='re')  # re.match

    re_subj_ids = crumb['subject_id']

    assert re_subj_ids == ['subj_{:03}'.format(i) for i in range(20, 30)]
    assert crumb.ls('subject_id:^subj_02.*$') == crumb.ls('subject_id')

    crumb = Crumb(tmp_crumb.path.replace('{subject_id}', '{subject_id:subj_02*}'),
                  regex='fnmatch')  # fnmatch

    fn_subj_ids = crumb['subject_id']

    assert fn_subj_ids == re_subj_ids
    cr_bkp = crumb.copy()
    assert crumb.ls('subject_id:subj_02*') == crumb.ls('subject_id')
    assert crumb['subject_id'][0] == crumb.get_first('subject_id')
    assert crumb.patterns['subject_id'] == cr_bkp.patterns['subject_id']

    assert not crumb.ls('subject_id:subj_03*') == crumb.ls('subject_id')
    assert crumb.patterns['subject_id'] == cr_bkp.patterns['subject_id']

    pytest.raises(ValueError,
                  Crumb,
                  tmp_crumb.path.replace('{subject_id}', '{subject_id:subj_02*}'),
                  regex='hansel')

    crumb2 = Crumb.copy(crumb)
    assert crumb2._re_method == crumb._re_method
    assert crumb2._re_args == crumb._re_args
    assert crumb2.patterns == crumb.patterns

    assert len(crumb2.patterns) == 1
    assert 'subject_id' in crumb2.patterns.keys()
Example #4
0
def test_regex(tmp_crumb):
    assert not os.path.exists(tmp_crumb.path)

    values_dict = {
        'session_id': ['session_{:02}'.format(i) for i in range(2)],
        'subject_id': ['subj_{:03}'.format(i) for i in range(100)],
        'modality': ['anat'],
        'image': ['mprage1.nii'],
    }

    mktree(tmp_crumb, list(ParameterGrid(values_dict)))

    crumb = Crumb(tmp_crumb.path.replace('{subject_id}', '{subject_id:^subj_02.*$}'), regex='re')  # re.match

    re_subj_ids = crumb['subject_id']

    assert re_subj_ids == ['subj_{:03}'.format(i) for i in range(20, 30)]
    assert crumb.ls('subject_id:^subj_02.*$') == crumb.ls('subject_id')

    crumb = Crumb(tmp_crumb.path.replace('{subject_id}', '{subject_id:subj_02*}'), regex='fnmatch')  # fnmatch

    fn_subj_ids = crumb['subject_id']

    assert fn_subj_ids == re_subj_ids
    cr_bkp = crumb.copy()
    assert crumb.ls('subject_id:subj_02*') == crumb.ls('subject_id')
    assert crumb['subject_id'][0] == crumb.get_first('subject_id')
    assert crumb.patterns['subject_id'] == cr_bkp.patterns['subject_id']

    assert not crumb.ls('subject_id:subj_03*') == crumb.ls('subject_id')
    assert crumb.patterns['subject_id'] == cr_bkp.patterns['subject_id']

    pytest.raises(ValueError,
                  Crumb,
                  tmp_crumb.path.replace('{subject_id}', '{subject_id:subj_02*}'),
                  regex='hansel')

    crumb2 = Crumb.copy(crumb)
    assert crumb2._re_method == crumb._re_method
    assert crumb2._re_args == crumb._re_args
    assert crumb2.patterns == crumb.patterns

    assert len(crumb2.patterns) == 1
    assert 'subject_id' in crumb2.patterns.keys()
Example #5
0
def test_copy(crumb):
    copy = Crumb.copy(crumb)
    assert crumb is not copy
    assert crumb == copy

    copy2 = crumb.copy()
    assert crumb is not copy2
    assert crumb == copy2

    assert copy is not copy2

    pytest.raises(TypeError, crumb.copy, {})
Example #6
0
def test_copy(crumb):
    copy = Crumb.copy(crumb)
    assert crumb is not copy
    assert crumb == copy

    copy2 = crumb.copy()
    assert crumb is not copy2
    assert crumb == copy2

    assert copy is not copy2

    pytest.raises(TypeError, crumb.copy, {})
Example #7
0
def _crumb_fill_dst(
        src_crumb: hansel.Crumb, dst_crumb: hansel.Crumb
) -> Iterator[Tuple[hansel.Crumb, hansel.Crumb]]:
    """ Will list `src_crumb` and copy the resulting item arguments into
    `dst_crumb`.
    All the defined arguments of `src_crumb.ls()[0]` must define `dst_crumb`
    entirely and create a path to a file or folder.
    """
    for src in src_crumb.ls():
        dst = dst_crumb.copy()
        copy_args(src, dst)
        if dst.has_crumbs():
            raise AttributeError("Destination crumb still has open arguments, "
                                 "expected to fill it. Got {}.".format(
                                     str(dst)))
        yield src, dst
Example #8
0
def test_from_path(crumb):
    cr = Crumb.copy(crumb)
    assert cr is not crumb
    assert cr == crumb

    cr2 = crumb.from_path(crumb)
    assert cr2 is not crumb
    assert cr2 == crumb

    assert cr2 is not cr
    assert cr2 == cr

    cr2 = Crumb.from_path(Path(crumb.path))
    assert cr2 is not crumb
    assert cr2 == crumb

    assert cr2 is not cr
    assert cr2 == cr
Example #9
0
def test_equal_copy(crumb):
    crumb2 = Crumb.copy(crumb)
    assert crumb2 == crumb

    crumb2._argval['hansel'] = 'hello'
    assert crumb2 != crumb

    crumb2._path += '/'
    assert crumb2 != crumb

    crumb2._path == os.path.join(crumb._path, '{test}')
    assert crumb2 != crumb

    crumb2._argval['hansel'] = 'hello'
    assert crumb2 != crumb

    crumb3 = Crumb(crumb.path, ignore_list=['.*'])
    assert crumb3 != crumb
Example #10
0
def test_from_path(crumb):
    cr = Crumb.copy(crumb)
    assert cr is not crumb
    assert cr == crumb

    cr2 = crumb.from_path(crumb)
    assert cr2 is not crumb
    assert cr2 == crumb

    assert cr2 is not cr
    assert cr2 == cr

    cr2 = Crumb.from_path(Path(crumb.path))
    assert cr2 is not crumb
    assert cr2 == crumb

    assert cr2 is not cr
    assert cr2 == cr
Example #11
0
def test_equal_copy(crumb):
    crumb2 = Crumb.copy(crumb)
    assert crumb2 == crumb

    crumb2._argval['hansel'] = 'hello'
    assert crumb2 != crumb

    crumb2._path += '/'
    assert crumb2 != crumb

    crumb2._path == op.join(crumb._path, '{test}')
    assert crumb2 != crumb

    crumb2._argval['hansel'] = 'hello'
    assert crumb2 != crumb

    crumb3 = Crumb(crumb.path, ignore_list=['.*'])
    assert crumb3 != crumb
Example #12
0
def test_set_patterns(tmp_crumb):
    assert not os.path.exists(tmp_crumb.path)

    values_dict = {'session_id': ['session_{:02}'.format(i) for i in range(2)],
                   'subject_id': ['subj_{:03}'.format(i) for i in range(100)],
                   'modality': ['anat'],
                   'image': ['mprage1.nii'],
                   }

    mktree(tmp_crumb, list(ParameterGrid(values_dict)))

    # a crumb without the pattern, the pattern is added later
    crumb2 = Crumb(tmp_crumb.path, regex='fnmatch')

    crumb3 = crumb2.copy()
    crumb3.set_patterns()
    assert crumb2 == crumb3

    pytest.raises(KeyError, crumb2.set_patterns, somekey='somevalue')

    crumb3.set_pattern('subject_id', 'subj_02*')
    crumb2.set_patterns(subject_id='subj_02*')
    assert crumb2['subject_id'] == crumb3['subject_id']