/usr/lib/python2.7/dist-packages/shapely/speedups/__init__.py is in python-shapely 1.6.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | import warnings
from shapely.geometry import linestring, polygon
from shapely import coords
import shapely.affinity
from ..ftools import wraps
try:
from shapely.speedups import _speedups
available = True
import_error_msg = None
except ImportError:
import sys
available = False
# TODO: This does not appear to do anything useful
import_error_msg = sys.exc_info()[1]
def method_wrapper(f):
def wrapper(*args, **kwargs):
return f(*args, **kwargs)
return wraps(f)(wrapper)
__all__ = ['available', 'enable', 'disable', 'enabled']
_orig = {}
# keep track of whether speedups are enabled
enabled = False
def enable():
"""Enable Cython speedups
The shapely.speedups module contains performance enhancements written in C.
They are automaticaly installed when Python has access to a compiler and
GEOS development headers during installation, and are enabled by default.
You can check if speedups are installed with the `available` attribute, and
check if they have been enabled with the `enabled` attribute.
>>> from shapely import speedups
>>> speedups.available
True
>>> speedups.enable()
>>> speedups.enabled
True
"""
if not available:
warnings.warn("shapely.speedups not available", RuntimeWarning)
return
if _orig:
return
_orig['CoordinateSequence.ctypes'] = coords.CoordinateSequence.ctypes
coords.CoordinateSequence.ctypes = property(_speedups.coordseq_ctypes)
_orig['CoordinateSequence.__iter__'] = coords.CoordinateSequence.__iter__
coords.CoordinateSequence.__iter__ = method_wrapper(
_speedups.coordseq_iter)
_orig['geos_linestring_from_py'] = linestring.geos_linestring_from_py
linestring.geos_linestring_from_py = _speedups.geos_linestring_from_py
_orig['geos_linearring_from_py'] = polygon.geos_linearring_from_py
polygon.geos_linearring_from_py = _speedups.geos_linearring_from_py
_orig['affine_transform'] = shapely.affinity.affine_transform
# copy docstring from original function
def affine_transform(geom, matrix):
return _speedups.affine_transform(geom, matrix)
affine_transform.__doc__ = shapely.affinity.affine_transform.__doc__
shapely.affinity.affine_transform = affine_transform
global enabled
enabled = True
def disable():
"""Disable Cython speedups
"""
if not _orig:
return
coords.CoordinateSequence.ctypes = _orig['CoordinateSequence.ctypes']
coords.CoordinateSequence.__iter__ = _orig['CoordinateSequence.__iter__']
linestring.geos_linestring_from_py = _orig['geos_linestring_from_py']
polygon.geos_linearring_from_py = _orig['geos_linearring_from_py']
shapely.affinity.affine_transform = _orig['affine_transform']
_orig.clear()
global enabled
enabled = False
# if cython speedups are available, use them by default
if available:
enable()
|