Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test(format_name=format_name):
"""Test the generation of ``format_name`` images."""
content = cairosvg.SURFACES[format_name].convert(url=svg_filename)
assert content.startswith(MAGIC_NUMBERS[format_name])
test.description = 'Test that the output from svg2%s looks like %s' % (
def test_low_level_api():
"""Test the low-level Python API with various parameters."""
_png_filename, svg_filename = FILES[0]
expected_content = cairosvg.svg2png(url=svg_filename)
# Same as above, longer version
tree = cairosvg.parser.Tree(url=svg_filename)
file_like = io.BytesIO()
surface = cairosvg.surface.PNGSurface(tree, file_like, 96)
surface.finish()
assert file_like.getvalue() == expected_content
png_result = png.Reader(bytes=expected_content).read()
expected_width, expected_height, _, _ = png_result
# Abstract surface
surface = cairosvg.surface.PNGSurface(tree, None, 96)
assert surface.width == expected_width
assert surface.height == expected_height
assert cairo.SurfacePattern(surface.cairo).get_surface() is surface.cairo
assert_raises(TypeError, cairo.SurfacePattern, 'Not a cairo.Surface.')
def test_low_level_api():
"""Test the low-level Python API with various parameters."""
_png_filename, svg_filename = FILES[0]
expected_content = cairosvg.svg2png(url=svg_filename)
# Same as above, longer version
tree = cairosvg.parser.Tree(url=svg_filename)
file_like = io.BytesIO()
surface = cairosvg.surface.PNGSurface(tree, file_like, 96)
surface.finish()
assert file_like.getvalue() == expected_content
png_result = png.Reader(bytes=expected_content).read()
expected_width, expected_height, _, _ = png_result
# Abstract surface
surface = cairosvg.surface.PNGSurface(tree, None, 96)
assert surface.width == expected_width
assert surface.height == expected_height
assert cairo.SurfacePattern(surface.cairo).get_surface() is surface.cairo
assert_raises(TypeError, cairo.SurfacePattern, 'Not a cairo.Surface.')
"""Test the low-level Python API with various parameters."""
_png_filename, svg_filename = FILES[0]
expected_content = cairosvg.svg2png(url=svg_filename)
# Same as above, longer version
tree = cairosvg.parser.Tree(url=svg_filename)
file_like = io.BytesIO()
surface = cairosvg.surface.PNGSurface(tree, file_like, 96)
surface.finish()
assert file_like.getvalue() == expected_content
png_result = png.Reader(bytes=expected_content).read()
expected_width, expected_height, _, _ = png_result
# Abstract surface
surface = cairosvg.surface.PNGSurface(tree, None, 96)
assert surface.width == expected_width
assert surface.height == expected_height
assert cairo.SurfacePattern(surface.cairo).get_surface() is surface.cairo
assert_raises(TypeError, cairo.SurfacePattern, 'Not a cairo.Surface.')
def test_low_level_api():
"""Test the low-level Python API with various parameters."""
expected_content = svg2png(SVG_SAMPLE)
# Same as above, longer version
tree = parser.Tree(bytestring=SVG_SAMPLE)
file_like = io.BytesIO()
png_surface = surface.PNGSurface(tree, file_like, 96)
png_surface.finish()
assert file_like.getvalue() == expected_content
png_result = cairo.ImageSurface.create_from_png(
io.BytesIO(expected_content))
expected_width = png_result.get_width()
expected_height = png_result.get_height()
# Abstract surface
png_surface = surface.PNGSurface(tree, None, 96)
assert png_surface.width == expected_width
assert png_surface.height == expected_height
assert cairo.SurfacePattern(png_surface.cairo)
expected_content = svg2png(SVG_SAMPLE)
# Same as above, longer version
tree = parser.Tree(bytestring=SVG_SAMPLE)
file_like = io.BytesIO()
png_surface = surface.PNGSurface(tree, file_like, 96)
png_surface.finish()
assert file_like.getvalue() == expected_content
png_result = cairo.ImageSurface.create_from_png(
io.BytesIO(expected_content))
expected_width = png_result.get_width()
expected_height = png_result.get_height()
# Abstract surface
png_surface = surface.PNGSurface(tree, None, 96)
assert png_surface.width == expected_width
assert png_surface.height == expected_height
assert cairo.SurfacePattern(png_surface.cairo)
def test_formats(format_name):
"""Convert to a given format and test that output looks right."""
content = SURFACES[format_name].convert(SVG_SAMPLE)
assert content.startswith(MAGIC_NUMBERS[format_name])
drawer.DrawMolecule(
mol, highlightAtoms=highlight_atoms,
highlightAtomColors=atom_colors, highlightBonds=bondlist,
highlightBondColors=bondcolorlist, legend=legend)
drawer.FinishDrawing()
svg = drawer.GetDrawingText()
if save_filepath:
extention = save_filepath.split('.')[-1]
if extention == 'svg':
with open(save_filepath, 'w') as f:
f.write(svg)
elif extention == 'png':
# TODO(nakago): check it is possible without cairosvg or not
try:
import cairosvg
cairosvg.svg2png(bytestring=svg, write_to=save_filepath)
except ImportError as e:
self.logger.error(
'cairosvg is not installed! '
'Please install cairosvg to save by png format.\n'
'pip install cairosvg')
if raise_import_error:
raise e
else:
raise ValueError(
'Unsupported extention {} for save_filepath {}'
.format(extention, save_filepath))
return svg
if dash_array:
dashes = [size(self, dash) for dash in dash_array]
if sum(dashes):
offset = size(self, node.get('stroke-dashoffset'))
self.context.set_dash(dashes, offset)
miter_limit = float(node.get('stroke-miterlimit', 4))
self.context.set_miter_limit(miter_limit)
# Clip
rect_values = clip_rect(node.get('clip'))
if len(rect_values) == 4:
top = size(self, rect_values[0], 'y')
right = size(self, rect_values[1], 'x')
bottom = size(self, rect_values[2], 'y')
left = size(self, rect_values[3], 'x')
x = size(self, node.get('x'), 'x')
y = size(self, node.get('y'), 'y')
width = size(self, node.get('width'), 'x')
height = size(self, node.get('height'), 'y')
self.context.save()
self.context.translate(x, y)
self.context.rectangle(
left, top, width - left - right, height - top - bottom)
self.context.restore()
self.context.clip()
clip_path = parse_url(node.get('clip-path')).fragment
if clip_path:
path = self.paths.get(clip_path)
if path:
self.context.save()
if path.get('clipPathUnits') == 'objectBoundingBox':
self.context.set_dash(dashes, offset)
miter_limit = float(node.get('stroke-miterlimit', 4))
self.context.set_miter_limit(miter_limit)
# Clip
rect_values = clip_rect(node.get('clip'))
if len(rect_values) == 4:
top = size(self, rect_values[0], 'y')
right = size(self, rect_values[1], 'x')
bottom = size(self, rect_values[2], 'y')
left = size(self, rect_values[3], 'x')
x = size(self, node.get('x'), 'x')
y = size(self, node.get('y'), 'y')
width = size(self, node.get('width'), 'x')
height = size(self, node.get('height'), 'y')
self.context.save()
self.context.translate(x, y)
self.context.rectangle(
left, top, width - left - right, height - top - bottom)
self.context.restore()
self.context.clip()
clip_path = parse_url(node.get('clip-path')).fragment
if clip_path:
path = self.paths.get(clip_path)
if path:
self.context.save()
if path.get('clipPathUnits') == 'objectBoundingBox':
x = size(self, node.get('x'), 'x')
y = size(self, node.get('y'), 'y')
width = size(self, node.get('width'), 'x')
height = size(self, node.get('height'), 'y')