Esempio n. 1
0
def test_output2():
    out = io.BytesIO()
    segno.make_qr('Good Times', error='M').save(out, kind='png', scale=10, color='red')
    f = tempfile.NamedTemporaryFile('w', suffix='.png', delete=False)
    f.close()
    cli.main(['-e=M', '--scale=10', '--color=red', '--output={0}'.format(f.name), 'Good', 'Times'])
    f = open(f.name, 'rb')
    content = f.read()
    f.close()
    os.unlink(f.name)
    assert out.getvalue() == content
Esempio n. 2
0
def test_data_svg_no_charset():
    qr = segno.make_qr('A')
    val = qr.svg_data_uri(omit_charset=True)
    assert val
    expected = "data:image/svg+xml,%3Csvg%20xmlns%3D%27"
    assert expected == val[:len(expected)]
    assert val.endswith('%3C%2Fsvg%3E')
Esempio n. 3
0
def test_write_xpm_indicator():
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    qr.save(out, kind='xpm')
    expected = '/* XPM */\n'
    val = out.getvalue()
    assert expected == val[:len(expected)]
Esempio n. 4
0
def test_background_none():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='pdf')
    graphic = _find_graphic(out)
    assert 'rg' not in graphic
    assert 're' not in graphic
Esempio n. 5
0
def test_background_set():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='pdf', background='yellow')
    graphic = _find_graphic(out)
    assert 'rg' in graphic
    assert 're' in graphic
Esempio n. 6
0
def test_default_scale():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    scale = 1
    scale_cmd = '{0} 0 0 {0} 0 0 cm'.format(scale)
    qr.save(out, kind='pdf', compresslevel=0)
    assert scale_cmd not in _find_graphic(out)
Esempio n. 7
0
def test_scale_float():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    scale = 1.34
    scale_cmd = '{0} 0 0 {0} 0 0 cm'.format(scale)
    qr.save(out, kind='pdf', scale=scale, compresslevel=0)
    assert scale_cmd in _find_graphic(out)
Esempio n. 8
0
def test_custom_svg_class():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', svgclass='test-class')
    root = _parse_xml(out)
    assert 'class' in root.attrib
    assert 'test-class' == root.attrib.get('class')
Esempio n. 9
0
def create(content, error='H', version=None, mode=None, encoding=None):

    def translate_error(pyqrcode_error):
        try:
            if pyqrcode_error.upper() in ('L', 'M', 'Q', 'H'):
                return pyqrcode_error
        except AttributeError:
            pass
        try:
            return _ERROR_LEVEL[pyqrcode_error]
        except KeyError:
            raise ValueError('Unknown error level "{0}"'.format(pyqrcode_error))

    def translate_mode(pyqrcode_mode):
        mode = pyqrcode_mode
        try:
            mode = pyqrcode_mode.lower()
        except AttributeError:
            pass
        return mode if mode != 'binary' else 'byte'

    return PyQRCode(segno.make_qr(content, error=translate_error(error),
                                  version=version,
                                  mode=translate_mode(mode),
                                  encoding=encoding, boost_error=False),
                    content, encoding)
Esempio n. 10
0
def test_data_svg_minimal_encoding():
    qr = segno.make_qr('A')
    val = qr.svg_data_uri(encode_minimal=True)
    assert val
    expected = "data:image/svg+xml;charset=utf-8,%3Csvg xmlns='"
    assert expected == val[:len(expected)]
    assert val.endswith('%3C/svg%3E')
Esempio n. 11
0
def test_no_line_class_empty_str():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', lineclass='')
    root = _parse_xml(out)
    path_el = _get_path(root)
    assert 'class' not in path_el.attrib
Esempio n. 12
0
def test_viewbox():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', omitsize=True)
    root = _parse_xml(out)
    assert 'viewBox' in root.attrib
    assert 'height' not in root.attrib
    assert 'width' not in root.attrib
Esempio n. 13
0
def test_scale():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', scale=2)
    root = _parse_xml(out)
    path = _get_path(root)
    assert path is not None
    assert 'scale(2)' in path.attrib['transform']
Esempio n. 14
0
def test_dpi():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dpi=300)
    out.seek(0)
    assert b'pHYs' in out.getvalue()
    # pHYs 11811 (11811 meters = 300 dpi / 0.0254)
    assert b'\x70\x48\x59\x73\x00\x00\x2E\x23\x00\x00\x2E\x23\x01\x78\xA5\x3F\x76' in out.getvalue()
Esempio n. 15
0
def test_write_txt():
    # Test with default options
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    qr.save(out, kind='txt', border=0)
    expected = '11111110011'
    val = out.getvalue()
    assert expected == val[:len(expected)]
Esempio n. 16
0
def test_svgid():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    ident = 'svgid'
    qr.save(out, kind='svg', svgid=ident)
    root = _parse_xml(out)
    assert 'id' in root.attrib
    assert ident == root.attrib['id']
Esempio n. 17
0
def test_svgversion():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    version = 1.0
    qr.save(out, kind='svg', svgversion=version)
    root = _parse_xml(out)
    assert 'version' in root.attrib
    assert str(version) == root.attrib['version']
Esempio n. 18
0
def test_custom_line_class():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', lineclass='test-class')
    root = _parse_xml(out)
    path_el = _get_path(root)
    assert 'class' in path_el.attrib
    assert 'test-class' == path_el.attrib.get('class')
Esempio n. 19
0
def test_title3():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', title='点')
    root = _parse_xml(out)
    title_el = _get_title(root)
    assert title_el is not None
    assert '点' == title_el.text
Esempio n. 20
0
def test_save_png_buffer():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png')
    out.seek(0)
    expected = b'\211PNG\r\n\032\n'  # PNG magic number
    val = out.read(len(expected))
    assert expected == val
Esempio n. 21
0
def test_write_svg_background_rgba_svg2():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', background='#0000ffcc', svgversion=2.0)
    assert b'fill-opacity' not in out.getvalue()
    root = _parse_xml(out)
    path = _get_path(root)
    assert path.attrib['fill'].startswith('rgba')
Esempio n. 22
0
def test_scale_float():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    scale = 2.13
    qr.save(out, kind='svg', scale=scale)
    root = _parse_xml(out)
    path = _get_path(root)
    assert path is not None
    assert 'scale({0})'.format(scale) in path.attrib['transform']
Esempio n. 23
0
def test_module_color():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    color = '#800080'
    qr.save(out, kind='svg', color=color)
    root = _parse_xml(out)
    path = _get_path(root)
    assert path is not None
    assert color == path.attrib['stroke']
Esempio n. 24
0
def test_scale():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    scale = 12
    width, height = qr.symbol_size(scale=scale)
    qr.save(out, kind='png', scale=12)
    out.seek(0)
    png_width, png_height, matrix = _get_png_info(file=out)
    assert (width, height) == (png_width, png_height)
Esempio n. 25
0
def test_desc3():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    desc = '点'
    qr.save(out, kind='svg', desc=desc)
    root = _parse_xml(out)
    desc_el = _get_desc(root)
    assert desc_el is not None
    assert desc == desc_el.text
Esempio n. 26
0
def test_write_xpm_width_height():
    scale = 5
    border = 2
    qr = segno.make_qr('test')
    width, height = qr.symbol_size(scale=scale, border=border)
    out = io.StringIO()
    qr.save(out, kind='xpm', border=border, scale=scale)
    img_data = _img_data(out.getvalue())[0]
    assert img_data.startswith('{0} {1}'.format(width, height))
Esempio n. 27
0
def test_omit_svgns():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', svgns=False)
    root = _parse_xml(out)
    path_el = _get_path(root)
    assert path_el is None  # (since _get_path uses the SVG namespace)
    path_el = root.find('path')  # Query w/o namespace MUST find the path
    assert path_el is not None
Esempio n. 28
0
def test_title4():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    encoding = 'ISO-8859-1'
    qr.save(out, kind='svg', title='áà', encoding=encoding)
    root = _parse_xml(out)
    title_el = _get_title(root)
    assert title_el is not None
    assert 'áà' == title_el.text
Esempio n. 29
0
def test_desc_escape():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    desc = '<desc>&</desc>'
    qr.save(out, kind='svg', desc=desc)
    assert b'<desc>&lt;desc&gt;&amp;&lt;/desc&gt;</desc>' in out.getvalue()
    root = _parse_xml(out)
    desc_el = _get_desc(root)
    assert desc_el is not None
    assert desc == desc_el.text
Esempio n. 30
0
def test_background():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    color = '#800080'
    qr.save(out, kind='svg', background=color)
    root = _parse_xml(out)
    # Background should be the first path in the doc
    rect = _get_path(root)
    assert rect is not None
    assert color == rect.attrib['fill']
Esempio n. 31
0
def test_unit_omitsize():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    with pytest.raises(ValueError):
        qr.save(out, kind='svg', unit='cm', omitsize=True)
Esempio n. 32
0
def test_data_png():
    qr = segno.make_qr('A')
    val = qr.png_data_uri()
    assert val
    assert val.startswith('data:image/png;base64,')
Esempio n. 33
0
def test_write_tex():
    # Test with default options
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    qr.save(out, kind='tex', border=4)
    assert r'\pgfpathmoveto{\pgfqpoint{4pt}{-4pt}}' in out.getvalue()
Esempio n. 34
0
def test_pil_border():
    qr = segno.make_qr('A')
    border = 0
    width, height = qr.symbol_size(border=border)
    img = qr.to_pil(border=border)
    assert (width, height) == img.size
Esempio n. 35
0
#!/usr/bin/python3

# https://pypi.org/project/segno/
# https://segno.readthedocs.io/en/latest/
import segno
import io

qr = segno.make_qr("This is a qrcode")
qr = segno.make_qr("This is a qrcode", error='Q')

## Export/Save
qr.save('myqr.svg')  # SVG document
qr.save('myqr.png')  # PNG image
qr.save('myqr.eps')  # EPS document
qr.save('myqr.txt')  # Text output

## Extra parameters
qr.save('myqr.svg', border=0)  # No border
qr.save('myqr.svg', border=10)  # 10px border
qr.save('myqr.png', scale=2)  # enlarge
qr.save('sgt-peppers.svg', dark='darkred',
        light='lightblue')  #Use colors instead of B/W

## Save to Buffer
buff = io.BytesIO()
qr.save(buff, kind='svg', dark='darkblue', light='#eee')

# ## Examples
# # Email
# segno.helpers.make_email(to, cc=None, bcc=None, subject=None, body=None)
# segno.helpers.make_make_email_data(to, cc=None, bcc=None, subject=None, body=None)
Esempio n. 36
0
def test_write_svg_background_rgba():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', background='#0000ffcc')
    assert b'fill-opacity' in out.getvalue()
Esempio n. 37
0
def test_svgid_empty_string():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', svgid='')
    root = _parse_xml(out)
    assert 'id' not in root.attrib
Esempio n. 38
0
def test_kanji_bytes():
    data = '外来語'
    qr = segno.make_qr(data.encode('shift_jis'))
    assert 'kanji' == qr.mode
Esempio n. 39
0
def test_kanji_enforce_byte2():
    data = '点'
    qr = segno.make_qr(data.encode('utf-8'))
    assert 'byte' == qr.mode
Esempio n. 40
0
def test_kanji_enforce_byte():
    data = '点'
    qr = segno.make_qr(data)
    assert 'kanji' == qr.mode
    qr = segno.make_qr(data, encoding='utf-8')
    assert 'byte' == qr.mode
Esempio n. 41
0
def test_valid_mode_autodetection(data, expected_mode):
    qr = segno.make_qr(data)
    assert expected_mode == qr.mode
Esempio n. 42
0
def test_write_tex_color2():
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    qr.save(out, kind='tex', border=4, dark='green')
    assert r'\color{green}' in out.getvalue()
Esempio n. 43
0
def test_write_tex_color():
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    qr.save(out, kind='tex', border=4)
    assert r'\color' not in out.getvalue()
Esempio n. 44
0
def test_no_svg_class_empty_str():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', svgclass='')
    root = _parse_xml(out)
    assert 'class' not in root.attrib
Esempio n. 45
0
def test_svgversion_default():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg')
    root = _parse_xml(out)
    assert 'version' not in root.attrib
Esempio n. 46
0
def test_color_rgba_and_trans2():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dark=None, light='#0000ffcc')
    assert _has_palette(out.getvalue())
    assert _has_transparency(out.getvalue())
Esempio n. 47
0
def test_write_no_xmldecl():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', xmldecl=False)
    xml_str = out.getvalue()
    assert xml_str.startswith(b'<svg')
Esempio n. 48
0
def test_p1():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='pbm', plain=True)
    assert out.getvalue().startswith(b'P1')
Esempio n. 49
0
def test_write_svg_color_rgba():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='svg', color='#0000ffcc')
    assert b'stroke-opacity' in out.getvalue()
Esempio n. 50
0
def test_nodpi_zero():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dpi=0)
    out.seek(0)
    assert b'pHYs' not in out.getvalue()
Esempio n. 51
0
def test_color_trans():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dark='blue', light=None)
    assert _has_palette(out.getvalue())
    assert _has_transparency(out.getvalue())
Esempio n. 52
0
def test_greyscale_trans2():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dark=None, light='white')
    assert not _has_palette(out.getvalue())
    assert _has_transparency(out.getvalue())
Esempio n. 53
0
def test_not_plain():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='pbm', plain=False)
    assert out.getvalue().startswith(b'P4')
Esempio n. 54
0
def test_write_tex_url():
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    url = 'http://www.example.org/~xxx#aaa'
    qr.save(out, kind='tex', border=4, url=url)
    assert r'\href{' + url + '}' in out.getvalue()
Esempio n. 55
0
def test_pil_scale_float():
    qr = segno.make_qr('A')
    scale = 2.5
    width, height = qr.symbol_size(scale=int(scale))
    img = qr.to_pil(scale=scale)
    assert (width, height) == img.size
Esempio n. 56
0
def test_hexcolor_too_long_background():
    qr = segno.make_qr('test')
    with pytest.raises(ValueError):
        qr.save(io.BytesIO(), kind='png', light='#0000000')
Esempio n. 57
0
def test_p4():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='pbm')
    assert out.getvalue().startswith(b'P4')
Esempio n. 58
0
def test_dark_eq_light():
    qr = segno.make_qr('test')
    out = io.BytesIO()
    qr.save(out, kind='png', dark='#000', light='#000')
    assert out.getvalue()
Esempio n. 59
0
def test_write_tex_omit_url():
    qr = segno.make_qr('test', error='m', boost_error=False)
    out = io.StringIO()
    url = ''
    qr.save(out, kind='tex', border=4, url=url)
    assert r'\href' not in out.getvalue()
Esempio n. 60
0
def test_hexcolor_too_long():
    qr = segno.make_qr('test')
    with pytest.raises(ValueError):
        qr.save(io.BytesIO(), kind='png', dark='#0000000')