Exemplo n.º 1
0
 def test_header_present_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=True))
     assert row['name'] == 'Charles the Great'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 2
0
 def test_header_present_guessed(self):
     infile = StringIO(_raw_txt_1)
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 3
0
 def test_header_absent_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=False))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 4
0
 def test_list_of_lists_whitespace_before_headers(self):
     src = "\n\n\n\n" + _raw_txt_1
     data = _data(src=src, reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 5
0
 def test_header_present_guessed(self):
     infile = StringIO(_raw_txt_1)
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 6
0
 def test_header_present_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=True))
     assert row['name'] == 'Charles the Great'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 7
0
 def test_list_of_lists_whitespace_before_headers(self):
     src = "\n\n\n\n" + _raw_txt_1
     data = _data(src=src, reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 8
0
 def test_header_absent_regexes_present(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     row = _next(reheadered(data, headers, header_present=False))
     assert row['name'] == 'Nellie Newsock'
     assert row['email'] == '*****@*****.**'
Exemplo n.º 9
0
 def test_whitespace_safe_in_data(self):
     for row in reheadered(
             _data(_raw_txt_2), ['zipcode', 'Name', 'e-mail'],
             minimum_score=100):
         assert 'zipcode' in row
         assert 'Name' in row
         assert 'e-mail' in row
Exemplo n.º 10
0
 def test_regexes_preferred_to_fuzzy_match(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'columnB': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search('\d+', row['columnB'])
Exemplo n.º 11
0
 def test_regexes_preferred_to_fuzzy_match(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'columnB': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search('\d+', row['columnB'])
Exemplo n.º 12
0
 def test_mix_regexes_with_column_name_matches(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'zip': None}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'zip' in row
         if row['zip']:
             assert re.search('\d+', row['zip'])
Exemplo n.º 13
0
 def test_optional_in_regex(self):
     headers = {'zip': '\w+@\w+\.\w+', '?:email': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'zip' in row
         assert '@' in row['zip']
         assert 'email' in row
         if row['email']:
             assert re.search('\d+', row['email'])
Exemplo n.º 14
0
 def test_mix_regexes_with_column_name_matches(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'zip': None}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'zip' in row
         if row['zip']:
             assert re.search('\d+', row['zip'])
Exemplo n.º 15
0
 def test_prefer_fuzzy(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'name': '\d+'}
     for row in reheadered(_data(), headers, prefer_fuzzy=True):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'name' in row
         if row['name']:
             assert not re.search('\d+', row['name'])
Exemplo n.º 16
0
 def test_optional_in_regex(self):
     headers = {'zip': '\w+@\w+\.\w+', '?:email': '\d+'}
     for row in reheadered(_data(), headers):
         assert 'zip' in row
         assert '@' in row['zip']
         assert 'email' in row
         if row['email']:
             assert re.search('\d+', row['email'])
Exemplo n.º 17
0
 def test_prefer_fuzzy(self):
     headers = {'columnA': '\w+@\w+\.\w+', 'name': '\d+'}
     for row in reheadered(_data(), headers, prefer_fuzzy=True):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'name' in row
         if row['name']:
             assert not re.search('\d+', row['name'])
Exemplo n.º 18
0
 def test_compiled_regexes(self):
     columnAregex = re.compile(r"""\w+   #  name
                                   @\w+  # email provider
                                   \.\w+ # domain""", re.VERBOSE)
     headers = {'columnA': columnAregex, 'columnB': re.compile(r'\d+')}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search(r'\d+', row['columnB'])
Exemplo n.º 19
0
    def test_fuzzy_column_name_match(self):
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(_data(), headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
Exemplo n.º 20
0
    def test_fuzzy_column_name_match(self):
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(_data(), headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
Exemplo n.º 21
0
 def test_compiled_regexes(self):
     columnAregex = re.compile(
         r"""\w+   #  name
                                   @\w+  # email provider
                                   \.\w+ # domain""", re.VERBOSE)
     headers = {'columnA': columnAregex, 'columnB': re.compile(r'\d+')}
     for row in reheadered(_data(), headers):
         assert 'columnA' in row
         assert '@' in row['columnA']
         assert 'columnB' in row
         if row['columnB']:
             assert re.search(r'\d+', row['columnB'])
Exemplo n.º 22
0
    def test_fuzzy_column_name_match_list_of_lists(self):
        data = _data(reader=csv.reader, with_headers=True)
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(data, headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
Exemplo n.º 23
0
    def test_fuzzy_column_name_match_list_of_lists(self):
        data = _data(reader=csv.reader, with_headers=True)
        headers = ['Name', 'mail', 'zipcode']
        for row in reheadered(data, headers):
            assert 'Name' in row
            assert 'name' not in row

            assert 'mail' in row
            assert row['mail']
            assert 'email' not in row

            assert 'zipcode' in row
            assert 'zip' not in row
Exemplo n.º 24
0
 def test_list_of_lists_no_data(self):
     infile = StringIO(_raw_txt_1.splitlines()[0])
     data = csv.reader(infile)
     with pytest.raises(StopIteration):
         _next(reheadered(data, ['name', 'email', 'zip']))
Exemplo n.º 25
0
 def test_perfect_column_name_match(self):
     for row in reheadered(_data(), ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 26
0
 def test_optional_column_marker_tolerated(self):
     headers = ['Name', '?:mail', 'zip']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert '?:mail' not in row
Exemplo n.º 27
0
 def test_custom_optional_marker(self):
     headers = ['Name', 'mail', 'zip', 'OPTIONAL~nationality']
     for row in reheadered(_data(), headers, optional_prefix='OPTIONAL~'):
         assert 'mail' in row
         assert 'nationality' not in row
Exemplo n.º 28
0
 def test_dict_of_headers_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data()
     _next(reheadered(data, headers))
Exemplo n.º 29
0
 def test_low_minimum_score(self):
     headers = ['Name', 'mail', 'zip_code']
     for row in reheadered(_data(), headers, minimum_score=50):
         assert 'zip_code' in row
Exemplo n.º 30
0
 def test_perfect_column_name_match(self):
     for row in reheadered(_data(), ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 31
0
 def test_list_of_lists_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data(reader=csv.reader, with_headers=True)
     _next(reheadered(data, headers))
Exemplo n.º 32
0
 def test_whitespace_safe_in_expected(self):
     for row in reheadered(_data(), ['       name', 'email', ' zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 33
0
 def test_keep_extra_with_fuzzy_match(self):
     for row in reheadered(_data(), ['Name', 'e-mail'], keep_extra=True):
         assert 'Name' in row
         assert 'e-mail' in row
         assert 'zip' in row
Exemplo n.º 34
0
 def test_low_minimum_score(self):
     headers = ['Name', 'mail', 'zip_code']
     for row in reheadered(_data(), headers, minimum_score=50):
         assert 'zip_code' in row
Exemplo n.º 35
0
 def test_list_of_lists_no_data(self):
     infile = StringIO(_raw_txt_1.splitlines()[0])
     data = csv.reader(infile)
     with pytest.raises(StopIteration):
         _next(reheadered(data, ['name', 'email', 'zip']))
Exemplo n.º 36
0
 def test_perfect_column_name_match_list_of_lists(self):
     data = _data(reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 37
0
 def test_whitespace_safe_in_expected(self):
     for row in reheadered(_data(), ['       name', 'email', ' zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 38
0
 def test_keep_extra(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=True):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 39
0
 def test_high_minimum_score(self):
     headers = ['Name', 'mail', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers, minimum_score=90))
Exemplo n.º 40
0
 def test_reheadered_accepts_basic_args(self):
     reheadered([{}, ], [])
Exemplo n.º 41
0
 def test_keep_extra_false(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=False):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' not in row
         assert '' not in row
Exemplo n.º 42
0
 def test_fuzzy_column_name_match_failure(self):
     headers = ['Name', 'mail', 'thy one true zip code']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers))
Exemplo n.º 43
0
 def test_keep_extra_with_fuzzy_match(self):
     for row in reheadered(_data(), ['Name', 'e-mail'], keep_extra=True):
         assert 'Name' in row
         assert 'e-mail' in row
         assert 'zip' in row
Exemplo n.º 44
0
 def test_optional_column_marker_tolerated(self):
     headers = ['Name', '?:mail', 'zip']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert '?:mail' not in row
Exemplo n.º 45
0
 def test_high_minimum_score(self):
     headers = ['Name', 'mail', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers, minimum_score=90))
Exemplo n.º 46
0
 def test_optional_column_marker_honored(self):
     headers = ['Name', 'mail', 'zip', '?:nationality']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert 'nationality' not in row
Exemplo n.º 47
0
 def test_header_absent_and_no_regexes(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = ['name', 'email', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(data, headers, header_present=False))
Exemplo n.º 48
0
 def test_custom_optional_marker(self):
     headers = ['Name', 'mail', 'zip', 'OPTIONAL~nationality']
     for row in reheadered(_data(), headers, optional_prefix='OPTIONAL~'):
         assert 'mail' in row
         assert 'nationality' not in row
Exemplo n.º 49
0
 def test_optional_column_marker_honored(self):
     headers = ['Name', 'mail', 'zip', '?:nationality']
     for row in reheadered(_data(), headers):
         assert 'mail' in row
         assert 'nationality' not in row
Exemplo n.º 50
0
 def test_dict_of_headers_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data()
     _next(reheadered(data, headers))
Exemplo n.º 51
0
 def test_reheadered_accepts_basic_args(self):
     reheadered([
         {},
     ], [])
Exemplo n.º 52
0
 def test_list_of_lists_accepted(self):
     headers = {'name': r'(\w+\s+)+', 'email': '\w+@\w+\.\w+'}
     data = _data(reader=csv.reader, with_headers=True)
     _next(reheadered(data, headers))
Exemplo n.º 53
0
 def test_perfect_column_name_match_list_of_lists(self):
     data = _data(reader=csv.reader, with_headers=True)
     for row in reheadered(data, ['name', 'email', 'zip']):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 54
0
 def test_keep_extra(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=True):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' in row
Exemplo n.º 55
0
 def test_fuzzy_column_name_match_failure(self):
     headers = ['Name', 'mail', 'thy one true zip code']
     with pytest.raises(KeyError):
         _next(reheadered(_data(), headers))
Exemplo n.º 56
0
 def test_keep_extra_false(self):
     for row in reheadered(_data(), ['name', 'email'], keep_extra=False):
         assert 'name' in row
         assert 'email' in row
         assert 'zip' not in row
         assert '' not in row
Exemplo n.º 57
0
 def test_whitespace_safe_in_data(self):
     for row in reheadered(_data(_raw_txt_2), ['zipcode', 'Name', 'e-mail'],
                           minimum_score=100):
         assert 'zipcode' in row
         assert 'Name' in row
         assert 'e-mail' in row
Exemplo n.º 58
0
 def test_header_absent_and_no_regexes(self):
     infile = StringIO('\n'.join(_raw_txt_1.splitlines()[1:]))
     data = csv.reader(infile)
     headers = ['name', 'email', 'zip']
     with pytest.raises(KeyError):
         _next(reheadered(data, headers, header_present=False))